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

Php 将Symfony 2.5.3网站部署到生产服务器,php,symfony,symfony-2.5,Php,Symfony,Symfony 2.5,我一直在开发基于Symfony框架的网站,现在是时候将其部署到live site了。在开发环境中,我们运行命令php app/console server:run,运行网站,但我不确定需要做什么才能让用户在live server上看到网站内容,在我将代码上传到live server之后,我看到的只是Symfony的根目录结构,我已经经历了,我正在抓挠我的头,因为在遵循这些步骤之后,没有什么不同,我仍然看到了目录结构 我确实注意到,当我点击web文件夹时,我看到了该网站,因此我创建了以下.htac

我一直在开发基于Symfony框架的网站,现在是时候将其部署到live site了。在开发环境中,我们运行命令
php app/console server:run
,运行网站,但我不确定需要做什么才能让用户在live server上看到网站内容,在我将代码上传到live server之后,我看到的只是Symfony的根目录结构,我已经经历了,我正在抓挠我的头,因为在遵循这些步骤之后,没有什么不同,我仍然看到了目录结构

我确实注意到,当我点击web文件夹时,我看到了该网站,因此我创建了以下
.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>

我不知道它是如何专业地完成的,因为我不使用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
目录)。你可以在线查询。

我不知道这是如何专业地完成的,因为我不使用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
指向文档根目录


您可以在此处找到有关配置服务器的信息:

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


您可以在此处找到有关配置服务器的信息:

如果您正在运行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
然后跑

  sudo service apache2 restart
 cd /var/www/html

 php app/console cache:clear --env=prod --no-debug

全部完成

如果您正在运行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
然后跑

  sudo service apache2 restart
 cd /var/www/html

 php app/console cache:clear --env=prod --no-debug
全部完成

完成所有操作后,在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>

重新启动发动机
RewriteCond%{HTTP_HOST}^domain.com$[NC,或]
重写cond%{HTTP_HOST}^www.domain.com$
重写cond%{REQUEST_URI}!网/
重写规则(.*)/web/$1[L]
完成所有操作后,在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>

重新启动发动机
RewriteCond%{HTTP_HOST}^domain.com$[NC,或]
重写cond%{HTTP_HOST}^www.domain.com$
重写cond%{REQUEST_URI}!网/
重写规则(.*)/web/$1[L]

谢谢你告诉我你的观点,我已经更新了我的问题,我已经提到,当我添加
.htaccess
文件并重定向到
web
文件夹时,网站正在工作,但是域看起来像
domain.com/web
,所有链接看起来像
domain.com/web/about
等等。该网站位于root
public\u html
中,不在子文件夹中,仅提及它以防我所说的会将symfony放入你的domain.com(地址中没有
web
)我是说symfony附带了一个
web
文件夹,这是人们需要访问的文件夹,以便查看该网站。我知道,我就是这么说的。你可以将symlink放在你的
web
文件夹中,代替你的
www
目录,symfony的工作方式是:domain.com/app.php。但是如果你不明白,请继续阅读官方文档进行配置。感谢你给我的观点,我已经更新了我的问题,我已经提到,当我添加
.htaccess
文件并重定向到
web
文件夹时,该站点正在工作,但域看起来像
domain.com/web
,所有链接看起来像
domain.com/web/about
等等。该网站位于root
public\u html
中,不在子文件夹中,只是为了以防万一,我所说的会将symfony放在your domain.com中(地址中没有
web
),我是说有