1.生产环境:
- 阿里云windows server 2008 R2 Enterprise(64位)
- python-3.7.4-amd64
- mysql-5.6.43-winx64
- pip install PyMySQL=0.9.3
- pip install django=2.2.5
2.下载与安装Apache
2.1
https://www.apachehaus.com/cgi-bin/download.plx#APACHE24VC15
2.2解压缩,修改Apache24\conf\httpd.conf 文件中的apache路径和端口
....
#Define SRVROOT "/Apache24"
Define SRVROOT "C:\zwl\Apache24"
ServerRoot "${SRVROOT}"
....
Listen 0.0.0.0:8008
....
ServerName localhost:8008
.....
2.3打开C:\zwl\Apache24\bin\httpd.exe,
在浏览器输入http://127.0.0.1:8008/
网页出现 It works 则表示配置成功,否则为失败,需仔细检查上述修改是否正确
3.安装mod_wsgi模块
https://www.lfd.uci.edu/~gohlke/pythonlibs/#mod_wsgi
3.1把whl文件改成zip,解压缩,把里面的mod_wsgi.so拷贝到C:\zwl\Apache24\modules路径下,httpd.conf 中新增一段配置:
#添加mod_wsgi.so 模块
LoadModule wsgi_module modules/mod_wsgi.so
3.2若mod_wsgi解压后找不到mod_wsgi.so文件(如有跳过此步骤)
运行cmd,进入该文件目录执行安装操作:
pip3 install "mod_wsgi-4.6.7+ap24vc15-cp37-cp37m-win_amd64.whl"
mod_wsgi-express module-config
把三行内容复制到httpd.conf:
#添加mod_wsgi.so 模块
LoadFile "c:/users/administrator/appdata/local/programs/python/python37/python37.dll"
LoadModule wsgi_module "c:/users/administrator/appdata/local/programs/python/python37/lib/site-packages/mod_wsgi/server/mod_wsgi.cp37-win_amd64.pyd"
WSGIPythonHome "c:/users/administrator/appdata/local/programs/python/python37"
4.配置Apache与Django的接口
4.1.打开Apache配置文件 httpd.conf,在末尾增加一段配置:
#添加mod_wsgi.so 模块
LoadFile "c:/users/administrator/appdata/local/programs/python/python37/python37.dll"
LoadModule wsgi_module "c:/users/administrator/appdata/local/programs/python/python37/lib/site-packages/mod_wsgi/server/mod_wsgi.cp37-win_amd64.pyd"
WSGIPythonHome "c:/users/administrator/appdata/local/programs/python/python37"
#指定myweb项目的wsgi.py配置文件路径
WSGIScriptAlias / C:/zwl/py/django02/django02/wsgi.py
#指定项目路径
WSGIPythonPath C:/zwl/py/django02
<Directory C:/zwl/py/django02/django02>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
Alias /static C:/zwl/py/django02/static
<Directory C:/zwl/py/django02/static>
AllowOverride None
Options None
Require all granted
</Directory>
4.2.打开django项目setting配置:
注:我用的是'*'
DEBUG = False
ALLOWED_HOSTS = ['127.0.0.1','localhost'] #允许访问的ip。也可以用'*'表示,代表不受限制
4.3重启bin\httpd.exe,输入URL
我的用的是阿里云服务器,所以可以用外网访问
配置过程中遇到的问题解决:
1.apache开启后,无法访问django项目。可查看logs下的error报错。
2.
django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.3 or newer is required; you have 0.9.3
这个错误的解决是pymysql引起的,只需:
找到Python安装路劲下的C:\Users\Administrator\AppData\Local\Programs\Python\Python37\Lib\site-packages\django\db\backends\mysql\base.py文件
将文件中的如下代码注释
if version < (1, 3, 3):
raise ImproperlyConfigured("mysqlclient 1.3.3 or newer is required; you have %s" % Database.__version__)
3.因为我用的是阿里云,用外网IP访问不通。因为是阿里云需要在控制台对云服务器进行端口安全配置
apache随电脑启动,可以添加进服务里
cmd下用cd命令切换到原来的apache安装路径的bin目录下
httpd -k install #通过该命令,被安装的服务名称是Apache2.2,使用的配置文件是conf\httpd.conf
httpd -k install -n "service name" #如果想指定服务名称,请采用该命令
httpd -k install -n "service name" -f "D:\conf\custom.conf" #如果想指定服务名称,并且使用定制的配置文件,请使用该命令
httpd -k start #启动apache服务
httpd -k stop 或 httpd -k shutdown #停止apache服务
httpd -k restart #重启apahce服务