背景
作為一家“創(chuàng)意+整合+營(yíng)銷”的成都網(wǎng)站建設(shè)機(jī)構(gòu),我們?cè)跇I(yè)內(nèi)良好的客戶口碑。成都創(chuàng)新互聯(lián)提供從前期的網(wǎng)站品牌分析策劃、網(wǎng)站設(shè)計(jì)、網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站制作、創(chuàng)意表現(xiàn)、網(wǎng)頁(yè)制作、系統(tǒng)開發(fā)以及后續(xù)網(wǎng)站營(yíng)銷運(yùn)營(yíng)等一系列服務(wù),幫助企業(yè)打造創(chuàng)新的互聯(lián)網(wǎng)品牌經(jīng)營(yíng)模式與有效的網(wǎng)絡(luò)營(yíng)銷方法,創(chuàng)造更大的價(jià)值。
最近寫了一個(gè)Django在windows上運(yùn)行,但是用的vbs命令,導(dǎo)致在后臺(tái)運(yùn)行的時(shí)候,必須用戶登錄才可以運(yùn)行,還有就是登錄之后,有其他進(jìn)程可能被干掉。
Set ws = CreateObject("Wscript.Shell")
ws.run "cmd /c D:\xxd\run.bat",vbhide
` bat 內(nèi)容
C:\Python37\python3.exe manage.py runserver 0.0.0.0:8000 >> console.log
第二種創(chuàng)建task的方式,也是只能是用戶登錄后才可以,不是service級(jí)別的,不能開機(jī)就運(yùn)行。
第三種就是用sc創(chuàng)建服務(wù)來(lái)運(yùn)行, 這個(gè)沒(méi)有試。
后面可以從windows遷移到linux也可以運(yùn)行的話,用Apache httpd來(lái)運(yùn)行,是非常不錯(cuò)的
準(zhǔn)備
環(huán)境準(zhǔn)備
python3.7
MySQL5~8
還有apache -httpd
mod_wsgi
保證python和apache都是統(tǒng)一的,都是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
配置
創(chuàng)建工程,搭建mysql環(huán)境,以及怎么啟動(dòng)??梢詤⒖?/p>
https://www.djangoproject.com/start/
重點(diǎn)是講下標(biāo)題的用 apache和mod_wsgi來(lái)部署django。
什么是mod_wsgi鄭州人流醫(yī)院 http://www.zzzy120.com/
mod_wsgi is an Apache HTTP Server module by Graham Dumpleton that provides a WSGI compliant interface for hosting Python based web applications under Apache. As of version 4.5.3, mod_wsgi supports Python 2 and 3 (starting from 2.6 and 3.2).
安裝apahce, 并設(shè)置一個(gè)環(huán)境變量
key: MOD_WSGI_APACHE_ROOTDIR
value: C:\wamp64\bin\apache\apache\
創(chuàng)建一個(gè)virtualHost啟動(dòng)文件,根據(jù)自己的修改工程名字和路徑
import os
import sys
import site
# Add the site-packages of the chosen virtualenv to work with
site.addsitedir('C:/Python37/Lib/site-packages')
# Add the app's directory to the PYTHONPATH
sys.path.append('D:/xxd/Assetlog')
sys.path.append('D:/xxd/Assetlog/AssetLog')
os.environ['DJANGO_SETTINGS_MODULE'] = 'AssetLog.settings'
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "AssetLog.settings")
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
安裝mod_wdgi
pip3 install mod_wsgi
或者直接用pip3 install whl文件
pip3 install mod_wsgi-4.5.24+ap24vc14-cp37-cp37m-win_amd64.whl
# https://www.lfd.uci.edu/~gohlke/pythonlibs/#mod_wsgi 這里下載
配置apache和mod_wsgi
查看apache配置信息mod_wsgi-express module-config, 如果執(zhí)行mod_wsgi-express失敗,在python安裝目錄里面找C:\Python37\Scripts,我的在這個(gè)目錄下。
LoadFile "c:/python37/python37.dll"
LoadModule wsgi_module "c:/python37/lib/site-packages/mod_wsgi/server/mod_wsgi.cp37-win32.pyd"
WSGIPythonHome "c:/python37"
把這個(gè)信息追加到apache配置文件httpd.conf的最后。
最后在配置文件
下面配置apache虛擬主機(jī),如果有多個(gè)django工程,可以添加多個(gè)。配置文件在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