章16 -应用程序管理工具
在开发和部署阶段,开发人员需要一个一致的诊断信息,以确定应用程序是否按预期工作。这些信息通常是通过日志和调试工具聚合。因为框架的核心作用,如symfony,在驱动程序,是至关重要的,这些功能紧密集成,以确保有效的发ob娱乐下载展和经营活动。
在生活生产服务器上的应用程序,应用程序管理员重复大量的任务,从日志轮转到升级。一个框架还必须提供工具来自动化这些任务尽可能多。
本章解释了symfony应用管理工具可以回答所有这些ob娱乐下载需求。
日志记录
的唯一途径了解执行请求时出现的错误检查执行过程的跟踪。幸运的是,您将了解在这一节中,PHP和symfony会记录大量的数据。ob娱乐下载
PHP的日志
PHP有一个error_reporting
中定义的参数,php . ini
,指定PHP事件记录。ob娱乐下载Symfony允许您覆盖这个值,每个应用程序和环境settings.yml
文件,如清单所示结果。
清单是16:1 -设置错误报告级别myapp / config / settings.yml
刺激:.settings: error_reporting: 257 dev: .settings: error_reporting: 4095
数字是一个短的写作方式错误水平(请参阅PHP文档错误报告的更多细节)。欧宝官网下载app基本上,4095年
是一个快捷方式E_ALL |代码
,257年
代表E_ERROR | E_USER_ERROR
(默认值为每个新环境)。
为了避免性能问题在生产环境中,服务器日志只有关键PHP错误。然而,在开发环境中,所有类型的事件记录,以便开发人员可以有所有必要的信息跟踪错误。
PHP的位置取决于你的日志文件php . ini
配置。如果你不担心定义这个位置,PHP可能使用您的web服务器提供的日志设施(如Apache错误日志)。在这种情况下,你会发现PHP web服务器日志目录下的日志。
ob娱乐下载Symfony的日志
除了标准的PHP日志,symfony可以记录很多自定义的事件。ob娱乐下载你可以找到所有的symfony下日志ob娱乐下载myproject /日志/
目录中。有一个文件每个应用程序和环境。例如,开发环境的日志文件myapp
应用程序被命名为myapp_dev.log
,生产一个命名myapp_prod.log
,等等。
如果你有一个运行symfonob娱乐下载y应用程序,看看它的日志文件。语法很简单。对于每一个事件,一行添加到应用程序的日志文件。每一行包含的确切时间事件,事件的性质,被加工的对象,任何额外的相关细节。清单显示了一个示例取得symfony的日志文件的内容。ob娱乐下载
清单——取得样本Symfony日志文件内容,ob娱乐下载日志/ myapp_dev.php
11月15日16:30:25 sob娱乐下载ymfony[信息]{sfAction}调用“barActions - > executemessages ()Nov 15 16:30:25 symfony [debug] SELECT bd_message.ID, bd_message.SENDER_ID, bd_... Nov 15 16:30:25 symfony [info ] {sfCreole} executeQuery(): SELECT bd_message.ID... Nov 15 16:30:25 symfony [info ] {sfView} set slot "leftbar" (bar/index) Nov 15 16:30:25 symfony [info ] {sfView} set slot "messageblock" (bar/mes... Nov 15 16:30:25 symfony [info ] {sfView} execute view for template "messa... Nov 15 16:30:25 symfony [info ] {sfView} render "/home/production/myproject/... Nov 15 16:30:25 symfony [info ] {sfView} render to client
你可以找到许多细节在这些文件中,包括实际的SQL查询发送到数据库,模板调用时,调用对象之间的链,等等。
ob娱乐下载Symfony日志级别配置
有八个级别的symfony日志消息:ob娱乐下载紧急情况
,警报
,暴击
,犯错
,警告
,请注意
,信息
,调试
,这是一样的梨:日志
包(http://pear.php.net/package/Log/)的水平。您可以配置的最大级别记录在每个环境logging.yml
每个应用程序的配置文件,如清单16-3所示。
清单16-3 -默认日志配置myapp / config / logging.yml
刺激:启用:级别:犯错旋转:清洗:从开发:测试:#:#启用:#水平:调试#旋转:非#时间:7 #历史:10 #清洗:
默认情况下,在所有环境中除了生产环境中,所有的信息都记录(最不重要的水平,调试
级别)。在生产环境中,默认禁用日志记录;如果你改变启用
来在
(从,只有最重要的消息暴击
来紧急情况
)出现在日志中。
您可以更改的日志级别logging.yml
文件为每个环境限制登录消息的类型。的旋转
,期
,历史
,清洗
设置了即将到来的“清理和旋转日志文件”部分。
提示
日志记录参数的值在执行期间通过访问sfConfig
对象的sf_logging_
前缀。例如,如果启用了日志记录,电话sfConfig:: (' sf_ logging_enabled”)
。
添加一个日志消息
您可以手动在symfony中添加一条消息日志文件从您的代码通过使用清单16 ob娱乐下载4中所述的技术之一。
清单16 4 -添加一个自定义日志消息
/ /从一个行动这个美元- >logMessage(美元的消息,美元的水平);/ /从一个模板< ? phpuse_helper(“调试”)? >< ? phplog_message(美元的消息,美元的水平)? >
美元的水平
可以有相同的值作为日志消息。
另外,日志中写一个消息从任何地方在你的应用程序中,使用sfLogger
直接的方法,如清单16:5所示。可用的方法承担相同的名称作为日志级别。
清单16:5 -从任何地方添加一个自定义的日志消息
如果(sfConfig::得到(“sf_logging_enabled”)){sfContext::getInstance()- >getlog()- >信息(美元的消息);}
侧边栏
自定义日志记录
ob娱乐下载Symfony的日志系统非常简单,但是它也很容易定制。你可以指定自己的日志对象通过调用sfLogger: getInstance () - > registerLogger ()
。例如,如果你想使用梨:日志
,就添加以下应用程序的config。
:
require_once(“Log.php”);美元的日志=日志::单例(“error_log”PEAR_LOG_TYPE_SYSTEM,sob娱乐下载ymfony的);sfLogger::getInstance()- >registerLogger(美元的日志);
如果你想注册自己的logger类,唯一的前提是它必须定义一个日志()
方法。ob娱乐下载Symfony调用这个方法有两个参数:美元的消息
(消息记录)美元的优先级
(水平)。
清理和旋转的日志文件
别忘了定期清除日志/
目录的应用程序,因为这些文件有增加几兆字节的奇怪习惯几天,不同,当然,你的交通。ob娱乐下载Symfony提供了一个特殊的log-purge
为此任务,您可以启动定期用手或cron表。例如,以下命令消除symfony日志文件在应用程序和环境记录。ob娱乐下载yml文件指定清洗:在(这是默认值):
> ob娱乐下载symfony log-purge
为更好的性能和安全,你可能想在几个小文件存储symfony日志而不是一个单一的大文件。ob娱乐下载理想的日志文件的存储策略是定期备份和空主日志文件,但只保留一个有限数量的备份。您可以启用日志轮换和指定参数logging.yml
。例如,用一个期
的7
天,一个历史
(备份)10
,见清单16-6,你将与一个活动日志文件+ 10备份文件包含每个七天的历史。只要七天的下一时期的结束,当前活动日志文件备份,最古老的备份和删除。
清单16-6——配置日志轮转myapp / config / logging.yml
刺激:旋转:时间:7 # #日志文件默认每7天旋转历史:10 # #的最大历史日志文件保存
执行日志轮转,定期执行按某
的任务。这个任务只有清洗文件旋转
是在
。您可以指定一个应用程序调用任务时和环境:
> ob娱乐下载symfony按某myapp刺激
存储在备份日志文件日志/历史/
目录和后缀为他们保存的日期。
调试
不管你有多精通一个编码器,你最终会犯错误,即使你使用symfony。ob娱乐下载检测和理解错误是快速应用程序开发的关键之一。幸运的是,symfony提ob娱乐下载供了一些调试工具的开发人员。
ob娱乐下载Symfony调试模式
ob娱乐下载Symfony的调试模式促进应用程序开发和调试。时,下列情况:
- 在每个请求配置检查,所以改变任何配置文件有一个直接的影响,而不需要明确的配置缓存。
- 完整的堆栈跟踪的错误消息显示一个明确的和有用的方式,这样你就可以更有效地找到故障元件。
- 更多的调试工具(比如数据库查询的细节)。
- 推动调试模式也激活,所以在调用任何错误驱动对象将显示详细的调用链通过推动架构。
另一方面,当调试模式,处理如下:
- YAML解析配置文件只有一次,然后转换为PHP文件中存储
缓存/ config /
文件夹中。每个请求后第一个忽略了YAML文件并使用缓存的配置。因此,请求的处理要快得多。 - 允许后处理的配置,您必须手动清除缓存的配置。
- 一个错误的处理请求期间返回一个响应代码500(内部服务器错误),没有任何解释的问题的内在原因。
每个应用程序调试模式被激活在前端控制器。它是由价值的控制SF_DEBUG
常数,如清单16-7所示。
样品清单16-7 -前端控制器在调试模式下,web / myapp_dev.php
< ? php定义(“SF_ROOT_DIR”,realpath(目录名(__FILE__)。“/ . .”));定义(“SF_APP”,“myapp”);定义(“SF_ENVIRONMENT”,“开发”);定义(“SF_DEBUG”,真正的);require_once(SF_ROOT_DIR.DIRECTORY_SEPARATOR。“应用程序”.DIRECTORY_SEPARATOR.SF_APP.DIRECTORY_SEPARATOR。“配置”.DIRECTORY_SEPARATOR。“config . php”);sfContext::getInstance()- >getController()- >调度();
谨慎
在生产服务器上,你不应该激活调试模式也没有留下任何前端控制器与调试模式可用。调试模式不仅会降低页面交付,但它也可能揭示的内部应用程序。尽管调试工具从未显示数据库连接信息,异常堆栈跟踪的任何恶意访问者的充满危险的信息。
ob娱乐下载Symfony的例外
当一个例外发生在调试模式下,symfony会显示一个有用的异常通知,其中包含所有你需要找ob娱乐下载到问题的根源。
异常消息显然是书面和引用的最可能的原因的问题。他们经常提供可能的解决方案来解决这个问题,最常见的问题,甚至异常页面包含一个链接到一个symfony的网站页面更详细的例外。ob娱乐下载异常页面显示错误发生在PHP代码(语法高亮显示),连同完整的堆栈的方法调用,如图结果。您可以按照第一次调用导致了问题的跟踪。传递给方法的参数也会显示出来。
请注意
ob娱乐下载Symfony真的依赖于PHP异常错误报告,这是比PHP 4应用程序的工作方式。例如,可以由一个404错误sfError404Exception
。
图是16:1 -示例symfony应用程序异常消息ob娱乐下载
在开发阶段,symfony异常将伟大的使用调试应用程序。ob娱乐下载
Xdebug扩展
Xdebug PHP扩展(http://xdebug.org/)允许您扩展的信息量所记录的web服务器。ob娱乐下载Symfony Xdebug消息集成的调试反馈,这是一个好主意来激活这个扩展在调试应用程序时。扩展安装在很大程度上依赖于您的平台;请参考Xdebug网站详细的安装指南。一旦安装Xdebug,你需要手动激活它php . ini
安装后的文件。对于* nix平台,这是通过添加以下行:
zend_extension = " / usr /地方/ lib / php /扩展/不-调试-非zt型- 20041030 / xdebug.so”
对于Windows平台,Xdebug激活触发这条线:
扩展= php_xdebug.dll
Xdebug配置清单16-8给出一个示例,也必须被添加到php . ini
文件。
清单16-8 - Xdebug示例配置
xdebug。xdebug profiler_enable = 1。xdebug profiler_output_dir = " / tmp / xdebug”。auto_trace = 1;xdebug启用跟踪。xdebug trace_format = 0。show_mem_delta = 0;记忆差,xdebug。show_local_vars = 1; xdebug.max_nesting_level = 100
您必须重新启动您的web服务器Xdebug模式被激活。
谨慎
别忘了禁用Xdebug模式在生产平台。不这样做会慢下来的执行每一页。
Web调试工具栏
日志文件包含有趣的信息,但他们不是很容易阅读。最基本的任务,那就是寻找特定的请求的行记录,会很棘手,如果有多个用户同时使用一个应用程序和历史悠久的事件。这是当你开始需要一个web调试工具栏。
这工具栏显示为一个半透明框叠加在正常的内容在浏览器中,在右上角的窗口中,如图取得。它给访问symfony日志事件,当前配置中,请ob娱乐下载求和响应对象的属性,数据库查询的细节发布的要求,和一个图表有关请求的处理时间。
图——到了web调试工具栏出现在窗口的右上角
调试工具栏背景的颜色取决于最高水平的日志消息发布在请求。如果没有消息传递调试
水平,工具栏有一个灰色背景。如果一个消息到达犯错
水平,工具栏的背景是红色的。
请注意
不要混淆网络的调试模式调试工具栏。调试工具栏可以显示即使是在调试模式下,尽管如此,在这种情况下,它显示更少的信息。
激活web调试工具栏应用程序,打开settings.yml
文件和寻找web_debug
关键。在刺激
和测试
环境的默认值web_debug
是从
,所以你需要手动激活它如果你想要它。在dev
环境中,默认的配置设置在
,见清单拿下。
清单拿下- Web调试工具栏激活myapp / config / settings.yml
戴夫:.settings: web_debug:
显示时,web调试工具栏提供了大量的信息/交互:
- 单击symfony标ob娱乐下载识切换工具栏的可见性。减少时,工具栏不隐藏元素位于页面的顶部。
- 单击var &配置部分显示的细节要求,响应,设置,全局变量,和PHP属性,如图16-3。顶线总结了重要的配置设置,如调试模式、缓存和一个PHP加速器的出现(出现在红如果他们是无效的和绿色的,如果他们被激活)。
图16-3 - var &配置部分显示所有请求的变量和常量
- 当启用了缓存,绿色箭头出现在工具栏。单击箭头再处理页面,无论什么是存储在缓存中(但没有清除缓存)。
- 点击日志&公司部分揭示当前请求的日志消息,如图16 4。根据事件的重要性,他们显示在灰色、黄色和红色线。您可以过滤所显示的事件类别使用链接显示在列表的顶部。
图16 4 -日志&公司部分显示了当前请求的日志消息
请注意
当当前的行动结果重定向,只有最新的日志请求日志中&公司窗格中,所以好的调试日志文件仍然是不可或缺的。
- 请求执行SQL查询,数据库图标出现在工具栏。单击它来查看详细的查询,如图16:5。
- 一个时钟图标右边的处理请求所需的总时间。注意,网络调试工具栏和调试模式减缓请求执行,所以尽量不要考虑时间本身,并注意只有两页的执行时间之间的差异。单击时钟图标来查看细节处理时间类别的类别,如图16-6。ob娱乐下载Symfony显示请求处理的特定部分所花费的时间。仅次与当前请求优化的意义,所以在symfony的核心不是显示时间。ob娱乐下载这就是为什么这段时间不要总结的总时间。
- 点击右边的红色x的工具栏隐藏工具栏。
图16:5——数据库查询部分显示为当前执行的查询请求
图16-6——时钟图标显示了执行时间的范畴
侧边栏
添加你自己的计时器
ob娱乐下载Symfony使用sfTimer
类计算配置,所花费的时间模型,行动,和视图。时间使用同一对象,您可以自定义处理和显示结果与其他计时器在web调试工具栏。这可能是非常有用的,当你在性能优化工作。
初始化时间在一个特定的代码片段,调用取得时间()
方法。它将返回一个sfTimer对象并开始计时。调用addTime ()
方法在这个对象停止计时。可以通过运行时间getElapsedTime ()
方法,并显示在web调试工具栏与其他。
/ /初始化计时器开始计时美元的计时器= sfTimerManager::取得时间(“定时器”);/ /做事情…/ /停止计时器和添加时间美元的计时器- >addTime();/ /获取结果(如果不是已经停止和停止计时器)elapsedTime美元=美元的计时器- >getElapsedTime();
给每一个名字计时器的好处是,你可以叫它几次,积累时间。例如,如果定时器
定时器用于每个请求一个实用程序方法,叫做两次,第二次调用取得时间(“定时器”)
方法将计算当重新启动的时间点addTime ()
最后一次,所以时间上一个。调用getCalls ()
定时器对象会给你计时器启动的次数,这个数据也显示在web调试工具栏。
/ /调用计时器的数量nbCalls美元=美元的计时器- >getCalls();
在Xdebug模式下,日志消息更加丰富。所有的PHP脚本文件和函数被称为记录,和symfony知道如何把这些信息与内部日志。ob娱乐下载日志消息表的每一行有一个双箭头按钮,您可以单击查看更多细节关于相关的请求。如果出现错误,Xdebug模式给你细节的最高额找到原因。
请注意web调试工具栏默认不包括在Ajax响应和文件有一个html内容类型。其他页面,您可以禁用web调试工具栏手动操作只需调用sfConfig:集(sf_web_debug,假)
。
手动调试
获得框架调试消息很好,但是能够记录自己的消息是更好的。ob娱乐下载Symfony提供了快捷键,可以从行为和模板,帮助您跟踪事件请求执行期间和/或值。
您的自定义日志消息出现在symfony日志文件以及web调试工具栏,就像普通的ob娱乐下载事件。(清单16 4给自定义日志消息语法的一个例子。)一个自定义的消息是一个很好的方法来检查一个变量的值从一个模板,例如。展示了如何使用web调试工具栏为何上市取得16胜10负的开发者的反馈从模板(您也可以使用$ this - > logMessage ()
从一个动作)。
——为何上市取得16胜10负的插入消息日志中用于调试目的
< ? phpuse_helper(“调试”)? >…< ? php如果(美元问题):? >< ? phplog_message(“{sfAction}在那里”,“呃”)? >…< ? phpendif? >
的使用犯错
水平保证事件将在消息列表,清晰可见,如图16-7。
图16-7 -自定义日志消息出现在web日志&公司部分的调试工具栏
如果你不想添加一行日志,只是跟踪一个短消息或一个值,您应该使用debug_message
而不是log_message
。这个动作方法(一个具有相同名称的助手也存在)在web调试工具栏,显示一条消息的日志&公司部分。检查清单16-11作家使用调试消息的一个示例。
清单16-11 -插入消息的调试工具栏
/ /从一个行动这个美元- >debugMessage(美元的消息);/ /从一个模板< ? phpuse_helper(“调试”)? >< ? phpdebug_message(美元的消息)? >
填充一个数据库
在应用程序开发过程中,开发人员常常面临着人口数据库的问题。几个特定的解决方案存在一些数据库系统,但没有一个可以使用的对象-关系映射。由于YAML和sfPropelData
对象,symfoob娱乐下载ny可以自动从一个文本源数据库传输数据。尽管写文本文件来源数据似乎更多的工作比进入手工记录使用的CRUD接口,将节省您的时间。你会发现这个特性非常有用的自动存储和填充应用程序的测试数据。
设备文件的语法
ob娱乐下载Symfony可以读取数据文件,一个非常简单的YAML语法,只要他们位于下数据/夹具/
目录中。夹具文件组织的类,每个类节介绍的类名称作为标题。对于每个类,贴上一个独一无二的字符串的记录是由一组字段名:价值
对。清单16-12显示了一个示例数据库的数据文件的数量。
清单16-12 -样品夹具文件,数据/夹具/ import_data.yml
文章:# # blog_article表中插入记录first_post: # #第一唱片标题:我的第一个记忆内容:|好长一段时间我习惯早睡。有时,当我把我的蜡烛,我的眼睛将关闭太快,我甚至没有时间说“我要睡觉”。second_post: # #第二唱片标题:事情变得更糟糕的内容:|有时他希望她会死,无痛,有些意外,她门在街上,穿过繁忙的街道,从早晨到晚上。
ob娱乐下载Symfony将列键转换为setter方法通过使用camelCase转换器(setTitle ()
,setContent ()
)。这意味着,您可以定义一个密码
关键,即使实际的表没有密码
——定义一个领域向setPassword ()
方法用户
对象,您可以填充其他列基于密码(例如,一个散列版本的密码)。
主键列不需要定义。因为它是一个自动递增字段,数据库层知道如何确定它。
的created_at
列也不需要设置,因为symfony知道字段命名,必须设置为当前系统时间。ob娱乐下载
启动导入
的propel-load-data
任务从YAML文件导入数据到数据库中。来自连接设置databases.yml
文件,因此需要一个应用程序名称。可选地,您可以指定一个名称(环境dev
默认情况下)。
> ob娱乐下载symfony propel-load-data前端
这个命令读取所有的YAML夹具文件数据/夹具/
目录,并将记录插入数据库。默认情况下,它取代了现有的数据库内容,但如果最后一个参数调用附加
,命令不会删除当前数据。
> ob娱乐下载symfony propel-load-data前端添加
您可以指定另一个夹具文件或目录的电话。在这种情况下,添加一个路径相对于项目目录。
> ob娱乐下载/ myfixtures / myfile.yml symfony propel-load-data前端数据
使用关联表
你现在知道如何将记录添加到一个表,但是如何添加记录与另一个表的外键吗?由于主键是不包含在设备数据,您需要另一种方法来与记录。
让我们回到在第8章的例子中,blog_article表有关的地方blog_comment
表,如图16-8。
图16-8——一个示例数据库关系模型
这就是给的标签记录成为真正有用的。添加一个评论
场的first_post
篇文章中,您只需要附加清单他们所示的行import_data.yml
数据文件。
清单他们——将记录添加到相关表数据/夹具/ import_data.yml
备注:first_comment: article_id: first_post作者:匿名的内容:你的散文过于冗长。写短句子。
的propel-load-data
任务将识别标签,你给以前的一篇文章import_data.yml
,并获取相应的主键文章
记录设置article_id
字段。你甚至不看到记录的id;你联系他们的标签,它不能简单。
链接的记录的唯一约束的对象被称为早些时候在一个外键必须定义在文件中;也就是说,你会怎么做如果你定义一个接一个。数据文件解析从上到下的顺序记录都写是很重要的。
一个数据文件可以包含几个类的声明。但是如果你需要插入大量的数据对许多不同的表,夹具文件可能会太长很容易操纵。
的propel-load-data
任务解析它找到的所有文件设备/
目录,没有什么阻止你YAML夹具文件分割成更小的碎片。要记住的一件重要事情是,外键处理订单表。确保以正确的顺序进行解析,以序数前缀的文件。
100 _article_import_data。yml 200 _comment_import_data。300年yml _rating_import_data.yml
部署应用程序
ob娱乐下载Symfony提供了速记命令来同步两个版本的一个网站。这些命令主要用于部署一个网站从开发服务器最后一个主机,连接到互联网。
冻结的FTP传输的项目
最常见的方式将项目部署到生产是将所有的文件通过FTP(或SFTP)。然而,symfonob娱乐下载y项目使用symfony的库,除非你发展一个沙箱(不推荐),或者如果symfonylib /
和数据/
目录是联系在一起的svn:外部
项目目录,这些库。你是否使用PEAR安装或符号链接,复制相同的文件结构生产是耗时且复杂的。
这就是为什么symfoob娱乐下载ny提供了一个实用工具来“冻结”一个项目,将所有必要的symfony库复制到该项目数据/
,lib /
,web /
目录。这个项目就变成了一种沙盒,一个独立、独立的应用程序。
> ob娱乐下载symfony冻结
一旦一个项目被冻结,你可以转让项目目录投入生产,并将工作没有任何需要梨,符号链接,或者其他。
提示
各种冷冻项目可以在同一台服务器上有不同版本的symfony没有任何问题。ob娱乐下载
回复一个项目为初始状态,使用解冻
的任务。将擦除数据/ sob娱乐下载ymfony /
,lib ob娱乐下载/ symfony /
,web /科幻/
目录。
> ob娱乐下载symfony解冻
注意,如果你有符号链接安装symfony冻结前,symfony会记住它们并重新创建ob娱乐下载符号链接在原来的位置。
使用rsync增量文件传输
发送项目根目录FTP第一传输很好,但是当你需要上传一个更新您的应用程序,只有少数文件已经改变,FTP并不理想。你需要再次转移整个项目,这是一个浪费时间和带宽,或者浏览目录,你知道一些文件改变了,只和转让的不同的修改日期。这是一个耗时的工作,很容易出错。此外,该网站可以不可用或车期间的转移。
symfony rsync同步支持的解决方案,该方案通过SSH层。ob娱乐下载Rsync (http://samba.anu.edu.au/rsync/)是一个命令行实用程序,它提供了快速增量文件传输,这是开源的。与增量传输,只有将发送修改后的数据。如果一个文件没有改变,它不会被发送到主机。如果一个文件改变了只有部分,就差将被发送。rsync同步传输的主要优势是只有少量的数据,非常快。
ob娱乐下载Symfony将SSH rsync之上添加到安全的数据传输。越来越多的商业主机支持SSH隧道安全文件上传服务器,这是一个很好的实践,避免安全隐患。
symfony的SSH客户机调用使用的连接设置ob娱乐下载配置/ properties.ini
文件。清单14的比分给出一个示例生产服务器的连接设置。写自己的生产服务器的设置这个文件之前同步。您还可以定义一个参数设置提供自己的rsync命令行参数。
清单的比分——示例连接设置服务器同步myproject / config / properties.ini
name = myproject的(生产)主机= myapp.example.com端口用户= myuser dir = = 22 / home / myaccount / myproject /
请注意
不要混淆生产服务器(主机服务器中定义的properties.ini
项目的文件)和生产环境(前端控制器和配置用于生产,应用程序的配置文件中所提到的)。
做一个rsync / SSH需要几个命令,和同步可以发生很多时候在应用程序的生命。幸运的是,symfony自ob娱乐下载动化这个过程只有一个命令:
> ob娱乐下载symfony同步生产
这个命令启动rsync命令在干燥模式;也就是说,它显示了哪些文件必须是同步的,但实际上并不同步。如果你想要同步进行,需要显式地请求它通过添加去
。
> ob娱乐下载symfony同步生产
别忘了清除缓存后的生产服务器同步。
提示
有时不存在的错误出现在生产发展。在90%的情况下,这是由于不同的版本(PHP、web服务器或数据库)或配置。为了避免不愉快的惊喜,你应该定义的目标PHP配置php.yml
应用程序的文件,检查开发环境应用相同的设置。请参考19章关于这个配置文件的更多信息。
侧边栏
是您的应用程序完成了吗?
在应用程序发送到生产之前,你应该确保它是准备公共使用。检查下列事项是否做过实际上决定部署应用程序:
错误页面应该定制应用程序的外观和感觉。指第十九章看到如何自定义500错误,错误404,和安全页面,“管理一个生产应用程序”一节在这一章,了解如何定制页面时显示你的网站不可用。
的默认的
模块应该远离enabled_modules
数组的settings.yml
,所以没有symfony页ob娱乐下载面出现错误。
在客户端会话处理机制使用cookie,这饼干ob娱乐下载
默认情况下。在部署应用程序之前,您应该将它重命名为避免披露您的应用程序使用symfony的事实。ob娱乐下载请参考第6章,了解如何定制的饼干的名字factories.yml
文件。
的robots . txt
文件,位于项目的web /
目录,默认为空。你应该告知定制web spider和其他web机器人他们可以浏览一个网站的哪些部分,他们应该避免。在大多数情况下,这个文件是用来排除某些URL空间索引——例如,资源密集型的页面,页面不需要索引(例如错误档案),或无限的URL空间机器人可以被困。
现代浏览器请求favicon.ico
文件当用户第一次浏览您的应用程序,来表示应用程序图标在地址栏和书签文件夹。提供这样的文件不仅会使你的应用程序的外观和感觉完整,但它也将阻止很多404错误出现在你的服务器日志。
忽略不相关的文件
如果你同步symfony项目生产主机,一些文件和ob娱乐下载目录不应该转移:
- 所有的版本控制目录(
. svn /
,CVS /
等等),其内容是必要的开发和集成。 - 前端控制器的开发环境不能提供给最终用户。调试和日志记录工具在使用应用程序通过前端控制器降低应用程序的核心变量,给信息你的行动。这是远离公众。
- 的
缓存/
和日志/
目录的项目不能删除主机服务器每次你做同步。这些目录也必须被忽略。如果你有一个数据/
目录,应该以同样的方式对待。 - 由用户上传的文件不应被转移。symfony项目的最佳实践之一是存储上传文件ob娱乐下载
web /上传/
目录中。这允许您排除所有这些文件的同步通过只指向一个目录。
从rsync排除文件同步,打开和编辑rsync_exclude.txt
下的文件myproject / config /
目录中。每一行都包含一个文件,目录,或模式。symfob娱乐下载ony文件结构组织逻辑,旨在减少数量的文件或目录排除手动同步。请参见清单16-15为例。
样品清单16-15 - rsync排除设置,myproject / config / rsync_exclude.txt
. svn /缓存/日志/ * * / /统计/ * / * / web /上传/ web / myapp_dev.php
请注意
的缓存/
和日志/
目录不能同步开发服务器,但他们必须至少存在于生产服务器。如果手工创建它们myproject的/
项目树状结构不包含它们。
管理一个生产应用程序
最常用于生产服务器的命令clear-cache
。你必须运行它每次升级symfony或您的项目(例如,调用ob娱乐下载同步
任务),每次你改变配置在生产。
>清ob娱乐下载除缓存后
提示
如果你生产服务器的命令行接口不可用,你仍然可以手动清除缓存清除的内容缓存/
文件夹中。
您可以暂时禁用应用程序——例如,当你需要升级库或大量的数据。
> ob娱乐下载symfony禁用APPLICATION_NAME ENVIRONMENT_NAME
默认情况下,禁用应用程序显示了默认的/不可用
行动(存储在框架),但是您可以自定义模块和行动在这种情况下使用settings.yml
文件。清单并且显示了一个示例。
清单并且-设置为不可用的应用程序执行的动作的,myapp / config / settings.yml
:.settings: unavailable_module: mymodule里unavailable_action:维护
的启用
任务允许应用程序和清空缓存。
> ob娱乐下载symfony启用APPLICATION_NAME ENVIRONMENT_NAME
侧边栏
在清理缓存页面显示不可用
如果你设置check_lock
参数在
在settings.yml
文件,symob娱乐下载fony将锁定应用程序当缓存被清空,和所有的请求到达最后清除缓存之前被重定向到一个页面说应用程序暂时不可用。如果缓存大,延迟清除可能超过几毫秒,如果你的网站的流量很高,这是推荐的设置。
这个页面不可用不一样的一个显示当你叫symfony禁用(因为缓存被清除,symfony不能正常工作)。ob娱乐下载它位于sf_sob娱乐下载ymfony_data_dir / web /错误/美元
目录,但是如果你创建你自己的unavailable.php
文件在您的项目web /错误/
目录,symfony会ob娱乐下载使用它。的check_lock
默认参数是无效的,因为它对性能有非常轻微的负面影响。
的clear-controllers
任务扫清了web /
目录的所有控制器除了在生产环境中运行的。如果你不包括前端控制器的发展rsync_exclude.txt
这个命令文件,保证一个后门不会透露您的应用程序的内部。
> ob娱乐下载symfony clear-controllers
项目文件和目录的权限是可以打破的,如果你从一个SVN储存库使用结帐。的fix-perms
任务修复目录权限,改变日志/
和缓存/
0777年权限,例如(这些目录需要可写框架正常工作)。
> ob娱乐下载symfony fix-perms
侧边栏在生产中使用symfony命ob娱乐下载令
如果你的生产服务器有梨安装symfony,然后symfony命令行可以从每一个目录,并将工作与发展。ob娱乐下载对于冷冻项目,然而,您需要添加php
之前ob娱乐下载
命令能够发射任务:
/ /通过梨> ob娱乐下载symfony安装symfony[选项]<任务>(参数)/ / symfony冻结在项目或符号链接> php symfony[选项]<任务>(参数)
总结
通过结合PHP日志和symfony日志,您可以轻松地ob娱乐下载监视和调试应用程序。在开发期间,调试模式,异常,和网络调试工具栏帮助您定位问题。你甚至可以插入自定义消息日志文件或工具栏更易于调试。
命令行界面提供了大量的工具,方便的管理您的应用程序中,在开发和生产阶段。等,数据人口、冻结和同步任务非常省时便利。
这项工作是GFDL许可执照。