配置一个Web服务器
编辑该页面警告:你浏览的文档欧宝官网下载appob娱乐下载Symfony 4.3,不再维护。
读这个页面的更新版本Symfob娱乐下载ony 6.2(当前的稳定版本)。
配置一个Web服务器
Symfony应用程序开发的首选方法是使用ob娱乐下载ob娱乐下载Symfony本地Web服务器。
然而,在生产环境中运行应用程序时,您将需要使用一个web服务器平台。本文描述了几种方式使用Symfony Apache或Nginx。ob娱乐下载
当使用Apache,您可以配置PHP作为一个Apache模块或与FastCGI使用PHP FPM。FastCGI也是使用PHP的首选与Nginx。
添加重写规则
最简单的方法是安装apache
ob娱乐下载Symfony包通过执行下面的命令:
1
美元作曲家需要symfony / apob娱乐下载ache-pack
这包安装. htaccess
文件公共/
目录包含重写规则。
提示
性能的改善可以通过移动的重写规则. htaccess
在虚拟主机的文件到您的Apache配置,然后改变AllowOverride所有
来AllowOverride没有
在你的虚拟主机。
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-fastcgi
和php7.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.0。0.1:9000年
用mod_proxy_fcgi Apache 2.4
如果您正在运行Apache 2.4,您可以使用mod_proxy_fcgi
通过PHP-FPM传入的请求。配置PHP-FPM监听TCP或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 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;}
请注意
根据您的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文档。