在AWS开发环境中为Multimles Virtualmost for Symfony3项目

时间:2016-07-25 15:46:06

标签: apache amazon-web-services amazon-ec2 virtualhost symfony

我们遇到访问多个Symfony3项目的问题,这些项目位于不同的文件夹中,并且针对相同的IP地址但在EC2上的不同端口中,例如:

PROJECT1:

  • 52.1.1.1:8080/login
  • /无功/网络/ HTML /项目/ PROJECT1 /

project2:

  • 52.1.1.1:8181/login
  • /无功/网络/ HTML /项目/项目2 /

发生在输入 项目1 (52.1.1.1:8080)时,它会正确显示,但之后访问 项目2 < / em> (52.1.1.1:8181),这失败了,奇怪的是从 Project 1 部署信息。

在另一种情况下,当重新启动apache服务并输入 Project2 (52.1.1.1:8181)时,所有内容都会正确显示,但如果输入 Project2 后,我们输入项目1 (52.1.1.1:8080),显示来自 Project2 的信息,而不是项目1 的信息。

端口 8080 8181 已打开。

服务器上的Apache配置如下:

Listen 8181
<VirtualHost *:8181>
    DocumentRoot    "/var/www/html/projects/project1/web"
    DirectoryIndex  app.php
    <Directory "/var/www/html/projects/project1/web">
        Require all granted
        Order allow,deny
        Allow from All    
        <IfModule mod_rewrite.c>
            Options -MultiViews
            RewriteEngine On
            RewriteCond %{REQUEST_FILENAME} !-f
            RewriteRule ^(.*)$ app.php [QSA,L]
        </IfModule>
    </Directory>
     <Directory /var/www/html/projects/project1>
           Options FollowSymlinks  
    </Directory>
    <Directory /var/www/html/projects/project1/web/bundles>
      <IfModule mod_rewrite.c>
       RewriteEngine Off
      </IfModule>
    </Directory>
    CustomLog  /var/www/html/projects/project1/var/logs/reg-access.log combined
    ErrorLog   /var/www/html/projects/project1/var/logs/reg.error.log
</VirtualHost>

Listen 8080
<VirtualHost *:8080>
    DocumentRoot    "/var/www/html/projects/project2/web"
    DirectoryIndex  app.php
    <Directory "/var/www/html/projects/project2/web">
        Require all granted
        Order allow,deny
        Allow from All    
        <IfModule mod_rewrite.c>
            Options -MultiViews
            RewriteEngine On
            RewriteCond %{REQUEST_FILENAME} !-f
            RewriteRule ^(.*)$ app.php [QSA,L]
        </IfModule>
    </Directory>
    <Directory /var/www/html/projects/project2>
           Options FollowSymlinks
    </Directory>
    <Directory /var/www/html/projects/project2/web/bundles>
      <IfModule mod_rewrite.c>
       RewriteEngine Off
      </IfModule>
    </Directory>
    CustomLog  /var/www/html/projects/project2/var/logs/reg-rm.log combined
    ErrorLog  /var/www/html/projects/project2/var/logs/reg.error.log
</VirtualHost>

关于会发生什么的任何帮助或想法?

已更新

要访问Project 1,请记录以下错误:

[2016-08-17 07:33:12] request.CRITICAL:未捕获PHP异常Symfony \ Component \ Debug \ Exception \ FatalErrorException:“错误:无法重新声明类Doctrine \ Common \ Annotations \ Annotation \ Target”at / var / www / html / projects / project2 /vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation/Target.php第31行{“exception”:“[object](Symfony \ Component \ Debug \ Exception \ FatalErrorException(code:0):错误:无法在/ var / www / html / projects / project2 / vendor / doctrine /重新声明类Doctrine \ Common \ Annotations \ Annotation \ Target annotations / lib / Doctrine / Common / Annotations / Annotation / Target.php:31)“} []

“供应商”被另一个项目奇怪地引用

2 个答案:

答案 0 :(得分:0)

我找到了一个临时解决方案,我不得不修改“app / autoload.php”文件

<强>之前

$ loader = require __DIR__.'/../vendor/autoload.php';

<强>后

$ loader = require __DIR__.'/../../project1/vendor/autoload.php';

这一切都运作正常。

但我与Javier Eguiluz沟通,他建议尝试在服务器上安装APC,我安装它,将更改回滚到文件“app / autoload.php”,它运行正常。

答案 1 :(得分:-1)

根据您的评论编辑#2。

Listen 8181
<VirtualHost *:8181>
    Servername project1.com
...

Listen 8080
<VirtualHost *:8080>
    Servername project2.com
     DocumentRoot    "/var/www/html/projects/project2/web"
    DirectoryIndex  app.php

在远程主机上编辑hosts文件以包含上述主机名。 例如,如果您位于远程Windows主机上,请按如下方式编辑文件“c:\ Windows \ System32 \ Drivers \ etc \ hosts”:

52.1.1.1  project1.com
52.1.1.1  project2.com

然后在浏览器中使用:

http://project1.com:8181
http://project2.com:8080

这应该有效。请在downvoting之前先调查。谢谢!