Django开发学习笔记04-windows+Apache+Django生产环境部署

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服务

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章