apache 一个Django项目中的多个Django应用

ki0zmccv  于 2023-06-24  发布在  Apache
关注(0)|答案(2)|浏览(139)

我在一个django项目(mydjango)中有3个应用程序(app 1,app 2,app 3),每个应用程序都有不同的用途和不同的域(app1.domain.com app2.domain.com app3.domain.com),因为它是一个django项目,我们只有一个manage.py文件。
我试图使用apache 2 web服务器部署这些应用程序,所有这3个应用程序使用相同的virtualenv(使用pyenv)和相同的mysql数据库,具有不同的表。
现在的问题是如何将这3个域指向其特定的应用程序,
谁能提出一个解决方案
我尝试了chatgpt和其他来源/文章建议的一些方法

<VirtualHost *:80>
    ServerName domain1.com
    ServerAlias www.domain1.com
    DocumentRoot /path/to/your/project/<project_name>

    WSGIDaemonProcess domain1.com python-path=/path/to/your/project/<project_name>:/path/to/your/project/<virtualenv_name>/lib/python3.X/site-packages
    WSGIProcessGroup domain1.com
    WSGIScriptAlias / /path/to/your/project/<project_name>/app1/wsgi.py

    <Directory /path/to/your/project/<project_name>>
        Require all granted
    </Directory>
</VirtualHost>

<VirtualHost *:80>
    ServerName domain1.com
    ServerAlias www.domain1.com
    DocumentRoot /path/to/your/project/<project_name>

    WSGIDaemonProcess domain1.com python-path=/path/to/your/project/<project_name>:/path/to/your/project/<virtualenv_name>/lib/python3.X/site-packages
    WSGIProcessGroup domain1.com
    WSGIScriptAlias / /path/to/your/project/<project_name>/app2/wsgi.py

    <Directory /path/to/your/project/<project_name>>
        Require all granted
    </Directory>
</VirtualHost>

<VirtualHost *:80>
    ServerName domain1.com
    ServerAlias www.domain1.com
    DocumentRoot /path/to/your/project/<project_name>

    WSGIDaemonProcess domain1.com python-path=/path/to/your/project/<project_name>:/path/to/your/project/<virtualenv_name>/lib/python3.X/site-packages
    WSGIProcessGroup domain1.com
    WSGIScriptAlias / /path/to/your/project/<project_name>/app3/wsgi.py

    <Directory /path/to/your/project/<project_name>>
        Require all granted
    </Directory>
</VirtualHost>

这里建议的配置显示了3个应用程序的3个不同的“wsgi.py”文件,但是mydjango项目只创建了一个wsgi.py

现在我应该如何修改Apache配置。
谁能提出一些解决办法。
先谢谢你了。

hwamh0ep

hwamh0ep1#

我建议你创建其他项目,因为如果它们的工作方式不同,你只希望它们在不同的域中,那么我建议你创建不同的项目,因为Django在相同的URL下响应,改变的是端点。创建3个项目,并在每个项目中应用您将使用的模型,然后是您将使用的URL,您将拥有3个wsgi.py文件,并且您将能够将它们单独链接到每个域。

vuktfyat

vuktfyat2#

你可以将Django应用程序视为“模块”,而不是实际的独立Web应用程序,你可能应该为想要运行的每个Web应用程序创建一个不同的项目,并使用应用程序在内部组织应用程序的不同元素和工作部分。
你可以使用Django的poll app作为一个例子来说明在Django项目中如何使用app。
https://docs.djangoproject.com/en/4.2/intro/tutorial01/#creating-the-polls-app

相关问题