发布于 2015-09-08 16:04:16 | 323 次阅读 | 评论: 0 | 来源: 网络整理
这一章的目的是教你如何在symfony上运行一个web应用程序。很幸运,symfony提供“发行版”,包含供开发者借鉴的示例代码。 如果你想了解如何创建新的Symfony2项目,并对代码进行版本管理,请阅读: 代码版本管理 。
首先,检查你是否已经安装和配置了PHP Web服务器(例如Apache)。关于更多的symfony2配置要求,你可以查看 requirements reference
Symfony2 有不同的“发行版”供你选择,但它们都包含了:基于Symfony2框架的应用程序,一些有用的第三方代码包,推荐的文件目录结构以及默认的配置。下载一 个Symfony2的发行版,相当于得到了一个可以立即运行的代码骨架,有了这个基础,你可以快速开发你自己的应用。 你可以访问Symfony2的下载页面来获得Symfony2的发行版: http://symfony.com/download 。总共有两种方式下载symfony: 第一种 composer composer 是一个php的依赖管理库,你能够使用它来下载symfony2发行版。 首先 下载composer 到计算机的任意位置,如果安装了curl,也很一样的简单:
1
|
$ curl -s https://getcomposer.org/installer | php
|
如果你的电脑没有准备好composer,当你运行以上命令的时候会有一些提示,你遵循这些提示去工作就可以正常运行composer了。
composer是一个可执行的phar文件,你能够使用它去下载发行版:
1
|
$ php composer.phar create-project symfony/framework-standard-edition /path/to/webroot/Symfony '~2.6'
|
更快的下载vendor所有文件,我们需要再composer命令行中尾部加入 –prefer-dist 配置
这个命令可能需要几分钟才能从composer中下载所需要的symfony发行版。当他完成下载后,你应该看到一个目录,他应该是这个样子:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
path/to/webroot/ <- your web server directory (sometimes named htdocs or public)
Symfony/ <- the new directory
app/
cache/
config/
logs/
src/
...
vendor/
...
web/
app.php
...
|
第二种 直接下载 在官网直接下载,你有两种选择:
把下载下来的压缩包,解压到你本地的站点根目录,并打开它。 如果使用UNIX命令行,你可以输入以下命令(注意将 ### 替换为实际的文件名):
1
2
3
4
5
|
# for .tgz file
$ tar zxvf Symfony_Standard_Vendors_2.6.###.tgz
# for a .zip file
$ unzip Symfony_Standard_Vendors_2.6.###.zip
|
如果你下载的是 “ without vendors”,你需要阅读下面一个章节。
你可以很容易的覆盖这个默认的目录结构。请看如何覆盖Symfony的默认目录结构。
在symfony2应用程序的symfony/web 目录处理所有的公共文件和前端控制器文件的请求。 所以你的web服务或者虚拟空间应该指定到web目录为更目录,也就是以http://localhost/Symfony/web/,为你应用程序的URLs
你不去碰案例中的根目录那么所有的URLs开始都是http://localhost/Symfony/web/
升 级vendors 这时,你已经下载了一个全功能的symfony项目区开发你自己的应用程序。一个好的symfony项目需要你去依赖大量的外部和第三方库。在这里你需要 用Composer去下载vendor目录下的一些有用库。 你在下载symfony的vendor的依赖时可以升级或者不去升级这些为最新版本。但是,升级这些vendors先的库总是安全的,也可以保证你的程序 需要。
步骤一 :请求 composer (伟大的php包管理系统)
1
|
$ curl -s http://getcomposer.org/installer | php
|
一定要确保你下载的composer.phar 是和composer.json在一个目录下(他默认在symfony项目的根目录下)
步骤二:安装 vendors
1
|
$ php composer.phar install
|
这个命令是去下载vendor必须的库–包括symfony自身库-也在这个目录下。
如果你没有curl安装,你可以手动到这个 http://getcomposer.org/installer 网址下载。拷贝到你的项目目录下并运行:
12 $ php installer$ php composer.phar install
当 运行 php composer.phar install 和 php composer.phar update时,Composer需要执行install/update 命令去清楚缓存和安装资源。默认这些资源将被复制到你的web目录。 如果你系统支持symlinks,而你只需要创建symlinks,不用复制你的symfony资源。去创建symlinks,需要在 composer.json文件中的extra节点下加入symfony-assets-install并给他赋值为symlink:
12345 "extra": {"symfony-app-dir": "app","symfony-web-dir": "web","symfony-assets-install": "symlink"}当symfony-assets-install相对应的是symlink时,这个命令将生成相对应的链接。
这 时,所有的最新的第三方库都在vendor/ 目录下。你还需要默认的应用程序设置在 app/ 里和一些简单的代码在 src/ 目录下。 symfony2自带了一个服务器配置检查工具去帮助你检查web服务和php的配置是否符合symfony的要求。你只要输入以下链接:
1
|
http://localhost/config.php
|
如果你有任何的问题,现在纠正它然后再继续。
设置权限
一个常见的问题是,Web服务器和你做开发使用的用户帐户都需要 app/cache 和 app/logs 目录的写权限。如果你使用的是UNIX系统,而你的Web服务器用户和开发帐户不是同一个,你可以运行下面的命令来确保有正确的文件权限。
1. 如果你的系统支持通过 chmod +a 来配置ACL(访问控制)
多数系统都允许你使用 chmod +a 命令,如果系统报错,你可以尝试方法2。它使用一个命令来确定您的web服务器用户并把它作为HTTPDUSER:
123456 $ rm -rf app/cache/*$ rm -rf app/logs/*$ HTTPDUSER=`ps aux | grep -E '[a]pache|[h]ttpd|[_]www|[w]ww-data|[n]ginx' | grep -v root | head -1 | cut -d -f1`$ sudo chmod +a "$HTTPDUSER allow delete,write,append,file_inherit,directory_inherit" app/cache app/logs$ sudo chmod +a "`whoami` allow delete,write,append,file_inherit,directory_inherit" app/cache app/logs2. 不支持 chmod +a 的系统
有的系统不支持 chmod +a ,但有 setfacl 工具可以用来完成同样的任务。你可能需要在相应的分区 启用文件系统ACL ,并安装setfacl工具(Ubuntu系统即是这个情况),然后运行如下命令:
123 $ HTTPDUSER=`ps aux | grep -E '[a]pache|[h]ttpd|[_]www|[w]ww-data|[n]ginx' | grep -v root | head -1 | cut -d -f1`$ sudo setfacl -R -m u:"$HTTPDUSER":rwX -m u:`whoami`:rwX app/cache app/logs$ sudo setfacl -dR -m u:"$HTTPDUSER":rwX -m u:`whoami`:rwX app/cache app/logs如果这不起作用,尝试添加- n选项。
3. 没有ACL
如果你没法启用ACL,你也可以通过修改umask,使cache和logs目录有用户组或全局可写的权限。即,在 app/console , web/app.php 和 web/app_dev.php 文件里增加以下语句:
12345 umask(0002); // This will let the permissions be 0775// orumask(0000); // This will let the permissions be 0777更推荐使用ACL,因为修改umask不是线程安全的。
4.使用相同的用户
在 开发环境中,这是一种常见的设置,unix用户和web服务用户使用同一个账号,以避免进行权限设置时出现问题。可以通过编辑你的web服务配置(例如常 见的Apache httpd.conf和apache2.conf)和 设置与他一样的用户(例如Apache更新用户和组)。
一切都设置好后,点击“go to the welcome page” 去请求“真正” 的symfony2页面:
1
|
http://localhost/app_dev.php/
|
你想有一个和上面一样的链接或者短连接你应该把你的web服务或者虚拟目录指定到Symfony/web目录下。虽然这不是必须要这样设计,但是我们推荐你的应用程序在所有的系统运行,配置文件都不应该让不该看的人看到。如何配置你的web服务器根目录,请参考“配置一个web服务”或者查阅你使用的web服务的官方文档:”Apache | Nginx“。
开始开发
现在你已经有了一个全功能的Symfony2应用程序,你可以开始开发了!你们的发行版里包含一些示例代码-你可以阅读 README.rst 文件来确认哪些代码被包含在你所使用的发行版里,并了解如何在不需要的时候移除它们。
如果你刚接触Symfony,” Creating Pages in Symfony2 “将向你介绍如何在你新建的Web应用里基于Symfony来创建页面,修改配置等等。
一定要看一看 Cookbook 章节,它包含了各种各样的symfony问题和解决方法。
如果你想删除发行版中的一些实例代码,看一看cookbook 文章”怎样移除AcmeDemoBundle“
如果你打算用 Git 或者 Subversion 来管理你的代码,你可以照常操作,并将Symfony2的标准发行版作为你项目的起点。
要了解如何更好地用Git来管理你的Symfony项目,请阅读: How to Create and store a Symfony2 Project in git 。
如果你使用的是不包含第三方代码的发行版,或者你了解如何使用Symfony2自带的脚本通过Git来管理代码依赖,你可以在 .gitignore 文件里忽略 vendor/ 目录:
1
|
/vendor/
|
这样,你的vendor目录不会被提交到Git。其他人如果需要参与项目,他只需要检出相对少很多的文件,并通过 php bin/vendors install 命令来下载必须的第三方代码。