配置一个Web服务器

编辑该页面

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

这个页面的更新版本Symfob娱乐下载ony 6.2(当前的稳定版本)。

配置一个Web服务器

Symfony应用程序开发的首选方法是使用ob娱乐下载ob娱乐下载Symfony本地Web服务器

然而,在生产环境中运行应用程序时,您将需要使用一个web服务器平台。本文描述了几种方式使用Symfony Apache或Nginx。ob娱乐下载

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

公共目录的所有应用程序的公共和静态文件,包括图像、样式表和JavaScript文件。这也是前端控制器(index . php)的生活。

公共目录作为文档根在配置您的web服务器。在下面的例子中,公共/将文档根目录。这个目录是/var/www/project/public/

如果你的托管提供商需要你改变公共/(如目录到另一个位置。public_html /)确保你覆盖公共/目录的位置

添加重写规则

最简单的方法是安装apacheob娱乐下载Symfony包通过执行下面的命令:

1
美元作曲家需要symfony / apob娱乐下载ache-pack

这包安装. htaccess文件公共/目录包含重写规则需要Symfony应用程序服务。ob娱乐下载

在生产服务器上,你应该移动. htaccess规则为主要的Apache配置文件来提高性能。为此,复制. htaccess内的内容<目录>Symfony应用程序相关的配置ob娱乐下载公共/目录(和替换AllowOverride所有通过AllowOverride没有):

1 2 3 4 5 6 7 8 9 10
< VirtualHost *: 80 >#……DocumentRoot/var/www/project/public<目录/var/www/project/public >AllowOverride没有一个# . htaccess副本内容< /目录>< /虚拟主机>

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/public<目录/var/www/project/public >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/publicDirectoryIndex/ index . php<目录/var/www/project/public >AllowOverride没有一个订单允许,拒绝允许所有FallbackResource/ index . php< /目录>#取消注释以下行如果你安装资产作为符号链接#或遇到问题时编译/ Sass / CoffeeScript资产少# <目录/var/www/project ># FollowSymlinks选项# < /目录>#选择禁用的后备资源资产目录#这将允许Apache文件时返回一个404错误#没有找到而不是把请求传递给Symfonyob娱乐下载<目录/var/www/project/public/bundles >FallbackResource禁用< /目录>ErrorLog/var/log/apache2/project_error.logCustomLog/var/log/apache2/project_access。日志的总和#选择设置环境变量的值在应用程序中使用# SetEnv APP_ENV刺激# SetEnv APP_SECRET < app-secret-id ># SetEnv DATABASE_URL“mysql: / / db_user: db_pass@host: 3306 / db_name”< /虚拟主机>

谨慎

使用FallbackResource由于一个错误在Apache 2.4.25或更高,这是固定在释放导致根/挂。

提示

如果您使用的是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/public >需要所有授予#……< /目录>

高级的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 /项目/公共/ 1美元#如果你的子路径上运行Symfonyob娱乐下载应用程序文档根#正则表达式必须相应的改变:# ProxyPassMatch ^ / path-to-app / (. * \。php (/ . *) ?) $ fcgi: / / 127.0.0.1:9000 / var / www /项目/公共/ 1美元DocumentRoot/var/www/project/public<目录/var/www/project/public >#启用. 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/public<目录/var/www/project/public >#启用. 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
服务器{server_namedomain.tldwww.domain.tld;/var/www/project/public;位置/ {#试图直接提供文件,回退到index . phptry_files美元uri/ index . php美元is_args美元arg游戏;}#选择禁用回落到PHP脚本的资产目录;# nginx将返回一个404错误当文件没有找到,而不是通过#请求Symfony(可以ob娱乐下载提高性能,但是Symfony的404页不显示){#位置/包# try_files uri = 404美元;#}位置~ ^ /索引\。php (/ | $){fastcgi_passunix: / var /运行/ php / php7.2-fpm.sock;fastcgi_split_path_info^ (. + \。php)(/ . *)美元;包括fastcgi_params;#选择设置环境变量的值在应用程序中使用# fastcgi_param APP_ENV刺激;# fastcgi_param APP_SECRET < app-secret-id >;# fastcgi_param DATABASE_URL“mysql: / / db_user: db_pass@host: 3306 / db_name”;#当你使用符号链接,链接的文档根#当前版本的应用程序,您应该通过真实的#应用程序路径的路径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/index.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;}

提示

如果你使用NGINX单元,看看官方的文章如何使用NGINX单元ob娱乐下载运行Symfony应用程序

请注意

根据您的PHP-FPM配置,fastcgi_pass也可以fastcgi_pass 127.0.0.1:9000

提示

这个执行只有index . php在公共目录。所有其他文件结束”。php”将被拒绝。

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

谨慎

在部署到生产环境之后,确保你不能访问index . php脚本(即。http://example.com/index.php)。

请注意

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

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

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