配置Web服务器
编辑本页警告:您正在浏览的文档欧宝官网下载appob娱乐下载Symfony 2.4,现已不再维护。
读本页的更新版本用于Syob娱乐下载mfony 6.2(当前稳定版本)。
配置Web服务器
开发Symfony应用程序的首选方法是使用ob娱乐下载PHP的内部web服务器.但是,当使用较旧的PHP版本或在生产环境中运行应用程序时,您将需要使用功能齐全的web服务器。本文描述了在Apache2或Nginx中使用Symfony的几种方法。ob娱乐下载
在使用Apache2时,可以将PHP配置为Apache模块或者使用FastCGIPHP FPM.FastCGI也是使用PHP的首选方式与Nginx.
Apache2 mod_php/PHP-CGI
Apache高级配置选项请参见官方文档Apache欧宝官网下载app文档。让你的应用程序在Apache2下运行的最低基础是:
12 3 4 5 6 7 8 9 10 11 12 13 14 15
< VirtualHost *: 80 >ServerNamedomain.tldServerAliaswww.domain.tldDocumentRoot/var/www/project/web/var/www/project/web <目录>#启用。htaccess重写AllowOverride所有订单允许,拒绝允许从所有< /目录>ErrorLog/var/log/apache2/project_error.logCustomLog/var/log/apache2/project_access.log相结合< /虚拟主机>
请注意
出于性能原因,您可能需要设置AllowOverride没有
的重写规则web / . htaccess
到虚拟主机
配置。
如果你正在使用php-cgi默认情况下,Apache不会将HTTP基本用户名和密码传递给PHP。为了解决这个限制,你应该使用下面的配置片段:
1
RewriteRule* -[E = HTTP_AUTHORIZATION: % {HTTP:授权}]
谨慎
在Apache 2.4中,为了允许,拒绝
已经被要求全部批准
,因此您需要修改目录
权限设置如下:
1 2 3 4 5
/var/www/project/web <目录>#启用。htaccess重写AllowOverride所有需要所有授予< /目录>
Apache2与PHP-FPM
要在Apache上使用PHP5-FPM,首先必须确保拥有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
在Apache 2.4中使用mod_proxy_fcgi
如果您正在运行Apache 2.4,则可以轻松使用mod_proxy_fcgi
将传入的请求传递给PHP-FPM。配置PHP-FPM监听TCP套接字(mod_proxy
目前不支持Unix套接字),使mod_proxy
而且mod_proxy_fcgi
在Apache配置中使用ProxyPassMatch
将PHP文件请求传递给PHP FPM的指令:
12 3 4 5 6 7 8 9 10 11 12 13 14 15 16
< VirtualHost *: 80 >ServerNamedomain.tldServerAliaswww.domain.tldProxyPassMatch^ /(. * \。php (/ . *) ?) $ fcgi: / / 127.0.0.1:9000 / var / www /项目/ web /1美元DocumentRoot/var/www/project/web/var/www/project/web <目录>#启用。htaccess重写AllowOverride所有需要所有授予< /目录>ErrorLog/var/log/apache2/project_error.logCustomLog/var/log/apache2/project_access.log相结合< /虚拟主机>
谨慎
在文档根目录的子路径上运行Symfoob娱乐下载ny应用程序时,中使用的正则表达式ProxyPassMatch
指令必须相应更改:
1
ProxyPassMatch^ / path-to-app /(. * \。php (/ . *) ?) $ fcgi: / / 127.0.0.1:9000 / var / www /项目/ web /1美元
PHP-FPM与Apache 2.2
在Apache 2.2或更低版本上,不能使用mod_proxy_fcgi
.你必须使用FastCgiExternalServer指令。因此,你的Apache配置应该是这样的:
12 3 4 5 6 7 8 9 10 11 12 13 14 16 17 18 19 20
< 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 -host 127.0.0.1:9000 -pass-header授权DocumentRoot/var/www/project/web/var/www/project/web <目录>#启用。htaccess重写AllowOverride所有订单允许,拒绝允许从所有< /目录>ErrorLog/var/log/apache2/project_error.logCustomLog/var/log/apache2/project_access.log相结合< /虚拟主机>
如果您更喜欢使用unix套接字,则必须使用套接字
选项:
1
FastCgiExternalServer/usr/lib/cgi-bin/php5-fcgi -socket /var/run/php5-fpm. /usr/lib/cgi-bin/php5-fcgisock -pass-header授权
Nginx
关于Nginx的高级配置选项,请参见官方版本Nginx欧宝官网下载app文档。让你的应用程序在Nginx下运行的最低基础是:
12 3 4 5 6 7 8 9 10 11 12 13 14 16 17 18 19 20
服务器{server_namedomain.tldwww.domain.tld;根/var/www/project/web;位置/ {#尝试直接提供文件,回退到app.phptry_files$uri/ app.php$is_args$arg游戏;}位置~ ^ / (app | app_dev |配置)\。php (/ | $){fastcgi_passunix: / var /运行/ php5-fpm.sock;fastcgi_split_path_info^(. + \。php)(/ . *)美元;包括fastcgi_params;fastcgi_paramSCRIPT_FILENAME$document_root$fastcgi_script_name;fastcgi_paramHTTPS从;}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检查代码默认执行此操作)。
如果您的web目录中有其他需要执行的PHP文件,请确保将它们包含在位置
块以上。