Php Symfony在外部环境中内置Web服务器
我使用FOSRestBundle在本地配置了一个web服务,它工作得非常好。我需要写的唯一一件事就是开始我的服务Php Symfony在外部环境中内置Web服务器,php,symfony,fosrestbundle,Php,Symfony,Fosrestbundle,我使用FOSRestBundle在本地配置了一个web服务,它工作得非常好。我需要写的唯一一件事就是开始我的服务 php bin/console server:run xxx.xxx.x.xx:port 一切都准备好了 但后来我阅读了一些关于symfony web服务器的文档,这些信息让我感到困惑: 内置web服务器将在受控环境中运行 环境它不是为在公共网络上使用而设计的 我该如何在我的云环境中使用它?如果我想公开,我应该如何在不使用内置服务器的情况下启动REST服务 什么与“server:
php bin/console server:run xxx.xxx.x.xx:port
一切都准备好了
但后来我阅读了一些关于symfony web服务器的文档,这些信息让我感到困惑:
内置web服务器将在受控环境中运行
环境它不是为在公共网络上使用而设计的
我该如何在我的云环境中使用它?如果我想公开,我应该如何在不使用内置服务器的情况下启动REST服务
什么与“server:run”命令等效?如果我只是把代码放在那里,它将不起作用。我需要为我的REST API启动服务器。如前所述,内置Web服务器仅用于开发。 它速度慢,容易受到各种攻击。 您可以像使用Web服务器的任何其他应用程序一样运行您的服务。 Symfony网站上有一个指南,向您展示了如何做到这一点 或者,如果您具有云服务器的root访问权限,则可以配置Web服务器
如前所述,内置Web服务器仅用于开发。 它速度慢,容易受到各种攻击。 您可以像使用Web服务器的任何其他应用程序一样运行您的服务。 Symfony网站上有一个指南,向您展示了如何做到这一点 或者,如果您具有云服务器的root访问权限,则可以配置Web服务器
在生产环境中,
server:run
命令的等效值要复杂一些。面向公众的机器上的web服务器比本地开发服务器承担更多的责任,因此需要更多的配置
出于生产(甚至登台)目的,请使用生产就绪的web服务器,如或
我将在这里分享一个基于Debian(Ubuntu)系统上的apache默认设置,并详细介绍一些要避免的常见陷阱
ssh
安装到您的计算机中,并运行此命令以确保apache、php、mysql等都已安装
首先,从存储库中获取最新数据:
sudo-apt-get-update
需要在其上运行symfony的指示灯组件:
sudo apt get安装apache2 mysql服务器libapache2 mod auth mysql php5 mysql php5 libapache2-mod-php5 php5 mcrypt
如果根MySQL通道要求您提供一个,请确保将其存储下来。(如果您还没有安装它。)sudomysql\u install\u db
初始化mysql的系统/帮助表等
sudo/usr/bin/mysql\u secure\u安装
要删除测试表,请重新加载特权表
跳入MySQL shell,为你的应用程序创建一个用户&db
mysql-u root-p
,并在提示时提供您的root pw
mysql>创建由“密码”标识的用户“otuyh”@“localhost”
将使用密码创建您的otuyh
用户password
mysql>创建数据库otuyh\u应用程序
将创建应用程序运行所需的数据库
mysql>将otuyh_app.*上的所有权限授予“otuyh”@“localhost”代码>
mysql>刷新权限代码>
server:run
)
将项目克隆或上载到/var/www/html
编辑/etc/apache2/sites enabled/000 default.conf
并更改行:
DocumentRoot/var/www/html
至DocumentRoot/var/www/html/web
这将告诉apache哪个目录为来自应用程序web文件夹的请求提供服务
另外,将行ServerName white macbook
改为ServerName example.com
,其中example.com是指向服务器的域名
最后,在其中添加一个AllowOverride All
行,明确声明.htaccess
文件也可以为web服务器添加指令
在web/
文件夹中放置一个.htaccess文件,如下所示:
<IfModule mod_rewrite.c>
Options +FollowSymlinks
RewriteEngine On
RewriteBase /
# Explicitly disable rewriting for front controllers
RewriteRule ^app_dev.php - [L]
RewriteCond %{REQUEST_FILENAME} !-f
# Change below before deploying to production
RewriteRule ^(.*)$ app_dev.php [QSA,L]
</IfModule>
选项+FollowSymlinks
重新启动发动机
重写基/
#显式禁用前控制器的重写
重写规则^app_dev.php-[L]
重写cond%{REQUEST_FILENAME}-F
#在部署到生产环境之前进行以下更改
重写规则^(.*)$app_dev.php[QSA,L]
当您准备将环境更改为生产环境时,将app\u dev
更改为仅app
确保在更改apache2服务的配置后重新启动它:sudo服务重新启动apache2
运行常规sf2模式创建、composer安装等
然后,确保提供文件的apache用户确实可以访问这些文件
此外,在运行composer*
或cache:clear
作为提供文件的用户之外的用户之后,写入权限可能会混淆,而www-data
将需要此权限来写入日志和获取缓存文件。快速解决方案:
chown-R您的unix用户:www-data./app
find./app/cache-type d-exec chmod 775{}代码>
find./app/logs-d型-exec chmod 775{}\代码>
find./app/cache-type f-exec chmod 664{}\
find./app/logs-type f-exec chmod 664{}\
在生产环境中,
server:run
命令的等效值要复杂一些。面向公众的机器上的web服务器比本地开发服务器承担更多的责任,因此需要更多的配置
出于生产(甚至登台)目的,请使用生产就绪的web服务器,如或
我将在这里分享一个基于Debian(Ubuntu)系统上的apache默认设置,并详细介绍一些相关信息