Php 将Symfony 2.5.3网站部署到生产服务器
我一直在开发基于Symfony框架的网站,现在是时候将其部署到live site了。在开发环境中,我们运行命令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
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
等等。该网站位于rootpublic\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
等等。该网站位于rootpublic\u html
中,不在子文件夹中,只是为了以防万一,我所说的会将symfony放在your domain.com中(地址中没有web
),我是说有