将Symfony 2.5.3网站部署到生产服务器


Deploying Symfony 2.5.3 website to production server

我一直在Symfony框架之上的开发环境中开发一个网站,现在是时候将其部署到实时网站了,在开发环境中,我们运行命令php app/console server:run来运行网站,但我不确定需要做些什么才能让用户在实时服务器上看到网站内容,在我将代码上传到实时服务器后,我看到的只是Symfony的根目录结构,我已经学习了如何部署Symfony应用程序,我很挠头,因为它还有更多内容,因为在遵循这些步骤后,没有任何区别,我仍然看到目录结构。

我确实注意到,当我点击网络文件夹时,我看到了网站,所以我创建了以下.htaccess文件,它可以工作,但URL看起来像www.domain.com/web,我怎么能让它成为www.domain.com

<IfModule mod_rewrite.c>
RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ web/$1 [QSA,L]
</IfModule>

如果我能在这里得到一些帮助,如果这对我尝试使用Apache在基于Linux的服务器上部署有所帮助,我将不胜感激。

解决方案在你的.htaccess文件中添加以下内容,它就会起作用,因为这解决了我的问题,请记住清除你的浏览器缓存以及

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^domain.com$ [NC,OR]
RewriteCond %{HTTP_HOST} ^www.domain.com$
RewriteCond %{REQUEST_URI} !web/
RewriteRule (.*) /web/$1 [L]
</IfModule>

如果您正在运行ubuntu,请执行以下

  sudo nano /etc/apache2/sites-enabled/000-default.conf

将文档根目录更改为并保存

  DocumentRoot /var/www/html/web

然后运行

  sudo service apache2 restart

然后运行

 cd /var/www/html
 php app/console cache:clear --env=prod --no-debug

全部完成

我不知道它是如何专业地完成的,因为我不使用symfony,但我会告诉你我在Linux上测试时是如何做到的。

假设您的www目录位于/home/user/www/中(这并不重要)。我会把整个symfony目录(带有所有目录结构)放在其他目录中(比如/home/user/applications/my-symfony-webpage——最后一个是带有symfony文件结构的目录)。

要使其工作,您需要做的最后一件事是创建一个符号链接,该链接将从/home/user/www/直接指向/home/user/applications/my-symfony-webpage/web

可以使用以下命令完成:ln -s /home/user/applications/my-symfony-webpage/web /home/user/www/(如果只是用于安装symfony,我认为您需要首先删除www目录)。

这是我的解决方案,我怀疑这是唯一的,可能不是最好的。我认为您可以使用apache创建重定向,将一些域定向到文件结构中的某个目录(当然,在您的情况下是web目录)。你可以在网上查。

您必须将Apache配置为将项目文件夹web指向文档根目录。

您可以在此处找到有关配置服务器的信息:配置Web服务器(The Symfony CookBook)

在完成了所有如何部署Symfony应用程序之后,在Symfony的应用程序根目录中创建.htaccess文件并在其中添加以下代码,这就是解决我问题的原因。

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^domain.com$ [NC,OR]
RewriteCond %{HTTP_HOST} ^www.domain.com$
RewriteCond %{REQUEST_URI} !web/
RewriteRule (.*) /web/$1 [L]
</IfModule>