配置一个Web服务器

编辑该页面

警告:你浏览的文档欧宝官网下载appob娱乐下载Symfony 2.7,不再维护。

这个页面的更新版本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目录的所有应用程序的公共和静态文件,包括图像、样式表和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 / CoffeeScript资产少# <目录/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 28 29 30 31 32 33 34 35
< 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 / CoffeeScript资产少# <目录/var/www/project ># FollowSymlinks选项# < /目录>#选择禁用的RewriteEngine资产目录#这将使apache 404年文件简单地回答#没有找到而不是请求传递到完整的symfony堆栈ob娱乐下载<目录/var/www/project/web/bundles >< IfModule mod_rewrite.c >RewriteEngine< / IfModule >< /目录>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

利用PHP-FPM与Apache,首先必须确保FastCGI程序经理php-fpm二进制和Apache的FastCGI模块安装(例如,在一个基于Debian系统安装libapache2-mod-fastcgiphp7.1-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/php/php7.1-fpm.sock;或监听TCP套接字=127.00.1:9000年

用mod_proxy_fcgi Apache 2.4

如果您正在运行Apache 2.4,您可以轻松地使用mod_proxy_fcgi通过PHP-FPM传入的请求。配置PHP-FPM监听TCP或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 40 41
< 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#为Unix socket, Apache 2.4.10或更高# SetHandler代理:unix: /道路/ / fpm.sock | fcgi: / /假< / 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 / CoffeeScript资产少# <目录/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.tldAddHandlerphp7-fcgi。php行动php7-fcgi / php7-fcgi别名/ php7-fcgi /usr/lib/cgi-bin/php7-fcgiFastCgiExternalServer/usr/lib/cgi-bin/php7-fcgi主机127.0.0.1:9000 -pass-header授权DocumentRoot/var/www/project/web<目录/var/www/project/web >#启用. htaccess重写AllowOverride所有订单允许,拒绝允许所有< /目录>#取消注释以下行如果你安装资产作为符号链接#或遇到问题时编译/ Sass / CoffeeScript资产少# <目录/var/www/project ># FollowSymlinks选项# < /目录>ErrorLog/var/log/apache2/project_error.logCustomLog/var/log/apache2/project_access。日志的总和< /虚拟主机>

如果你喜欢使用Unix socket,你必须使用套接字选项:

1
FastCgiExternalServer/usr/lib/cgi-bin/php7-fcgi插座/var/run/php/php7.1-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 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
服务器{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 /运行/ php / php7.1-fpm.sock;fastcgi_split_path_info^ (. + \。php)(/ . *)美元;包括fastcgi_params;#当你使用符号链接,链接的文档根#当前版本的应用程序,您应该通过真实的#应用程序路径的路径PHP的符号链接# FPM。#否则,PHP的OPcache可能不正确地检测变化#你的PHP文件(参见https://github.com/zendtech/ZendOptimizerPlus/issues/126#的更多信息)。fastcgi_paramSCRIPT_FILENAME美元realpath_root美元fastcgi_script_name;fastcgi_paramDOCUMENT_ROOT美元realpath_root;}#刺激位置~ ^ / app \。php (/ | $){fastcgi_passunix: / var /运行/ php / php7.1-fpm.sock;fastcgi_split_path_info^ (. + \。php)(/ . *)美元;包括fastcgi_params;#当你使用符号链接,链接的文档根#当前版本的应用程序,您应该通过真实的#应用程序路径的路径PHP的符号链接# FPM。#否则,PHP的OPcache可能不正确地检测变化#你的PHP文件(参见https://github.com/zendtech/ZendOptimizerPlus/issues/126#的更多信息)。fastcgi_paramSCRIPT_FILENAME美元realpath_root美元fastcgi_script_name;fastcgi_paramDOCUMENT_ROOT美元realpath_root;#防止uri,包括前端控制器。这将404:# http://domain.tld/app.php/some-path#删除内部指令允许这样的uri内部;}404 #返回所有其他php文件不匹配的前端控制器#这阻止访问其他php文件你不想被访问。位置~ \。php美元{返回404年;}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目录。所有其他文件结束”。php”将被拒绝。

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

谨慎

在部署到生产环境之后,确保你不能访问app_dev.phpconfig。脚本(即。http://example.com/app_dev.phphttp://example.com/config.php)。如果你可以访问这些,一定要删除DEV从上面的配置部分。

请注意

默认情况下,Symfonob娱乐下载y应用包括几个. htaccess文件配置重定向和防止未经授权的访问一些敏感的目录。这些文件使用Apache时才有用,所以您可以安全地使用Nginx时删除它们。

高级的Nginx配置选项,阅读官方的Nginx的欧宝官网下载app文档

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