如果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标签:httpd,wsgi,项目,windows,django,apache,mod From: https://www.cnblogs.com/lhg37927/p/17511501.html