`
helpbs
  • 浏览: 1164811 次
文章分类
社区版块
存档分类
最新评论

第一天--开始一个工程

 
阅读更多
第一天--开始一个工程

挑战

我 们将要开始的Symfony日历是一个24个教程的集合,是在12月1日到圣诞节之间一天一天发布的。确实如此,每一天,包括周末,而一个新的教程也会马 上发布。每一个教程都是在一小时以内,从中我们可以看到正在发展中的web 2.0程序的开发。到圣诞节时,最终的程序将会放在网上,而源码也会开源。这个程序将会是可用的,有用的,有趣的。

24次小于一小时的时 间相当于不到一天的时间,而这正是我们认为一个开发者学习Symfony所需要的时间。每一天都会有新的特性加入到程序中,而我们将会充分利用这些开发来 展示Symfony的功能,以及在Symfony web开发中的一些有益的实践。每一天,我们都会认识到使用Symfony开发一个web程序是多么的快速与高效,而我们也将会了解更多的内容。

我们认为这些挑战已经足够了,而且因为我们是懒人,我们对于21天的冬天时间并没有安排。社区最需要的特性将会添加到程序当中,无需准备,而我们将会使其工作。

工程

我 们将要设计的程序是一个琐碎的"显示与通知"程序,就像一份要做事情的列表,一个电话本,或是一个书店。但是我们希望在原始的工程上使用Symfony, 而且工程有用,并且具有许多特性和一个合适的尺寸。这个目标就是要证明Symfony可以用于在复杂的条件下,使用样式与少量的工作来开发专业的程序。

我 们也希望有许多来实际使用这个程序,从而可以显示Symfony站点也可以支持一个重要的负载。这也就是为什么这个程序需要提供实际的服务,回答存在的需 求,或是创建一个新版本的原因。网站的运行是一个实在的压力测试,这就意味着我们需要你,以及更多的读者来使用这个站点并且在实际的生活讨论他,从而可以 检测他可以支持多少的访问者。

工程的内容对于其他天来说是保密的。今天我们还有许多工作要做,而不会描述一个完整的web 2.0程序。这些为我们提供了足够的时间来考虑新的特性。然而,我们需要一个名字,所以我们就称这个工程为askeet。

今天的内容

今天的目标就是要在一个网络浏览器中显示一个程序页面,并且要设置一个专业的开发环境。这包括安装Symfony,创建程序,配置网络服务器,以及设置源码版本控制系统。

这对于已经完成了前面教程的读者来是很容易的,而对于其他人来说也并不难。而所有的人都会学到一些新的东西。

我们认为你会使用一个安装有Apache,MySQL与PHP5的类Unix系统。如果你运行一个Windows系统,也并不痛苦:他也可以工作的很好,我们只需要在cmd提示符下输入一些命令。

安装Symfony

安装Symfony最简单的方法就是使用PEAR包。然而,为了可以使用频道--以及访问Symfony频道--我们需要更新到PEAR 1.4.0或是更高版本:

$ pear upgrade PEAR

现在我们可以添加Symfony频道:

$ pear channel-discover pear.symfony-project.com

现在我们就准备好安装Symfony的最新的稳定版本以及相应的依赖包了:
$ pear install symfony/symfony

可以通过使用命令行来检测Symfony版本以确定Symfony是否已经成功安装:
$ symfony -V

如 果我们想知道这个新的命令行工具可以为我们做哪些事情,我们可以输入symfony -T来列出所有可用的选项。我们也许希望阅读Running symfony一节来了解如何由一个tgz文档或是svn库来安装Symfony。在symfony wiki中也有一个社区贡献的非PEAR安装的版本。

设置工程

在Symfony 中,共享相同数据模型的程序(application)组织在工程(project)中。对于askeet工程,我们已经他有一个前端也一个后端:这就成 为两个程序。工程是程序的外壳,他需要首先被创建。为要完成这要的工作,我们所需要的就是一个目录以及一个symfony init-project命令行:

$ mkdir /home/sfprojects/askeet
$ cd /home/sfprojects/askeet
$ symfony init-project askeet

现在我们使用symfony init-app命令来创建前端程序:

$ symfony init-app frontend

Wow,实在是太快了。

配置网络服务

配置网络服务器

现 在我们需要改变我们的Apache配置从而可以访问新的程序。在一个专业的环境下,更好的方法是将新的程序设置为一个虚拟主机,而这也正是我们这里要描述 的。然而,如果我们更喜欢将其添加为一个alias,我们可以查看web server configuration一节来进行配置。

打开Apache/conf/目录下的httpd.conf文件,并且在末尾添加下面的内容:
<VirtualHost *:80>
ServerName askeet
DocumentRoot "/home/sfprojects/askeet/web"
DirectoryIndex index.php
Alias /sf /usr/local/lib/php/data/symfony/web/sf

<Directory "/home/sfprojects/askeet/web">
AllowOverride All
</Directory>
</VirtualHost>

/sf指向了我们的PEAR数据目录中的Symfony目录。要确定这个目录,我们可以输入pear config-show命令。Symfony程序需要访问这些目录来得到一些图片以及JavaScrit文件,从而可以正确的运行web调试工具栏以及AJAX帮助者。

在Windows中,我们可以用下面的命令来替换Alias:

Alias /sf "C:/php/pear/data/symfony/web/sf"

声明域名

askeet域名需要声明为本地域名。

如果我们运行一个Linux系统,那么已经在/etc/hosts/文件中完成了这样的工作。如果我们运行Windows XP,那么这个文件位于C:/WINDOWS/system32/drivers/etc/目录下。

添加下需的行:
127.0.0.1 askeet

如果我们不希望设置一个新的主机,我们需要在我们的网站服务器上添加一个在另一个端口上的Listen语句。这就允许我们使用本地域名。

测试新配置

重启Apache服务器,来检测我们可以访问我们的新程序:

http://askeet

恭喜

Symfony 可以使用mod_rewrite模块来移除URL中的/index.php/部分。如果我们不想使用他或者是我们的服务器并没有提供相应的功能,我们可以 移除位于web/目录下的.htaccess文件。如果我们的Apache版本并没有使用mod_rewrite来进行编译,检查我们是否安装了 mod_rewrite DSO,并且在我们的httpd.conf文件中有下面几行:

AddModule mod_rewrite.c
LoadModule rewrite_module modules/mod_rewrite.so

我们可以在Links and the Routing System一节中了解更多内容。

我们也应试着在开发环境下访问程序。我们可以输入面的URL:

http://askeet/frontend_dev.php/

此时web调试工具栏应出现在右上角,包括确认我们的Alias sf/配置正确的小图标。

web调试工具栏

如果我们在Windows环境下运行IIS服务,那么配置会有一些小小的不同。我们可以在related tutorial中查找到配置方法。

Subversion

懒 人的一条原则就是不必担心打乱现在的代码。因为我们希望快速的工作,我们希望如果对我们的修改不满意可以恢复到以前的一个版本,我们希望多个人同时在一个 工程上工作,而我们还希望你可以访问程序的每一天的版本,我们将会使用源码版本系统。因为这个原因,我们会使用Subversion。现在假设你已经安装 了一个Subversion服务器或是可以访问一个Subversion服务器。

首先,为askeet工程创建一个新的仓库:

$ svnadmin create $SVNREP_DIR/askeet
$ svn mkdir -m "layout creation" file:///$SVNREP_DIR/ask/trunk file:///$SVNREP_DIR/askeet/tags file:///$SVNREP_DIR/askeet/branches

接下来,我们需要做第一次导入,忽略cache/与log/临时文件:

$ cd /home/sfprojects/askeet
$ rm -rf cache/*
$ rm -rf log/*
$ svn import -m "initial import " . file:///$SVNREP_DIR/askeet/trunk

现在删除原始的程序目录,而使用一个检出的SVN版本:

$ cd /home/sfprojects
$ mv askeet askeet.origin
$ svn co file://$SVNDIR/askeet/trunk askeet/
$ ls askeet/

$ rm -rf askeet.origin

现在还有一件事情需要配置。如果我们向代码仓库提交我们的工作目录,我们也许会拷贝一些我们并不希望的文件,例如位于我们工程的cache与log目录中的内容。所以我们需要为这个工程向SVN设置一个忽略列表:

$ cd /home/sfprojects/askeet
$ svn propedit svn:ignore cache

这些就会启动为SVN所配置的默认的文本编辑器。添加cache的子目录,这样当提交时SVN就会忽略这些内容:
*

保存退出,我们就完成了设置工作。

对log/目录重复这样的过程:

$ svn propedit svn:ignore log

然后只输入:*

现在,确保将cache与log目录的写权限设置回合适的级别,这样我们的web服务器可以向其中写入。在命令行输入下面命令:

$ chmod 777 cache
$ chmod 777 log

如果我们希望了解更多的源码版本控制的内容,我们可以查阅project creation chapter一节。

明天见

好了,现在已经到1小时了。我们谈论了许多,但是却并没有为Symfony作任何事情。我们看一下明天的Symfony日程会涉及到哪些内容:

程序可以做什么
构建数据模型并且生成对象关系映射
搭建一个模型

原文地址 http://www.symfony-project.com
分享到:
评论

相关推荐

    Reversing:逆向工程揭密

    第一次使用逆向工程工具也是在2001年,当时从网上下载了Numega SoftICE,具体哪个版本已经记不清了,在家里的旧电脑上折腾了好几天,直到系统崩溃才罢手。 之后呢,只是零零星星地看过一些相关的资料。因此,当初...

    The_Ten_Day:安卓开发初级学习的十个简单小demo的总结。从2015-1-30开始,到20150-2-8结束

    大体内容对话框大全猜鸡蛋游戏银行一款机2048游戏第一天 安卓对话框demo原文件名称 Dialog_Demo_1-30 --&gt; 工程文件名称 DialogDemo对话框显示有 退出对话框,单选对话框,列表对话框,多选对话框,编辑对话框(待...

    网络工程师考前冲刺100题

    通常面授的课程只有5天时间,在5天之内将该考试涉及到的主要知识点全部讲完,同时要让学员掌握重点、难点和疑点,培训强度之大可想而知,因此,整理关键知识点是我日常的教学任务之一。同时,在培训过程中,纵观目前...

    XX大厦室内装饰工程施工组织设计.doc

    (4)质量标准高:本工程以争创建筑行业最高奖--鲁班奖为质量目标,在管理上坚持技术先行,质量第一的原则,在内装饰工程施工开始前,制定相应的质量计划和创优计划,将创优目标分解到每一个分部分项工程,确保质量目标...

    sei-project-1:一个基于JavaScript的基于网络的游戏。 我为大会沉浸式软件工程设计的第一个个人项目

    :shark: Pac-Shark-一个JavaScript游戏 在八天内开发了一个基于JavaScript浏览器的游戏。 我的第一个个人项目是大会的沉浸式软件工程。 由开发: Penny Jungreis- 部署方式 我将此游戏部署在GitHub Pages上,可以在...

    03-JavaScript-高级-第5天.zip

    在这个系列的视频中,我们将从最基础的HTML、CSS和JavaScript开始,并逐步介绍各种前端开发的核心概念和技术。我们还将学习如何使用流行的前端框架和工具,如React、Vue.js和Webpack等,来构建功能强大、响应迅速的...

    03-JavaScript-高级-第4天.zip

    在这个系列的视频中,我们将从最基础的HTML、CSS和JavaScript开始,并逐步介绍各种前端开发的核心概念和技术。我们还将学习如何使用流行的前端框架和工具,如React、Vue.js和Webpack等,来构建功能强大、响应迅速的...

    03-JavaScript-高级-第2天.zip

    在这个系列的视频中,我们将从最基础的HTML、CSS和JavaScript开始,并逐步介绍各种前端开发的核心概念和技术。我们还将学习如何使用流行的前端框架和工具,如React、Vue.js和Webpack等,来构建功能强大、响应迅速的...

    03-JavaScript-高级-第1天.zip

    在这个系列的视频中,我们将从最基础的HTML、CSS和JavaScript开始,并逐步介绍各种前端开发的核心概念和技术。我们还将学习如何使用流行的前端框架和工具,如React、Vue.js和Webpack等,来构建功能强大、响应迅速的...

    03-JavaScript-高级-第3天.zip

    在这个系列的视频中,我们将从最基础的HTML、CSS和JavaScript开始,并逐步介绍各种前端开发的核心概念和技术。我们还将学习如何使用流行的前端框架和工具,如React、Vue.js和Webpack等,来构建功能强大、响应迅速的...

    Java课程设计:动物换位+使用文档+源代码+答辩ppt+文档图片.zip

    第一、二天:完成所有课本代码,开发文档开始写,汇报PPT开始制作。 第三天:完成开发文档,完成代码调试,完成测试文档,开始编写使用文档。将资料整合,给ppt制作参考。 第四天:完成ppt,完成程序发布,以及各个...

    Qt Creator 的安装和hello world 程序+其他程序的编写--不是一般的好

    程序开始出现一个对话框,按下按钮后便能进入主窗口,如果直 接关闭这个对话框,便不能进入主窗口,整个程序也将退出。当进入主窗口后, 我们按下按钮,会弹出一个对话框,无论如何关闭这个对话框,都会回到主窗口。...

    01-JavaScript-第5天{JS基础语法}.zip

    在这个系列的视频中,我们将从最基础的HTML、CSS和JavaScript开始,并逐步介绍各种前端开发的核心概念和技术。我们还将学习如何使用流行的前端框架和工具,如React、Vue.js和Webpack等,来构建功能强大、响应迅速的...

    01-JavaScript-第3天{JS基础语法}.zip

    在这个系列的视频中,我们将从最基础的HTML、CSS和JavaScript开始,并逐步介绍各种前端开发的核心概念和技术。我们还将学习如何使用流行的前端框架和工具,如React、Vue.js和Webpack等,来构建功能强大、响应迅速的...

    01-JavaScript-第4天{JS基础语法}.zip

    在这个系列的视频中,我们将从最基础的HTML、CSS和JavaScript开始,并逐步介绍各种前端开发的核心概念和技术。我们还将学习如何使用流行的前端框架和工具,如React、Vue.js和Webpack等,来构建功能强大、响应迅速的...

    01-JavaScript-第2天{JS基础语法}.zip

    在这个系列的视频中,我们将从最基础的HTML、CSS和JavaScript开始,并逐步介绍各种前端开发的核心概念和技术。我们还将学习如何使用流行的前端框架和工具,如React、Vue.js和Webpack等,来构建功能强大、响应迅速的...

    程序员为什么还要刷题-advent-of-haskell-dd:Haskell出现的第9天-外延设计

    作为一个充满激情的函数式程序员,我能够更清楚地体验到这个证据,但我觉得大多数人不尊重也不重视这些模式。 我越来越关注程序的正确性和规范,以及有哪些工具/方法可以帮助人们构建可靠/正确的软件。 其中,我最近...

    软件秘笈-设计模式那点事.pdf

    每一种都以一个生活故事开始,然后是模式定义、模式分析、模式实现、设计原则和使用场合。模式实现通过Eclipse中的Java工程展开,采用软件编程诠释设计模式故事中的情节和操作,非常有趣。在这个基础上,总结该软件...

Global site tag (gtag.js) - Google Analytics