配置一个Web服务器

编辑该页面

警告:你浏览的文档欧宝体育电话欧宝娱乐app下载地址Symfony 2.6,不再维护。

这个页面的更新版本Symf欧宝娱乐app下载地址ony 6.2(当前的稳定版本)。

配置一个Web服务器

Symfony应用程序开发的首选方法是使用欧宝娱乐app下载地址PHP web服务器的内部。然而,当使用一个老的PHP版本或在生产环境中运行应用程序时,您将需要使用一个web服务器平台。本文描述了几种方式使用Symfony Apache或Nginx。欧宝娱乐app下载地址

当使用Apache,您可以配置PHP作为一个Apache模块或与FastCGI使用PHP FPM。FastCGI也是使用PHP的首选与Nginx

web目录的所有应用程序的公共和静态文件,包括图像、样式表和JavaScript文件。这也是前端控制器(app.phpapp_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方法RewriteEngineRewriteCond% {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文欧宝体育电话档

Apache与PHP-FPM

利用PHP5-FPM与Apache,首先必须确保FastCGI程序经理php-fpm二进制和Apache的FastCGI模块安装(例如,在一个基于Debian系统安装libapache2-mod-fastcgiphp5-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.00.1:9000年

用mod_proxy_fcgi Apache 2.4

如果您正在运行Apache 2.4,您可以轻松地使用mod_proxy_fcgi通过PHP-FPM传入的请求。配置PHP-FPM监听TCP套接字(mod_proxy目前不支持Unix socket吗),使mod_proxymod_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美元#如果你的子路径上运行Symfony欧宝娱乐app下载地址应用程序文档根#正则表达式必须相应的改变:# 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.phpconfig。在web目录。所有其他文件将作为文本。你必须也确保如果你部署app_dev.phpconfig。这些文件是安全的和没有任何外部用户(IP地址检查代码默认这是每个文件的顶部)。

如果你有其他PHP文件在您的web目录需要执行时,一定要包括他们位置块以上。

高级的Nginx配置选项,阅读官方的Nginx的欧宝体育电话文档

这项工作,包括代码示例,许可下Creative Commons冲锋队3.0许可证。