[英]Symfony Built-in Web Server on an external environment
我使用FOSRestBundle在本地配置了Web服务,并且运行良好。 我唯一需要写的开始我的服务的就是
php bin/console server:run xxx.xxx.x.xx:port
一切都准备好了。
但是后来我在阅读有关symfony Web服务器的一些文档,这些信息使我感到困惑:
内置的Web服务器旨在在受控环境中运行。 它不适合在公共网络上使用。
我应该如何在云环境中使用它? 如果我想公开此内容,我应该如何在不使用此内置服务器的情况下启动REST服务?
什么等效于“ server:run”命令? 如果我只是将代码放在此处,它将无法正常工作。 我需要为我的REST API启动服务器。
在生产环境中, server:run
命令的等效性要复杂得多。 面向公众的计算机上的Web服务器比本地开发服务器负有更多责任,因此需要更多的配置。
为了生产(或什至登台),请使用可用于生产的Web服务器,例如Apache或Nginx 。
我将在此处基于Debian的(Ubuntu)系统上共享apache的默认设置,并详细说明一些常见的陷阱。
安装LAMP组件
ssh
进入您的计算机,并运行此命令以确保已安装apache,php,mysql等!
首先,从存储库中获取最新数据:
sudo apt-get update
运行symfony所需的LAMP组件:
sudo apt-get install apache2 mysql-server libapache2-mod-auth-mysql php5-mysql php5 libapache2-mod-php5 php5-mcrypt
如果它要求您提供密码,请确保存储MySQL根目录。 (如果您尚未安装它。)
配置MySQL
sudo mysql_install_db
初始化MySQL的系统/帮助表等。
sudo /usr/bin/mysql_secure_installation
删除测试表,重新加载特权表。
跳入MySQL Shell并为您的应用程序创建一个用户和数据库。
mysql -u root -p
,并在出现提示时提供您的root pw。
mysql> CREATE USER 'otuyh'@'localhost' IDENTIFIED BY 'password';
将使用密码password
创建您的otuyh
用户。
mysql> CREATE DATABASE otuyh_app;
将创建您的应用程序需要运行的数据库。
mysql> GRANT ALL PRIVILEGES ON otuyh_app.* TO 'otuyh'@'localhost';
mysql> FLUSH PRIVILEGES;
配置Apache( server:run
的生产版本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服务器添加指令。
将.htaccess文件拖放到您的web/
文件夹中,如下所示:
<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>
当您准备将环境更改为生产环境时, app_dev
更改为just app
。
确保更改了它的配置后重新启动apache2服务: sudo service restart apache2
。
运行常规的sf2模式创建,composer安装等。
然后,确保提供文件的apache用户确实有权访问它们!
此外,在以非服务文件的用户身份运行composer *
或cache:clear
后,写入权限可能会混淆,并且www-data
将需要此特权才能写入日志并获取缓存的文件。 快速解决方案:
chown -R your-unix-user:www-data ./app
find ./app/cache -type d -exec chmod 775 {} \\;
find ./app/logs; -type d -exec chmod 775 {} \\;
find ./app/cache -type f -exec chmod 664 {} \\
find ./app/logs -type f -exec chmod 664 {} \\
如前所述,内置的Web服务器仅用于开发。 它很慢并且容易受到各种攻击。 您可以像使用Web服务器的任何其他应用程序一样运行服务。 Symfony网站上有一个指南,向您显示如何执行此操作。
http://symfony.com/doc/current/deployment.html
或者,如果您具有对云服务器的根访问权限,则可以配置Web服务器
https://symfony.com/doc/current/setup/web_server_configuration.html
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.