【问题标题】:Django and Php Sites on single Apache Server单个 Apache 服务器上的 Django 和 PHP 站点
【发布时间】:2014-02-22 18:09:08
【问题描述】:

我有一个使用 mod_wsgi 在 apache2 上的 ec2 实例 (ubuntu) 上运行的 Django 站点。我把它放在 /var/www/django_project 中。它已启动并运行,没有任何问题。现在我只想在这个 ec2 实例上托管另一个站点(php、mysql)。我尝试配置我的 httpd.conf 并添加了具有适当权限的 php 目录,但我相信由于 mod_wsgi 中的别名设置,任何高于 '/' 的请求都会被 django 占用。

我没有任何域名。我使用机器的 IP(即 w.x.y.z/django_app)访问我的 Django 站点。

如果我错了,请纠正我:因为我没有服务器名称,所以我不能使用虚拟主机在端口 80 上运行两个站点。

我也不介意在不同的端口上运行它们。请建议我在此服务器上托管 php 站点的方法。要配置哪个文件以及如何配置它。

我的 httpd.conf 文件:

Alias /static /var/www/resumerepo/static
<Directory /var/www/resumerepo/static>
order deny,allow
Allow From All
</Directory>

WSGIScriptAlias / /var/www/resumerepo/resumerepo/wsgi.py
WSGIPythonPath  /var/www/resumerepo

<Directory /var/www/resumerepo>
<Files wsgi.py>
Order deny,allow
Allow From All
</Files>

</Directory>

它工作正常,我的应用程序可以访问。但是,如果我把它放在一个虚拟主机中并创建另一个虚拟主机,apache restart 会抛出一个错误,提示 PythonPath 不能在虚拟主机中。

【问题讨论】:

    标签: php python django apache amazon-ec2


    【解决方案1】:

    如果您的 django 项目可以通过您的域(或您的 IP)的根目录访问,那么您将无法轻松做到这一点,例如:http://1.2.3.4 -> 导致您的 django 项目`。

    我认为,一种解决方案可能是将您的 django 项目移动到子目录,例如 http://1.2.3.4/django,并让您的 php 项目也可以在子目录中访问,例如 http://1.2.3.4/php

    或者你可以创建一个新的虚拟主机,监听 8080 端口,例如,为你的 php 项目。这样:

    • http://1.2.3.4 指向你的 django 项目
    • http://1.2.3.4:8080 指向您的 php 项目

    第二个选项可能更容易设置,因为您不必更改 django 项目的配置。

    您的虚拟主机文件可能如下所示:

    <VirtualHost *:8080>
        ServerAdmin contact@yourdomain
        DocumentRoot /var/www/php
    
        <Directory /var/www/php>
            AllowOverride All
            Order allow,deny
            Allow From All
        </Directory>
    
    </VirtualHost>
    

    也许这行不通:根据 Apache 文档,you should not use virtual hosts without ServerName

    【讨论】:

      猜你喜欢
      • 2017-09-22
      • 2015-07-29
      • 2017-09-03
      • 2020-10-23
      • 2014-03-14
      • 1970-01-01
      • 1970-01-01
      • 2013-01-02
      • 2014-03-29
      相关资源
      最近更新 更多