如何在单个 LAMP 实例上运行多个 PHP 应用程序

如何在单个 LAMP 实例上运行多个 PHP 应用程序

我正在使用 LAMP 设置在一个 EC2 实例上运行一个 PHP 应用程序。我已将我的域指向弹性 IP。因此,目前如果我浏览到弹性 IP 或域,它会直接打开我客户的网站,该网站位于通常的 var/www/folder1 中。现在他要求我在同一个实例上设置 CRM。我创建了一个 folder2 并将所有必需的文件放在其中。我只希望 CRM 在 elasticip/folder2 (54.244.213.43/folder2) 上打开。现在由于我现有应用程序中的路由,上述 URL 导致 404。我可以做我需要的事情吗?

另一种方法可能是添加另一个弹性 IP,但我的虚拟主机设置没有显示有关弹性 IP 的任何信息,那么如何将新的弹性 IP 指向另一个文件夹(folder2)?

我当前的VirtualHost设置如下:

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/folder1
    <Directory /var/www/folder1/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
        <IfModule mod_rewrite.c>
            RewriteEngine On
            RewriteCond %{REQUEST_FILENAME} !-f
            RewriteRule ^(.*)$ /index.php [QSA,L]
        </IfModule>
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

我对 VirtualHost 设置不是很在行,所以我不知道如何更改这些设置以确保 crm 应用程序也能正常运行。如果可能的话,我想使用现有 IP 来完成此操作,否则任何其他方法都可以。

谢谢!

答案1

如果您以后想要分配不同的域名,只需添加另一个虚拟主机条目:

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/folder2
    <Directory /var/www/folder2>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
        <IfModule mod_rewrite.c>
            RewriteEngine On
            RewriteCond %{REQUEST_FILENAME} !-f
            RewriteRule ^(.*)$ /index.php [QSA,L]
        </IfModule>
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined 
</VirtualHost>

或者

如果您只是想像访问 example.com/folder 那样访问它,那么只需在目录 /var/www/folder1/ 内添加名为 folder2 的文件夹即可。

答案2

解决您的问题的简单方法是将文件夹 /var/www/folder2 移动到 folder1 内,即它应该像

/var/www/文件夹1/文件夹2

当您通过 url 浏览子文件夹时它就会起作用。

相关内容