繁体   English   中英

外部环境上的Symfony内置Web服务器

[英]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服务器,例如ApacheNginx

我将在此处基于Debian的(Ubuntu)系统上共享apache的默认设置,并详细说明一些常见的陷阱。

  1. 安装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根目录。 (如果您尚未安装它。)

  2. 配置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;

  3. 配置Apache( server:run的生产版本server:run

    克隆您的项目或将其上传到/var/www/html

    编辑/etc/apache2/sites-enabled/000-default.conf并更改以下行:

    DocumentRoot /var/www/htmlDocumentRoot /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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM