我使用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';
将otuyh
使用密码创建您的用户password
。
mysql> CREATE DATABASE otuyh_app;
将创建您的应用程序需要运行的数据库。
mysql> GRANT ALL PRIVILEGES ON otuyh_app.* TO 'otuyh'@'localhost';
mysql> FLUSH PRIVILEGES;
配置Apache(的生产版本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
。
确保更改了config:后重新启动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 {} \
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句