最近寫了乙個django
在windows
上執行,但是用的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檔...