Django用Apache和mod wsgi部署

2021-09-29 09:08:33 字數 3165 閱讀 9893

最近寫了乙個djangowindows上執行,但是用的vbs命令,導致在後台執行的時候,必須使用者登入才可以執行,還有就是登入之後,有其他程序可能被乾掉。

set ws = createobject("wscript.shell") 

ws.run "cmd /c d:\xxd\run.bat",vbhide

` bat 內容

c:\python37\python3.exe manage.py runserver 0.0.0.0:8000 >> console.log

第二種建立task的方式,也是只能是使用者登入後才可以,不是service級別的,不能開機就執行。

第三種就是用sc建立服務來執行,不過這個需要檔案是程式必須是二進位制的可執行程式,這就排除了指令碼語言和虛擬機器語言;其次,程式必須按系統服務的格式編寫,編寫過程繁瑣,可以參考下面的連線:

不過這個有現成的輪子可以拿來用,就用指令碼語言、python/bat等可以直接用,他的名字就是easyservice。但是今天要講的不是這個,是用apache和mod_wsgi來部署django。

後面可以從windows遷移到linux也可以執行的話,用apache httpd來執行,是非常不錯的

環境準備

python3.7

mysql5~8

還有apache -httpd

mod_wsgi

保證python和apache都是統一的,都是32位或者都是64位。下面是我的pip requirement list

asn1crypto==0.24.0

cffi==1.11.5

cryptography==2.3

django==2.0.7

idna==2.7

mod-wsgi==4.5.24+ap24vc14

pip==19.3.1

pycparser==2.18

pymysql==0.9.2

pytz==2018.5

setuptools==41.6.0

six==1.11.0

wheel==0.31.1

建立工程,搭建mysql環境,以及怎麼啟動。可以參考

重點是講下標題的用 apache和mod_wsgi來部署django。

什麼是mod_wsgi

安裝apahce, 並設定乙個環境變數

key: mod_wsgi_apache_rootdir

value: c:\wamp64\bin\apache\apache\

建立乙個virtualhost啟動檔案,根據自己的修改工程名字和路徑

import os

import sys

import site

# add the site-packages of the chosen virtualenv to work with

site.addsitedir(

'c:/python37/lib/site-packages'

)'d:/xxd/assetlog'

)'d:/xxd/assetlog/assetlog'

)os.environ[

'django_settings_module']=

'assetlog.settings'

os.environ.setdefault(

"django_settings_module"

,"assetlog.settings"

))

安裝mod_wdgi
pip3 install mod_wsgi

或者直接用pip3 install whl檔案

pip3 install mod_wsgi-4.5.24+ap24vc14-cp37-cp37m-win_amd64.whl

配置apache和mod_wsgi

檢視apache配置資訊mod_wsgi-express module-config, 如果執行mod_wsgi-express失敗,在python安裝目錄裡面找c:\python37\scripts,我的在這個目錄下。

loadfile "c:/python37/python37.dll"

loadmodule wsgi_module "c:/python37/lib/site-packages/mod_wsgi/server/mod_wsgi.cp37-win32.pyd"

wsgipythonhome "c:/python37"

把這個資訊追加到apache配置檔案httpd.conf的最後

最後在配置檔案

下面配置apache虛擬主機,如果有多個django工程,可以新增多個。配置檔案在conf\extra\httpd_vhosts.conf裡面

servername localhost 

wsgipassauthorization on

errorlog "logs/asset.error.log"

customlog "logs/asset.access.log" combined

wsgiscriptalias / "d:/xxd/assetlog/assetlog/wsgi_win.py"

require all granted

alias /static "d:/xxd/assetlog/static"

require all granted

用apache2部署Django應用

環境要求 ubuntu14.04及以上,python3.4及以上 檢視系統版本 cat etc issue python2可能導致importerror no module named django錯誤 檢視python版本 python version 一般ubuntu系統自帶python,在 u...

Apache執行Django專案

雖然,在django專案中,內建了web伺服器。利用manage.py runserver即可執行。但是,當專案規模一旦加大,內建的伺服器顯然是不能夠滿足實際需要的。需要利用apache伺服器。然後,再在專案中新建django.wsgi檔案,寫入 有些引數自己根據實際情況修改 import os,s...

apache下部署django應用

環境 win server 2003 版本 apache2.2 django1.3 python2.7 mod wsgi.so 首先 安裝apache2.2 python2.7 django1.3 把mod wsgi.so拷貝到 apache目錄下的 modules 下。開啟 httpd.conf檔...