Apache-2.2

如何讓 Apache 將多個域路由到多個 Django 項目?

  • March 13, 2019

所以我將從解釋我的目標開始。我有多個域,我將它們路由到伺服器上的一個簡單 IP 地址。我希望 Apache 將每個域路由到wsgi.py其 Django 項目中的適當文件。似乎官方文件是為每台伺服器處理一個域而編寫的。如果您想查看他們的文件,他們就在這裡。我還想指出,我真的不想使用 Django 站點框架,因為它似乎不適合我的需要。

所以我會告訴你我一直在嘗試什麼。我把它放在sites-available/000-default.conf文件中。

<VirtualHost *:80>
   ServerName www.foo.com
   ServerAlias foo.com

   Alias /media/ /path/to/foo.com/media/
   Alias /static/ /path/to/foo.com/static/

   <Directory /path/to/foo.com/static>
       Require all granted
   </Directory>

   <Directory /path/to/foo.com/media>
       Require all granted
   </Directory>

   WSGIScriptAlias / /path/to/foo.com/foo/wsgi.py

   <Directory /path/to/foo.com/foo>
       <Files wsgi.py>
           Require all granted
       </Files>
   </Directory>
</VirtualHost>
<VirtualHost *:80>
   ServerName www.foo2.com
   ServerAlias foo2.com

   Alias /media/ /path/to/foo2.com/media/
   Alias /static/ /path/to/foo2.com/static/

   <Directory /path/to/foo2.com/static>
       Require all granted
   </Directory>

   <Directory /path/to/foo2.com/media>
       Require all granted
   </Directory>

   WSGIScriptAlias / /path/to/foo2.com/foo/wsgi.py

   <Directory /path/to/foo2.com/foo2>
       <Files wsgi.py>
           Require all granted
       </Files>
   </Directory>
</VirtualHost>

奇怪的是,兩個網站都沒有載入。我剛得到一個 Apache 只是為我的空文件索引頁面提供服務。請注意,我沒有WSGIPythonPath /path/to/foo2.com/包括在內。包含它時出現錯誤。而且我不完全確定它需要。

我也做了。

  • apache2.conf文件中設置一個 ServerName。
  • 修改wsgi.py文件以處理多個站點。
  • 我還嘗試在/etc/hosts文件中設置我的 IP。

所以這主要是全部。我在整個網際網路上進行了搜尋,但找不到任何最新的解決方案。如果您知道解決此問題的方法,請告訴我。如果可能,請嘗試在您的答案中包含程式碼。

PS。我正在使用 python 2.7 在 Ubuntu Server 14.04 中執行它。

不要編輯000-default.conf。在 Ubuntu 中創建站點的正確方法是在目錄/etc/apache2/sites-available目錄中創建一個新文件,其中包含該特定站點的所有特殊內容。對於您的兩個站點,您需要創建兩個文件,foo.com並且foo2.com. 將相關<virtualhost *:80> ... </virtualhost>部分放在各自的文件中。

接下來,使用命令啟用每個站點,該命令會在以下位置a2ensite創建指向它的符號連結/etc/apache2/sites-enabled

# a2ensite foo.com
# a2ensite foo2.com

我在您的設置中找不到任何問題,但我懷疑您沒有啟用 wsgi 模組:

# a2enmod wsgi

引用自:https://serverfault.com/questions/682218