22天:转移到生产
以前在symfonyob娱乐下载
昨天,我们添加了一个后台使用。所以一切都准备好了为应用程序实际运行和在互联网上发布(顺便说一下,它是已经在线,试着浏览www.askeet.com如果你没有这样做)。这是完美的时刻关注技术参与同步的两个服务器,因为您开发使用在您的计算机上,可能会在另一个服务器主机,连接到互联网。
同步
良好的实践
有很多方法可以为一个网站同步两个环境。基本可以实现文件传输的FTP连接,但是这个解决方案有两个主要缺点。首先,它是不安全的,清晰的在互联网上的数据流传输,可以拦截。第二,发送项目根目录FTP第一传输很好,但是当你必须上传更新您的应用程序,只有少数文件改变了,这不是一个良好的和快速的方法。要么你再转移整个项目,可以长时间或你浏览目录,你知道一些文件改变了,只和转让的不同的修改日期。这是一个长期的工作,并且容易出错。此外,该网站可以不可用或车期间的转移。
symfony支持的解决方案ob娱乐下载rsync通过一个同步SSH层。
Rsync是一个命令行工具,它提供了快速增量文件传输,这是开源的。通过“增量”,它意味着只有修改后的数据将被转移。如果一个文件没有改变,它不会被发送到主机。如果一个文件改变了只有部分,只差将被发送。主要优势在于rsync同步传输一点点数据,非常快。
ob娱乐下载Symfony补充道SSHrsync的安全数据传输。越来越多的商业主机支持SSH隧道安全文件上传服务器,这是一个很好的实践,symfony鼓励。ob娱乐下载
笔记在Linux上安装rsync和SSH,阅读说明书的相关网站。对于Windows用户来说,一个开源的替代cwRsync存在,或者你可以尝试手动安装二进制文件(指令可以找到在这里)。当然,能够设置一个SSH隧道之间的集成服务器和主机服务器,SSH服务必须安装和运行这两个电脑。
的ob娱乐下载symfony同步
命令
做一个rsync在SSH需要几个命令,和同步可以发生很多时候在应用程序的生命。幸运的是,symfony自ob娱乐下载动化这个过程只有一个命令:
美元ob娱乐下载symfony同步生产
这个命令,从一个symfony项目的根目录,启动同步的项目代码ob娱乐下载生产
托管服务器。这个服务器的连接细节写在项目properties.ini
发现,在使用/ config /
:
name = askeet(生产)主机= myaskeetprodserver.com端口用户= myuser dir = = 22 / home / myaccount /使用/
使用的连接设置将SSH客户机调用封装在symfonyob娱乐下载同步
命令行。
如果你只是调用ob娱乐下载symfony同步
像上面提到的,rsync工具将运行在干燥模式默认情况下(——即将
),即它将向您展示哪些文件必须同步他们不同步。如果你想要同步进行,你必须提到它明确:
美元ob娱乐下载symfony同步生产
忽略不相关的文件
如果你同步symfony项目生产主机,有一些文件ob娱乐下载和目录不应该转移:
- 所有的
. svn
目录及其内容:他们只包含源代码版本控制信息,开发和集成的必要条件 使用/ web / frontend_dev.php
:开发环境的web前端控制器不能提供给最终用户。调试和日志记录工具在使用应用程序通过这个前端控制器减缓该应用程序,并给你的行动的核心变量的信息。这是保持从主机服务器。- 的
缓存/
和日志/
目录的项目不能删除主机服务器每次你做同步。这些目录也必须被忽略。如果你有一个数据/
目录,应该受到同样的对待。 - 文件上传的用户:symfony项目的最佳实践之一是存储上传文件ob娱乐下载
web /上传/
目录中。这让我们排除所有这些文件通过只指向一个目录。
从rsync排除文件同步,打开和编辑rsync_exclude.txt
下的文件使用/ config /
目录中。可以包含一个文件,每一行一个目录,或者一个模式:
web / frontend_dev . svn。php缓存日志数据的web /上传
由于symfony文件结构,ob娱乐下载你没有太多的文件或目录排除手动同步。如果你想了解更多关于这些文件的组织方式在symfony项目中,阅读ob娱乐下载文件结构一章symfonyob娱乐下载的书。
请注意
的缓存/
和日志/
目录不能同步开发服务器,但他们必须至少存在于生产服务器。手动创建它们,如果使用项目树状结构不包含它们。
生产服务器配置
为您的项目在生产服务器工作,symfony框架必须安装在主机上。ob娱乐下载
安装symfony在生ob娱乐下载产服务器
有几种方法可以在一个服务器上安装symfony,但他们并非都是适应生ob娱乐下载产环境中。例如,做一个梨在目录上安装需要管理员权限,可能不是开放你共享一个web服务器。
基于原则,你可能主机使用symfony生产web服务器上的多个项目,推荐的安装symfony是解压存档的框架在一个特定的目录中。ob娱乐下载只有lib /
和数据/
在生产服务器目录是必要的,所以你可以摆脱其他文件(bin /
,文档/
,测试/
从根目录和文件)。
你应该得到一个文件结构看起来像:
/home/myaccount/ ob娱乐下载symfony / lib /数据/使用/应用程序/前端/批/缓存/ config /数据/ doc / lib /日志/测试/ web /
askeet项目使用symfony的类,您必须设置两个应用程序之间的ob娱乐下载符号链接lib ob娱乐下载/ symfony
和数据/ sob娱乐下载ymfony
和相关目录ob娱乐下载
安装:
cd /home/myaccount/askeet ln美元科幻/home/myaccount/symfoob娱乐下载ny/lib lib / symfony美元ln科幻/home/myaccount/symfony/data数据/ symfony
或者,如果你没有命令行访问框架的文件可以直接复制到这个项目中lib /
和数据/
目录:
/home/myaccount/symfoob娱乐下载ny/lib/*复制到/home/myaccount/askeet/lib/symfony /home/myaccount/symfony/data/*复制到/home/myaccount/askeet/data/symfony
注意,在这种情况下,每次你更新框架,你必须在你所有的项目。
更多的信息,所有可能的方法来安装symfony中描述ob娱乐下载安装一章symfonyob娱乐下载的书。
在生产中使用symfony命ob娱乐下载令
虽然发展中,你使用的好习惯:
清除ob娱乐下载缓存后美元
…每次你改变项目的配置或对象模型。当你上传一个新的版本的项目在生产中,还需要如果你想清除缓存应用程序工作。你可以很容易地通过删除的全部内容使用/缓存/
目录(通过ftp或ssh控制台)。或者,你可以有能力的symfony命令行价格稍长一些的安装。ob娱乐下载
要使用命令行,您需要安装芳香醚酮的效用。芳香醚酮是一个PHP工具类似于命令。它自动化一些管理任务根据一个特定的配置文件pakefile.php
。symfob娱乐下载ony命令行中使用芳香醚酮效用,和每次类型ob娱乐下载
,你真的叫芳香醚酮
与一个特殊的pakefile.php
位于ob娱乐下载symfony / bin /
目录(在symfony中找到更多关于芳香醚酮ob娱乐下载项目创建章symfonyob娱乐下载的书)。如果你通过PEAR安装symfob娱乐下载ony,芳香醚酮安装要求,你通常不会看到它,不需要烦恼接下来会发生什么。但是如果你手动安装,你必须解压芳香醚酮目录(从你的symfony pear安装或得到它ob娱乐下载下载它从芳香醚酮网站)到你的目录在生产服务器。就像symfony的库,你还必须添加ob娱乐下载一个符号链接为了让symfony使用芳香醚酮:
美元ln科幻/home/myaccount/pake/lib lib /芳香醚酮
你应该得到这样的:
/home/myaccount/芳香醚酮/ lib / ob娱乐下载symfony / lib /数据/使用/应用程序/前端/批/缓存/ config /数据/ symfony / - > /home/myaccount/symfony/data doc / lib / symfony / - > /home/myaccount/symfony/lib芳香醚酮- > /home/myaccount/pake/data日志/测试/ web /
调用symfony命令cob娱乐下载lear-cache,你需要做的:
cd /home/myaccount/askeet/ php lib /美元芳香醚酮/ bin /芳香醚酮。php - f libob娱乐下载 / symfony /数据/ symfony / bin / pakefile。php clear-cache
或者,您可以创建一个文件ob娱乐下载
在家庭/ myaccount /使用/
:
# !/bin/sh php lib /芳香醚酮/ bin /芳香醚酮。php - f libob娱乐下载 / symfony /数据/ symfony / bin / pakefile。php $ @
然后,所有您需要做的为了清除缓存是美好的
清除ob娱乐下载缓存后美元
网络命令
如果你想要的力量芳香醚酮实用但没有命令行访问,您还可以创建一个web access clear-cache命令。
比如,你可以保存后webpake.php
在你的/home/myaccount/askeet/web/
目录:
< ? php/ /我们在web / dir,我们需要上一层到项目根目录是指(目录名(__FILE__).DIRECTORY_SEPARATOR。“. .”);include_once(' / liob娱乐下载b / symfony /芳香醚酮/ bin / pake.php ');美元芳香醚酮= pakeApp::get_instance();试一试{美元受潮湿腐烂=美元芳香醚酮- >运行(' /数据/ ob娱乐下载symfony / bin / pakefile.php ',“clear-cache”);}抓(pakeException$ e){打印“<强>错误< /强>:“。$ e- >getMessage();}? >
然后,清理缓存可以通过导航:
http://myaskeetprodserver.com/webpake.php
请注意
注意,通过让网络访问管理工具,您可以妥协的安全你的网站。
升级应用程序
在项目的生命会有次当你需要应用程序的两个版本之间切换。它可以是为了纠正错误,或者上传新特性。你也可以面对数据库的两个版本之间的切换问题。如果你遵循一些良好的行为,这些行为将被证明是简单而无害的。
通知显示不可用
当你开始之间的数据传输和当你清除缓存(如果你修改配置或数据模型),有时有超过几秒钟的延迟。你必须计划为用户显示一个不可用注意试图浏览站点在那一刻。
在应用程序中settings.yml
,定义unavailable_module
和unavailable_action
设置:
:.settings: unavailable_module:内容unavailable_action:不可用
创建一个空内容/不可用
行动和unavailableSuccess.php
模板:
/ /使用/应用程序/前端/模块/内容/行动/ actions.class.php公共函数executeUnavailable(){这个美元- >setTitle(“askeet !» maintenance');}/ /使用/应用程序/前端/模块/内容/模板/ unavailableSuccess.php<标题> Askeet:网站维护< / h1 > < p > Askeet网站正在更新。< / p > < p >请几分钟后再试。< / p > < p > <我> askeet团队< / i > < / p >
现在每一次,你想让你的应用程序不可用,只是改变了可用
设置:
:.settings::
不要忘记一个配置更改在生产中被考虑,你需要清除缓存。
请注意
整个应用程序可以被关闭,只有一个参数是有可能的,因为symfony应用程序使用一个单一入口点,前面的web控制器。ob娱乐下载你会发现更多的信息控制器页面symfonyob娱乐下载的书。
使用两个版本的应用程序
避免不可用的好方法是让项目根目录配置为一个符号链接。例如,假设您正在使用您的应用程序的版本123,和您想要切换到版本134。如果您的web服务器根设置/home/myaccount/askeet/web/
而生产文件夹看起来像这样:
/home/myaccount/芳香醚酮/ lib / ob娱乐下载symfony / lib /数据/使用/ - > /home/production/askeet.123 /使用。123/ askeet.134/
然后你就可以立即切换两个版本通过改变符号链接:
美元ln科幻/home/myaccount/askeet/ /home/myaccount/askeet.134/
用户将看到没有中断,但所有文件后使用符号链接的变化将新版本的。此外,如果你空了缓存/
释放134的文件夹,您甚至不需要启动后clear-cache切换应用程序。
切换数据库
可以推断技术切换数据库。请记住,您的应用程序使用的数据库的地址的定义databases.yml
配置文件。如果您创建了一个数据库副本一个新名字,说askeet.134
,你只需要写的askeet.134 /应用程序/前端/ config / databases.yml
:
:推动:类:sfPropelDatabase参数:phptype: mysql hostspec: localhost数据库:使用。134用户名:myuser密码:我的密码compat_assoc_lower:真compat_rtrim_string:真的
随着databases.yml
将切换应用程序本身的同时,你的使用将立即开始查询新的数据库。
这种方法特别有用如果您的应用程序有一个很大的流量,如果你买不起任何服务中断。
明天见
高流量网站同步通常是一个大问题,但由于symfony项目的文件结构,它不应该为使用创建任何问题。ob娱乐下载
明天,我们将讨论使用适应其他语言。病人扬声器国际化,其他人更方便讨论找到它i18n。ob娱乐下载Symfony的内置支持多语言网站,所以不应该是一个大问题。
这个工作许可适用创作共用署名下衍生著作3.0 Unported许可执照。