django项目在windows的部署(apach+Mod_wsgi+django)

发布时间 2023-06-28 16:06:25作者: 往昔遗忘

如果django项目如果要正式使用,我们需要将项目部署到开发环境上去。django项目自带的服务不支持多线程,会出现多个用户访问时,页面卡死,半天打不开的问题。所以, 该如何部署django项目呢?下边是我的部署经验,实测有效。

如果可以的话,尽量部署到linux上,但是我的系统中涉及到一些window文件的 操作,所以只能部署到windows上。

详细步骤:

1.下载安装apache

1.1下载

apache 官网下载路径:https://httpd.apache.org/

 

按照系统下载, 我的是64位的,所以下载x64, 这个软件不大,下载很快

1.2配置apache

 将下载apache压缩包解压之后, 就是 apache 软件目录了。我的是Apache24.。

 进入Apache24之后,找到conf/httpd.conf,这就是apache软件启动时的配置文件。需要在这个文件中配置自己的项目信息,才能够通过apache把项目跑起来

这个文件一共需要修改以下几个地方:

(1)Define SRVROOT "D:\Apache24"     #  你的Apache存放目录

(2)ServerRoot "D:\Apache24"     #  你的Apache存放目录, 和一保持一致

(3)ServerName 127.0.0.1:8000    #你的服务名, 配置你的ip和端口

(4)Listen 8000    # 你的端口号

这里配置完成之后,你就可以试一下自己的服务是否可以正常启动了, 以管理员权限运行 Apache24/bin/httpd.exe之后(我的在cmd框中没有响应),在浏览器中访问http://127.0.0.1:8000 可以看到apache的主页,就代表初步配置成功了

2.下载安装Mod_wsgi

 mod_wsgi是apache的一个模块,可以用于管理ptyon的wsgi应用,当然也包括django。

2.1下载路径:https://www.lfd.uci.edu/~gohlke/pythonlibs/#mod_wsgi

这里需要按照自己的python版本, 以及系统的位数选择,我用的python3.6, windows 64位系统, 所以选在下边的这个

 

 下载之后,pip安装即可

pip3 install D:\mod_wsgi-4.7.1-cp36-cp36m-win_amd64.whl

 安装成功之后, 输入  mod_wsgi-express module-config 输出的信息很重要,这里是python的安装信息和mod_wsgi安装信息,待会在配置项目的时候,会用到。到这里mod_wsgi安装完成。

D:\alltools>mod_wsgi-express module-config
LoadFile "D:/Python/Python36/python36.dll"
LoadModule wsgi_module "D:/Python/Python36/lib/site-packages/mod_wsgi/server/mod_wsgi.cp36-win_amd64.pyd"
WSGIPythonHome "D:/Python/Python36"

 3.配置项目信息

又回到conf/httpd.conf文件,添加自己的项目的配置信息

#配置 mod_wsgi 模块,就是上边mod_wsgi的配置信息.
LoadFile "D:/Python/Python36/python36.dll"
LoadModule wsgi_module "D:/Python/Python36/lib/site-packages/mod_wsgi/server/mod_wsgi.cp36-win_amd64.pyd"
WSGIPythonHome "D:/Python/Python36"

#指定项目的wsgi.py配置文件路径,这个py文件是在你的Django项目中
WSGIScriptAlias / D:\myproject\pycode\pro_dj\pro_dj\wsgi.py

#指定项目目录, 即你的Django项目路径
WSGIPythonPath D:\myproject\pycode\pro_dj
<Directory D:\myproject\pycode\pro_dj\pro_dj>
<Files wsgi.py>
Require all granted
</Files>
</Directory>

#项目静态文件地址, 即Django项目中静态文件的路径
Alias /static D:\myproject\pycode\pro_dj\statics
<Directory D:\myproject\pycode\pro_dj\statics>
AllowOverride None
Options None
Require all granted
</Directory>

#项目media地址, 上传图片等文件夹的路径
Alias /media D:\myproject\pycode\pro_dj\media
<Directory D:\myproject\pycode\pro_dj\media>
AllowOverride None
Options None
Require all granted
</Directory>

 

DEBUG = False
TEMPLATE_DEBUG = False

ALLOWED_HOSTS = ["*"]
# STATICFILES_DIRS = [os.path.join(BASE_DIR, 'statics')] 这个一定要注释掉,否则项目启动不起来,这是调试的时候,静态文件的查找目录。 STATIC_ROOT = os.path.join(BASE_DIR,'statics') # 解决dubug关闭之后,静态资源访问不到的问题

  5.项目启动

之前我们通过python manage.py runserver 这种方式启动项目,现在我们不再通过这种凡是启动项目了,而是通过apache来启动

在 bin目录下运行cmd命令httpd -k install -n “服务名” (不加参数,默认Apache2.4),将apache注册成windows的服务,就不再需要通过bin目录下的httpd.exe来启动了

D:\Apache24\bin>httpd -k install
Installing the 'Apache2.4' service
The 'Apache2.4' service is successfully installed.
Testing httpd.conf....
Errors reported here must be corrected before the service can be started.

D:\Apache24\bin>net start Apache2.4 Apache2.4 服务正在启动 . Apache2.4 服务已经启动成功。

运行apache:net start apache2.4

停止apache:net stop apache2.4

删除apache:sc delete Apache2.4

 

到这里,服务就启动完成了,我们就可以通过设置的ip和端口,访问我们的网站了,当然,第一次启动会慢一点。

 

 

 

 

 

mod_wsgi-express module-config