配置一个Web服务器
编辑该页面警告:你浏览的文档欧宝官网下载appob娱乐下载Symfony 2.6,不再维护。
读这个页面的更新版本Symfob娱乐下载ony 6.2(当前的稳定版本)。
配置一个Web服务器
Symfony应用程序开发的首选方法是使用ob娱乐下载PHP web服务器的内部。然而,当使用一个老的PHP版本或在生产环境中运行应用程序时,您将需要使用一个web服务器平台。本文描述了几种方式使用Symfony Apache或Nginx。ob娱乐下载
当使用Apache,您可以配置PHP作为一个Apache模块或与FastCGI使用PHP FPM。FastCGI也是使用PHP的首选与Nginx。
Web目录
web目录的所有应用程序的公共和静态文件,包括图像、样式表和JavaScript文件。这也是前端控制器(app.php
和app_dev.php
)生活。
web目录作为文档根在配置您的web服务器。在下面的例子中,web /
将文档根目录。这个目录是/var/www/project/web/
。
如果你的托管提供商需要你改变web /
(如目录到另一个位置。public_html /
)确保你覆盖web /目录的位置。
Apache使用mod_php / PHP-CGI
的最低配置使您的应用程序运行在Apache的方法是:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
< VirtualHost *: 80 >ServerNamedomain.tldServerAliaswww.domain.tldDocumentRoot/var/www/project/web<目录/var/www/project/web >AllowOverride所有订单允许,拒绝允许从所有< /目录>#取消注释以下行如果你安装资产作为符号链接#或遇到问题时编译/ Sass / CoffeScript资产少# <目录/var/www/project ># FollowSymlinks选项# < /目录>ErrorLog/var/log/apache2/project_error.logCustomLog/var/log/apache2/project_access。日志的总和< /虚拟主机>
提示
如果您的系统支持APACHE_LOG_DIR
变量,您可能想使用$ {APACHE_LOG_DIR} /
而不是硬编码/var/log/apache2/
。
使用下面的优化配置禁用. htaccess
支持和提高web服务器的性能:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17日18 19 20 21日22日23日24日25日26日27
< VirtualHost *: 80 >ServerNamedomain.tldServerAliaswww.domain.tldDocumentRoot/var/www/project/web<目录/var/www/project/web >AllowOverride没有一个订单允许,拒绝允许从所有< IfModule mod_rewrite.c >选项multiviews方法RewriteEngine在RewriteCond% {REQUEST_FILENAME}! - fRewriteRule^ (. *)app.php美元(QSA L)< / IfModule >< /目录>#取消注释以下行如果你安装资产作为符号链接#或遇到问题时编译/ Sass / CoffeScript资产少# <目录/var/www/project ># FollowSymlinks选项# < /目录>ErrorLog/var/log/apache2/project_error.logCustomLog/var/log/apache2/project_access。日志的总和< /虚拟主机>
提示
如果您使用的是php-cgi,Apache没有通过HTTP基本PHP默认用户名和密码。为了解决这个限制,您应该使用以下配置代码片段:
1
RewriteRule* -[E = HTTP_AUTHORIZATION: % {HTTP:授权}]
使用mod_php / PHP-CGI Apache 2.4
在Apache 2.4中,为了允许,拒绝
已经取代了要求所有授予
。因此,你需要修改目录
权限设置如下:
1 2 3 4
<目录/var/www/project/web >需要所有授予#……< /目录>
高级的Apache配置选项,阅读官方的Apache文欧宝官网下载app档。
Apache与PHP-FPM
利用PHP5-FPM与Apache,首先必须确保FastCGI程序经理php-fpm
二进制和Apache的FastCGI模块安装(例如,在一个基于Debian系统安装libapache2-mod-fastcgi
和php5-fpm
包)。
PHP-FPM使用所谓的池处理传入的FastCGI请求。您可以配置任意数量的池在FPM配置。在一个池配置TCP套接字(IP和端口)或Unix域套接字监听。每个池也可以运行在不同的UID和GID:
1 2 3 4 5 6 7 8 9 10
;一个叫www池(www)用户= www-data集团= www-data;使用unix域套接字听= /var/run/php5-fpm.sock;或监听TCP套接字听=127.0。0.1:9000年
用mod_proxy_fcgi Apache 2.4
如果您正在运行Apache 2.4,您可以轻松地使用mod_proxy_fcgi
通过PHP-FPM传入的请求。配置PHP-FPM监听TCP套接字(mod_proxy
目前不支持Unix socket吗),使mod_proxy
和mod_proxy_fcgi
在您的Apache配置和使用SetHandler
指令通过PHP FPM PHP文件的要求:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17日18 19 20 21日22日23日24日25日26日27 28 29 30 31 32 33 34 35 36 37 38 39
< VirtualHost *: 80 >ServerNamedomain.tldServerAliaswww.domain.tld#取消注释以下行来迫使Apache通过授权#头PHP:所需basic_auth PHP-FPM和FastCGI下## SetEnvIfNoCase ^授权美元“(+)”HTTP_AUTHORIZATION=$1#为Apache 2.4.9或更高#使用结合使用ProxyPassMatch SetHandler避免问题# mod_rewrite或mod_autoindex< FilesMatch \美元。php >SetHandler代理:fcgi: / / 127.0.0.1:9000< / FilesMatch >#如果您使用Apache版本低于2.4.9必须考虑更新或使用这个代替# ProxyPassMatch ^ / (. * \。php (/ . *) ?) $ fcgi: / / 127.0.0.1:9000 / var / www /项目/ web / 1美元#如果你的子路径上运行Symfonyob娱乐下载应用程序文档根#正则表达式必须相应的改变:# ProxyPassMatch ^ / path-to-app / (. * \。php (/ . *) ?) $ fcgi: / / 127.0.0.1:9000 / var / www /项目/ web / 1美元DocumentRoot/var/www/project/web<目录/var/www/project/web >#启用. htaccess重写AllowOverride所有需要所有授予< /目录>#取消注释以下行如果你安装资产作为符号链接#或遇到问题时编译/ Sass / CoffeScript资产少# <目录/var/www/project ># FollowSymlinks选项# < /目录>ErrorLog/var/log/apache2/project_error.logCustomLog/var/log/apache2/project_access。日志的总和< /虚拟主机>
PHP-FPM与Apache 2.2
Apache 2.2或更低,您不能使用mod_proxy_fcgi
。你必须使用FastCgiExternalServer指令。因此,Apache配置应该是这样的:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21日22日23日24日25日26日
< VirtualHost *: 80 >ServerNamedomain.tldServerAliaswww.domain.tldAddHandlerphp5-fcgi。php行动php5-fcgi / php5-fcgi别名/ php5-fcgi /usr/lib/cgi-bin/php5-fcgiFastCgiExternalServer/usr/lib/cgi-bin/php5-fcgi主机127.0.0.1:9000 -pass-header授权DocumentRoot/var/www/project/web<目录/var/www/project/web >#启用. htaccess重写AllowOverride所有订单允许,拒绝允许从所有< /目录>#取消注释以下行如果你安装资产作为符号链接#或遇到问题时编译/ Sass / CoffeScript资产少# <目录/var/www/project ># FollowSymlinks选项# < /目录>ErrorLog/var/log/apache2/project_error.logCustomLog/var/log/apache2/project_access。日志的总和< /虚拟主机>
如果你喜欢使用Unix socket,你必须使用套接字
选项:
1
FastCgiExternalServer/usr/lib/cgi-bin/php5-fcgi插座/var/run/php5-fpm.袜子-pass-header授权
Nginx
的最低配置让你的应用程序下运行Nginx是:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17日18 19 20 21日22日23日24日25日26日27 28 29 30 31 32
服务器{server_namedomain.tldwww.domain.tld;根/var/www/project/web;位置/ {#试图直接提供文件,app.php撤退try_files美元uri/ app.php美元is_args美元arg游戏;}# DEV#这条规则只应放置在您的开发环境#在生产中,不包括这个和部署app_dev。php或config。位置~ ^ / (app_dev |配置)\。php (/ | $){fastcgi_passunix: / var /运行/ php5-fpm.sock;fastcgi_split_path_info^ (. + \。php)(/ . *)美元;包括fastcgi_params;fastcgi_paramSCRIPT_FILENAME美元document_root美元fastcgi_script_name;}#刺激位置~ ^ / app \。php (/ | $){fastcgi_passunix: / var /运行/ php5-fpm.sock;fastcgi_split_path_info^ (. + \。php)(/ . *)美元;包括fastcgi_params;fastcgi_paramSCRIPT_FILENAME美元document_root美元fastcgi_script_name;#防止uri,包括前端控制器。这将404:# http://domain.tld/app.php/some-path#删除内部指令允许这样的uri内部;}error_log/var/log/nginx/project_error.log;access_log/var/log/nginx/project_access.log;}
请注意
根据您的PHP-FPM配置,fastcgi_pass
也可以fastcgi_pass 127.0.0.1:9000
。
提示
这个执行只有app.php
,app_dev.php
和config。
在web目录。所有其他文件将作为文本。你必须也确保如果你做部署app_dev.php
或config。
这些文件是安全的和没有任何外部用户(IP地址检查代码默认这是每个文件的顶部)。
如果你有其他PHP文件在您的web目录需要执行时,一定要包括他们位置
块以上。
高级的Nginx配置选项,阅读官方的Nginx的欧宝官网下载app文档。