第三章:安装和配置symfony2

这一章的目的是教你如何在symfony上运行一个web应用程序。很幸运,symfony提供“发行版”,包含供开发者借鉴的示例代码。 如果你想了解如何创建新的Symfony2项目,并对代码进行版本管理,请阅读: 代码版本管理

安装symfony2发行版

首先,检查你是否已经安装和配置了PHP Web服务器(例如Apache)。关于更多的symfony2配置要求,你可以查看 requirements reference

Symfony2有不同的“发行版”供你选择,但它们都包含了:基于Symfony2框架的应用程序,一些有用的第三方代码包,推荐的文件目录结构以及默认的配置。下载一个Symfony2的发行版,相当于得到了一个可以立即运行的代码骨架,有了这个基础,你可以快速开发你自己的应用。 你可以访问Symfony2的下载页面来获得Symfony2的发行版: http://symfony.com/download 。总共有两种方式下载symfony: 第一种 composer composer 是一个php的依赖管理库,你能够使用它来下载symfony2发行版。 首先 下载composer 到计算机的任意位置,如果安装了curl,也很一样的简单:

如果你的电脑没有准备好composer,当你运行以上命令的时候会有一些提示,你遵循这些提示去工作就可以正常运行composer了。

composer是一个可执行的phar文件,你能够使用它去下载发行版:

更快的下载vendor所有文件,我们需要再composer命令行中尾部加入 –prefer-dist 配置

这个命令可能需要几分钟才能从composer中下载所需要的symfony发行版。当他完成下载后,你应该看到一个目录,他应该是这个样子:

第二种 直接下载 在官网直接下载,你有两种选择:

  • 下载 .tgz 或者 .zip 后缀的文件;
  • 下载没有vendors的版本。如果你日后使用composer管理即可在使用时下载更多的第三方库和很多的bundles,你应该下载没有vendors“without vendors”。

把下载下来的压缩包,解压到你本地的站点根目录,并打开它。 如果使用UNIX命令行,你可以输入以下命令(注意将 ### 替换为实际的文件名):

如果你下载的是 “ 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包管理系统)

一定要确保你下载的composer.phar 是和composer.json在一个目录下(他默认在symfony项目的根目录下)

步骤二:安装 vendors

这个命令是去下载vendor必须的库–包括symfony自身库-也在这个目录下。

如果你没有curl安装,你可以手动到这个 http://getcomposer.org/installer 网址下载。拷贝到你的项目目录下并运行:

当运行 php composer.phar install 和 php composer.phar update时,Composer需要执行install/update 命令去清楚缓存和安装资源。默认这些资源将被复制到你的web目录。 如果你系统支持symlinks,而你只需要创建symlinks,不用复制你的symfony资源。去创建symlinks,需要在composer.json文件中的extra节点下加入symfony-assets-install并给他赋值为symlink:

当symfony-assets-install相对应的是symlink时,这个命令将生成相对应的链接。

配置和安装

这时,所有的最新的第三方库都在vendor/ 目录下。你还需要默认的应用程序设置在 app/ 里和一些简单的代码在 src/ 目录下。 symfony2自带了一个服务器配置检查工具去帮助你检查web服务和php的配置是否符合symfony的要求。你只要输入以下链接:

如果你有任何的问题,现在纠正它然后再继续。

设置权限

一个常见的问题是,Web服务器和你做开发使用的用户帐户都需要 app/cache 和 app/logs 目录的写权限。如果你使用的是UNIX系统,而你的Web服务器用户和开发帐户不是同一个,你可以运行下面的命令来确保有正确的文件权限。

 

1. 如果你的系统支持通过 chmod +a 来配置ACL(访问控制)

多数系统都允许你使用 chmod +a 命令,如果系统报错,你可以尝试方法2。它使用一个命令来确定您的web服务器用户并把它作为HTTPDUSER:

 

2. 不支持 chmod +a 的系统

有的系统不支持 chmod +a ,但有 setfacl 工具可以用来完成同样的任务。你可能需要在相应的分区 启用文件系统ACL ,并安装setfacl工具(Ubuntu系统即是这个情况),然后运行如下命令:

如果这不起作用,尝试添加- n选项。

 

3. 没有ACL

如果你没法启用ACL,你也可以通过修改umask,使cache和logs目录有用户组或全局可写的权限。即,在 app/console , web/app.php 和 web/app_dev.php 文件里增加以下语句:

更推荐使用ACL,因为修改umask不是线程安全的。

 

4.使用相同的用户

在开发环境中,这是一种常见的设置,unix用户和web服务用户使用同一个账号,以避免进行权限设置时出现问题。可以通过编辑你的web服务配置(例如常见的Apache httpd.conf和apache2.conf)和 设置与他一样的用户(例如Apache更新用户和组)。

一切都设置好后,点击“go to the welcome page” 去请求“真正” 的symfony2页面:

到目前为止祝贺你成功配置symfony2并看到了欢迎页面!
welcome

你想有一个和上面一样的链接或者短连接你应该把你的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

忽略 vendor/ 目录

如果你使用的是不包含第三方代码的发行版,或者你了解如何使用Symfony2自带的脚本通过Git来管理代码依赖,你可以在 .gitignore 文件里忽略 vendor/ 目录:

这样,你的vendor目录不会被提交到Git。其他人如果需要参与项目,他只需要检出相对少很多的文件,并通过 php bin/vendors install 命令来下载必须的第三方代码。

发表评论