Windows下利用Apache部署多個Django項目


本文默認讀者已經在能Apache中部署了單個項目,有一定經驗,前期准備工作已經完成。

整體流程

1.配置需要監聽的端口

2.開啟虛擬路由並加載文件

3.配置虛擬路由映射文件

4.在Django項目的wsgi.py中添加項目路徑和虛擬環境路徑

5.配置訪問媒體文件的url

6.啟動Apache服務

配置需要監聽的端口

1.打開Apache配置文件(Apache安裝目錄下:conf/httpd.conf)

2.找到#Listen 12.34.56.78:80

3.在下方添加需要監聽的端口,以880,8001為例

Listen 127.0.0.1:8080
Listen 127.0.0.1:8001

若要讓局域網內其他用戶可以訪問:

Listen 0.0.0.0:8080
Listen *:8001
# 以上兩種方法均可

開啟虛擬路由

1.找到#LoadModule vhost_alias_module modules/mod_vhost_alias.so,建議直接搜索

2.將行首的#刪除,取消注釋,使其生效

3.找到#Include conf/extra/httpd-vhosts.conf

4.同樣將行首的#刪除,使其生效,包含這個配置文件,接下來我們就是去編輯該文件。

配置項目映射

1.打開httpd-vhosts.conf文件(Apache安裝目錄下conf/extra/httpd-vhosts.conf)

2.打開文件后,文件下面有一些類似下面這樣的配置

<VirtualHost *:80>
ServerName xxxx.example.com
ServerAlias www.xxxx.example.com
...
</VirtualHost>

3.注釋掉原有配置

4.編寫自己的配置進去

第一個服務使用8080端口

第二個服務使用8001端口

# 第一個服務,使用8080端口,這個端口必須是在前面的文件中添加了監聽的端口。
<VirtualHost *:8080>
    # 這里填寫域名,沒有域名隨便填寫即可
    ServerName test1.com
    ServerAlias a.test1.com

    # 項目的wsgi.py文件,注意目錄前有`/`和空格
    WSGIScriptAlias / D:/gxyd/zdhpt/zdhpt/wsgi.py
    <Directory D:/gxyd/zdhpt/zdhpt>
        <Files wsgi.py>
            Require all granted
        </Files>
    </Directory>

    # 靜態文件路徑
    Alias /static D:/gxyd/zdhpt/static
    <Directory D:/gxyd/zdhpt/static>
        AllowOverride None
        Options None
        Require all granted
    </Directory>

    # 項目根路徑,經測試,這個寫到項目所在文件夾或者直接進入文件夾內都可以
    DocumentRoot "D:/gxyd/zdhpt"
    <Directory "D:/gxyd/zdhpt">
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
    </Directory>

    # 錯誤日志記錄文件
    ErrorLog "logs/zdhpt_error.log"
    #訪問的日志記錄文件
    CustomLog "logs/zdhpt_access.log" common
</VirtualHost>

 # 第二個服務,使用8001端口
<VirtualHost *:8001>
    # 域名信息
    ServerName test2.com
    ServerAlias www.test2.com

    # 項目的wsgi.py文件,注意目錄前有`/`和空格
    WSGIScriptAlias / D:/gxyd/bomc_i/bomc_i/wsgi.py
    <Directory D:/gxyd/bomc_i/bomc_i>
        <Files wsgi.py>
            Require all granted
        </Files>
    </Directory>

    # 靜態文件路徑
    Alias /static D:/gxyd/bomc_i/all_static
    <Directory D:/gxyd/bomc_i/all_static>
        AllowOverride None
        Options None
        Require all granted
    </Directory>

    # 項目根路徑,經測試,這個寫到項目所在文件夾或者直接進入文件夾內都可以
    DocumentRoot "D:/gxyd/bomc_i"
    <Directory "D:/gxyd/bomc_i">
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
    </Directory>

    # 錯誤日志記錄文件
    ErrorLog "logs/bomc_i_error.log"
    #訪問的日志記錄文件
    CustomLog "logs/bomc_i_access.log" common
</VirtualHost>

1.打開項目的wsgi.py文件

2.添加四行代碼(項目所在路徑為:D:\gxyd\bomc_i)

import sys

sys.path.append('D:/gxyd/bomc_i')
# 加入本項目的虛擬環境(當兩個django項目使用不同版本時,這可能非常有用)
virtualenv_dir = 'D:/gxyd/bomc_i/venv/Lib/site-packages'  # 虛擬環境python包文件夾
sys.path.insert(0, virtualenv_dir)  # 加入導包路徑

3.完成后的效果

import os

from django.core.wsgi import get_wsgi_application
import sys

sys.path.append('D:/gxyd/bomc_i')
# 加入本項目的虛擬環境(當兩個django項目使用不同版本時,這可能非常有用)
virtualenv_dir = 'D:/gxyd/bomc_i/venv/Lib/site-packages'  # 虛擬環境python包文件夾
sys.path.insert(0, virtualenv_dir)  # 加入導包路徑

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "bomc_i.settings")

application = get_wsgi_application()

4.注意:這里的項目路徑必須寫到項目文件夾,只到包含項目的文件夾是不行的

5.同樣修改另一個項目的wsgi.py文件即可

配置訪問媒體文件的url

1.在測試環境下可以不配,但是部署到生產模式下必須要配置,不然訪問不到媒體文件打開全局路由文件urls.py

2.打開urls.py,添加訪問媒體文件的路由

 3.同樣給另一個項目配置即可 。

啟動Apache

1.按照上面的修改完成后,啟動Apache服務即可

2.如果啟動Apache失敗,則需要使用命令行查看原因,常見由於配置文件寫錯導致的啟動錯誤

 

3.進入Apache目錄下的bin目錄,打開命令行工具,執行httpd.exe -t :

4.根據提示的錯誤信息修改配置文件,再次啟動Apache服務即可

在瀏覽器訪問項目報錯及解決

Apache下配置了兩個Django項目,Apache啟動未報錯

先訪問網站A正常,再訪問網站B失敗。

重啟Apache后,先訪問B正常,再訪問A失敗

大概就是先訪問的網站是可以正常使用的,再訪問的那個就不行。

報錯信息:

 

錯誤是系統庫的問題。

經過一番查找,終於在國外一個技術網站找到了原因:大致意思是多次導入導致的,因為有兩個項目,某個文件被系統多次加載運行導致報錯。

解決方法:

找到圖中報錯的那個文件,注釋斷言語句

 

 將4句斷言語句全部注釋,再在上面的判斷中添加pass即可完美解決問題。

 

補充一下

如果發現captcha驗證碼不顯示的問題,可以嘗試更改Pillow模塊的版本

 

 

參考:

https://blog.csdn.net/yueguangMaNong/article/details/99588531

https://blog.csdn.net/yueguangMaNong/article/details/102780239

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM