簡體   English   中英

如何在Windows中的apache上部署多個django應用?

[英]How to deploy multiple django apps on apache in Windows?

我想在 Windows 上的 apache 上部署多個 django 應用程序,但只知道如何部署一個。

覆蓋 Wamp 服務器的本地主機我可以毫無問題地部署應用程序,但我需要部署更多但不知道如何部署。 我有 sehen 虛擬主機,認為很好,但不知道如何配置它們。 任何人都知道我該怎么做? 提前致謝。

使用虛擬主機 (vhosts) 可以使用 Apache 托管嚴重的 django 應用程序

重要的是要關心:

  1. 在配置 Apache 期間,我建議從命令行以“httpd.exe”啟動 apache,就像在 XAMPP 或 WAMP 中一樣,您不會在 error.log 文件中看到一些初始啟動錯誤消息。

  2. 你只能使用 1 python 版本,即使在每個虛擬主機的不同 virt.env 中,因為 apache 模塊 mod_wsgi 編譯需要適合它,並在 apache 啟動時加載一次

httpd.conf 中的類似內容(由於您正在運行單個應用程序配置,因此您應該已經准備就緒):

LoadFile "c:/.../python/python38/python38.dll"
LoadModule wsgi_module "c:/..../mod_wsgi.cp38-win_amd64.pyd"
  1. 如何設置 virt.env 和 app 文件夾的路徑:

    對於 1 台主機,您可以通過將 WSGIPythonHome 和 WSGIPythonPath 設置為指向您在 httpd.conf 中的應用程序文件夾來指向您的 virt.env:

WSGIPythonHome "d:/..../django_project/env_folder"
WSGIPythonPath "d:/..../django_project/app_name" 

但是:您不能將 WSGIPythonHome/WSGIPythonPath 放在 httpd-vhosts.conf 中的 VirtualHost 聲明中....它會導致錯誤消息

解決方案:動態設置 wsgi.py 中的路徑並從 apache *.conf 中刪除 WSGIPythonHome/WSGIPythonPath:

wsgi.py:
# replacement for WSGIPythonHome "d:/..../django_project/env_folder"
# choose one:
sys.path.append('d:/.../env_folder/lib/site-packages')              # add individual virt.environment packages at the end of sys.path;  global env packages have prio
sys.path.insert(0,'d:/.../env_folder/lib/site-packages')            # add individual virt.environment packages at the beginning of sys.path;  indiv. virt.env packages have prio over global env
    
# replacement   WSGIPythonPath "d:/..../django_project/app_name"    
sys.path.append('d:/.../django_project/app_name')                   # add indiv. app folder to search path      
    
  1. 這是 apache conf 的示例:

(為什么虛擬主機:apache 有一個(奇怪或錯誤的)行為...如果沒有虛擬主機名與請求匹配,那么 apache 將自動將請求分派到配置中的第一個虛擬主機 - 無論哪個服務器名稱在那里定義。這可能會導致混淆,因為調用了完全錯誤的應用程序,並且很可能會從 django 內部彈出錯誤消息,而不表示錯誤發生在 Apache conf 級別。具有簡單索引的虛擬主機.html 和一條錯誤消息可以使這個透明)

httpd-vhost.conf:

<VirtualHost *:80>
     ServerName Dumme_Host
     DocumentRoot "d:/WEBSPACES/Dummy_Host"

     <Directory d:/WEBSPACES/Dummy_Host>
         Require all granted
     </Directory>
</VirtualHost>


<VirtualHost *:80>

     ServerName  xxxx1
     WSGIScriptAlias / "d:/.... /wsgi.py" application-group=app_name1
     Alias /media/ d:/.../media/
     Alias /static/ d:/.../static/

     <Directory d:/.../app_name1>
         Require all granted
     </Directory>


     <Directory d:/.../media>
         Require all granted
     </Directory>

     <Directory d:/.../static>
         Require all granted
     </Directory>

</VirtualHost>


<VirtualHost *:80>

     ServerName  xxxx2
     WSGIScriptAlias / "d:/.... /wsgi.py" application-group=app_name2
     Alias /media/ d:/.../media/
     Alias /static/ d:/.../static/

     <Directory d:/.../app_name2>
         Require all granted
     </Directory>

    .....

</VirtualHost>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM