如何讓 Apache 將多個域路由到多個 Django 項目?
所以我將從解釋我的目標開始。我有多個域,我將它們路由到伺服器上的一個簡單 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