22天:部署
与缓存的配置系统在21天,Jobeet网站是随时可以部署在生产服务器上。
在22日,我们已经开发出Jobeet在开发机器上,对大多数人来说,这可能意味着你的本地机器;除非你直接开发在生产服务器上,这当然是一个非常糟糕的主意。现在,是时候该网站转移到生产服务器。
现在,我们将看到之前需要做什么准备生产,您可以使用什么样的部署策略,以及所需要的工具对于一个成功的部署。
准备生产服务器
将项目部署到生产环境之前,我们需要确保生产服务器配置正确。你可以重读第一天,我们解释了如何配置web服务器。
在本节中,我们假设您已经安装了web服务器、数据库服务器和PHP 5.2.4或更高版本。
请注意
如果你没有一个SSH访问web服务器,跳过这部分,你需要访问命令行。
服务器配置
首先,您需要检查PHP安装所有需要的扩展和正确配置。第一天,我们将使用check_configuration.php
symfony提供的脚本。ob娱乐下载我们不会在生产服务器上安装symfonyob娱乐下载,下载该文件直接从symfony网站:
http://trac.ob娱乐下载symfony-project.org/browser/branches/1.4/data/bin/check_configuration.php?format=raw
将该文件复制到web根目录并运行它从您的浏览器和从命令行:
php check_configuration.php美元
修复任何致命错误脚本发现并重复这个过程,直到一切都没问题这两个环境。
PHP加速器
对于生产服务器,您可能想要最佳的性能成为可能。安装一个PHP加速器会给你最好的改善你的钱。
请注意
从维基百科:一个PHP加速器通过缓存PHP脚本的编译好的字节码避免的开销在每个请求解析和编译源代码。
APC是一个最受欢迎的一个,很简单的安装:
美元pecl安装APC
根据您的操作系统,你也可以用OS本地包管理器安装它。
请注意
花些时间来学习如何配置APC。
symfob娱乐下载ony库
嵌入symfonyob娱乐下载
symfony的优点之一是,一个项目是独立的。ob娱乐下载项目工作所需的所有文件在主要项目根目录下。你可以移动项目在另一个目录不更改任何设置在symfony项目本身只使用相对路径。ob娱乐下载这意味着在生产服务器上的目录不需要一样的一个在您的开发机器上。
唯一的绝对路径,可能是在被发现配置/ ProjectConfiguration.class.php
文件;但是我们在第一天照顾它。检查它实际上包含了一个相对路径的symfony核心自动装卸机:ob娱乐下载
/ /配置/ ProjectConfiguration.class.phprequire_once目录名(__FILE__)。“/ . . / lib /供应ob娱乐下载商/ symfony / lib /自动装载/ sfCoreAutoload.class.php”;
symfony升级ob娱乐下载
即使一切都是独立的在一个目录中,symfony升级到新版本还是疯狂的容易。ob娱乐下载
你要升级symfony最新小释放,随着我们不断修正ob娱乐下载错误,可能是安全问题。好消息是,所有sy欧宝平台是合法的吗mfony版本保持至少一年,在维修ob娱乐下载期间,我们从来没有添加新功能,即使是最小的一个。所以,总是快速,安全,安全的从一个小版本升级到另一个。
升级symfony一ob娱乐下载样简单的改变的内容lib /供应商/ sob娱乐下载ymfony /
目录中。如果你有安装symfony档案,删除当前文件ob娱乐下载,并将其替换为最新的。
如果你使用Subversion为您的项目,你也可以联系你的项目最新的symfony 1.4标记:ob娱乐下载
美元svn propedit svn: lib /外部供应商/ # symfony hob娱乐下载ttp://svn.symfony-project.com/tags/RELEASE_1_4_3/
升级symfony然ob娱乐下载后简单改变标签symfony的最新版本。
您还可以使用1.4分支在实时修正:
美元svn propedit svn: lib /外部供应商/ # symfony hob娱乐下载ttp://svn.symfony-project.com/branches/1.4/
现在,每当你做一个svn上
,您将拥有最新的symfony 1.4版本。ob娱乐下载
当升级到新版本,建议您总是清除缓存,尤其是在生产环境:
php syob娱乐下载mfony cc美元
提示
如果你也有一个FTP访问生产服务器,你可以模拟ob娱乐下载symfony cc
通过简单地删除所有的文件和目录下缓存/
目录中。
你甚至可以测试一个新的symfony版本没有取代ob娱乐下载现有的一个。如果你只是想测试新版本,并希望能够回滚,在另一个目录(安装symfonyob娱乐下载lib /供应商/ sob娱乐下载ymfony_test
例如),改变的路径ProjectConfiguration
类,清除缓存,你就完成了。可删除的目录一样简单,改变路径ProjectConfiguration
。
调整配置
数据库配置
大多数时候,有不同的证书比当地的生产数据库。由于symfony的环境中,ob娱乐下载很容易有不同的生产数据库的配置:
美元php ob娱乐下载symfony的配置:数据库mysql:主机= localhost; dbname = prod_dbname prod_user prod_pass
你也可以编辑databases.yml
直接配置文件。
资产
Jobeet使用插件嵌入资产,symfony创建相应的符号链接ob娱乐下载web /
目录中。的插件:发布资产
任务更新或创建他们如果你没有安装插件插件:安装
任务:
美元php ob娱乐下载symfony插件:发布资产
自定义错误页面
要生产之前,最好是定制默认symfony页面|默认symfony页面,如“页面未找到”页面,或默认异常页面。ob娱乐下载
我们已经配置的错误页面YAML
通过创建一个格式在白天15日error.yaml.php
和一个exception.yaml.php
文件配置/错误/
目录中。的error.yaml.php
文件使用symfony的ob娱乐下载刺激
环境,而exception.yaml.php
用于dev
环境。
因此,自定义默认的异常页面HTML格式,创建两个文件:配置/错误/ error.html.php
和配置/错误/ exception.html.php
。
的404年
可以定制页面(页面不存在)通过改变error_404_module
和error_404_action
设置:
#应用/前端/ config /设置。yml: .actions: error_404_module:默认error_404_action:那么error404
自定义目录结构
为了更好的代码结构和规范,symfony与预定义的名称有一个默认的目录结构。ob娱乐下载但有时,你没有选择,只能改变结构,因为一些外部约束。
配置目录名可以在完成配置/ ProjectConfiguration.class.php
类。
Web根目录
一些web主机上,你不能改变web根目录的名称。假设你的网络主机,因此得名public_html /
而不是web /
:
/ /配置/ ProjectConfiguration.class.php类ProjectConfiguration扩展sfProjectConfiguration{公共函数设置(){这个美元- >setWebDir(这个美元- >getRootDir()。' / public_html ');}}
的setWebDir ()
方法使用web根目录的绝对路径。如果你也把这个目录在其他地方,不要忘记编辑控制器脚本检查路径配置/ ProjectConfiguration.class.php
文件仍然有效:
require_once(目录名(__FILE__)。“/ . . / config / ProjectConfiguration.class.php”);
缓存和日志目录
symfob娱乐下载ony框架只写在两个目录:缓存/
和日志/
。出于安全原因,一些web主机不设置在主目录写权限。如果是这种情况,你可以移动这些目录在文件系统:
/ /配置/ ProjectConfiguration.class.php类ProjectConfiguration扩展sfProjectConfiguration{公共函数设置(){这个美元- >setCacheDir(“/ tmpob娱乐下载 / symfony_cache”);这个美元- >setLogDir(“/ tmpob娱乐下载 / symfony_logs”);}}
至于setWebDir ()
方法,setCacheDir ()
和setLogDir ()
绝对路径缓存/
和日志/
目录分别。
定制symfony核心对ob娱乐下载象(即工厂)
在16天,我们聊了一会symfony的工厂。ob娱乐下载能够定制工厂意味着您可以使用一个自定义类symfony核心对象而不是默认的一个。ob娱乐下载您还可以更改默认行为类通过改变参数发送给他们。
让我们看看一些经典定制你可能想做的事。
饼干的名字
处理用户会话,symfony使用cookie。ob娱乐下载这个饼干的缺省名称ob娱乐下载
,可以改变factories.yml
。下所有
键,添加以下配置改变cookie的名称jobeet
:
#应用/前端/ config /工厂。yml存储:类:sfSessionStorage参数:session_name: jobeet
会话存储
默认的会话存储类sfSessionStorage
。它使用文件系统来存储会话信息。如果你有几个web服务器,你想将会话存储在一个中央位置,就像一个数据库表:
#应用/前端/ config /工厂。yml存储:类:sfPDOSessionStorage参数:session_name: jobeet db_table:会话数据库:推动db_id_col: id db_data_col:数据db_time_col:时间
会话超时
默认情况下,如果用户会话超时1800年
秒。这可以通过编辑改变用户
条目:
#应用/前端/ config /工厂。yml用户:类:myUser参数:超时:1800
日志记录
默认情况下,没有登录刺激
环境因为logger类名sfNoLogger
:
#应用/前端/ config /工厂。yml刺激:记录器类:sfNoLogger参数:水平:呃伐木工:~
例如可以启用日志记录文件系统上通过改变logger类名sfFileLogger
:
#应用/前端/ config /工厂。yml logger类:sfFileLogger参数:级别:呃伐木工:~文件:% SF_LOG_DIR % / % SF_APP % _ % SF_ENVIRONMENT % . log
请注意
在factories.yml
配置文件,% XXX %
字符串替换为相应的值sfConfig
对象。所以,% SF_APP %
相当于在一个配置文件sfConfig: get (“sf_app”)
在PHP代码。这个符号也可以使用的app.yml
配置文件。它是非常有用的,当你需要引用路径在一个没有硬编码的配置文件路径(SF_ROOT_DIR
,SF_WEB_DIR
,……)。
部署
部署什么?
Jobeet网站部署到生产服务器时,我们必须小心不要部署不需要的文件或覆盖文件上传我们的用户,公司标志。
在symfob娱乐下载ony项目中,有三个目录排除转让:缓存/
,日志/
,web /上传/
。一切可以转移。
出于安全原因,你也不想把“非生产”前端控制器,如frontend_dev.php
,backend_dev.php
和frontend_cache.php
脚本。
部署策略
在本节中,我们将假设您已经完全控制生产服务器(年代)。如果你只能访问服务器和FTP帐户,唯一可能的部署解决方案是将所有文件每次部署。
部署你的网站最简单的方法是使用内置的项目:部署
的任务。它使用SSH
和rsync
连接和文件从一台计算机转移到另一个。
服务器的项目:部署
任务可以配置配置/ properties.ini
配置文件:
#配置/ properties.ini(生产]主机=www.jobeet.org港口=22用户=jobeetdir=/var/www/jobeet/
部署到新配置生产
服务器,使用项目:部署
任务:
美元php ob娱乐下载symfony项目:生产部署
请注意
在运行之前项目:部署
第一次任务,您需要手动连接到服务器添加已知主机文件的关键。
提示
如果命令没有按预期工作,你可以通过- t
看到的实时输出选项rsync
命令。
如果你运行这个命令,symfony将只模拟传输。ob娱乐下载实际部署的网站,添加——去
选择:
美元php ob娱乐下载symfony项目:部署生产——走
请注意
即使你可以提供SSH密码的properties.ini
文件,最好是使用允许无密码的SSH密钥配置您的服务器连接。
默认情况下,symfonob娱乐下载y不会转让目录前面我们已经讲过,也没有将转移dev
前端控制器脚本。这是因为项目:部署
排除文件和目录的配置任务配置/ rsync_exclude.txt
文件:
#配置/ rsync_exclude。txt . svn / web /上传/ / * /日志/ * / * /缓存web / * _dev.php
对于Jobeet,我们需要添加的frontend_cache.php
文件:
#配置/ rsync_exclude。txt . svn / web /上传/ / * /日志/ * / * /缓存web / * _dev.php/web/frontend_cache.php
提示
您还可以创建一个配置/ rsync_include.txt
文件来迫使一些文件或目录被转移。
即使项目:部署
任务是非常灵活的,您可能希望进一步定制它。部署可以非常不同的基于服务器的配置和拓扑,不要犹豫来扩展默认的任务。
每次你将网站部署到生产,别忘了至少明确的生产服务器上的配置缓存:
php syob娱乐下载mfony cc——美元=配置类型
如果你已经改变了一些路线,您还需要明确的路由缓存:
php syob娱乐下载mfony cc——美元type =路由
请注意
清理缓存有选择地允许保持缓存的某些部分,如模板缓存。
最终的想法
项目的部署是symfony的最后一步开发生命周期。ob娱乐下载这并不意味着你做的。这是恰恰相反。一个网站有一个生活本身。你可能要修正错误,你也会想添加新特性。但由于symfony结构和工具,提升ob娱乐下载你的网站很简单,快速,安全。
明天,将Jobeet教程的最后一天。它将时间退后一步,看看你学到了什么在Jobeet 23天。
这项工作在Creative Commons许可Attribution-Share都3.0 Unported许可执照。