最近刚好有时间,把前端时间使用django框架开发的音乐网站部署到本地电脑上,在这里记录一下部署过程。
环境配置
Python 3.7.5
Django 3.2.20
Apache 2.4.39
电脑64位
生产环境配置
设置生产环境静态配置
示例如下:
# 生产环境静态资源配置
# 当配置属性DEBUG设为False时,Django不再提供静态文件代理服务,
此时需要设置STATIC_ROOT
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
这时如果设置了STATICFILES_DIRS,如果路径一致,可能会有报错,
就可以把这一项注释掉,生产环境不再使用这项配置。
示例如下:
# STATICFILES_DIRS = (os.path.join(BASE_DIR, 'static'),)
定义静态资源路径
当django设为上线模式时,它不再提供静态资源服务,该服务应交由服务器来完成,因此在项目的路由列表中添加静态资源的路由信息。
设置myMusic/urls.py中路由信息。
示例如下:
urlpatterns = [
path('admin/', admin.site.urls),
# 配置媒体资源路由
re_path('media/(?P<path>.*)', serve, {'document_root': settings.MEDIA_ROOT}, name='media'),
# 配置静态资源路由
re_path('static/(?P<path>.*)', serve, {'document_root': settings.STATIC_ROOT}, name='static'),
# 音乐网站前端路由
path('', include(('player.urls', 'player'))),
]
切换运行模式
将Django设为上线模式(DEBUG=False),修改myMusic/settings.py中DEBUG=False.
示例如下:
DEBUG = False
设置允许访问
示例如下:
ALLOWED_HOSTS = ['*']
整理生产静态文件
使用Django内置指令collectstatic,它复制了静态资源文件夹static里面的所有静态资源,并且还复制了Admin后台系统的静态资源。
命令如下:
python manage.py collectstatic
效果如下:
安装mod_wsgi
Apache模块可以托管任何支持python wsgi规范的python web应用程序。Apache需要提前安装如果没有请先安装Apache。
下载mod_wsgi
地址:https://www.lfd.uci.edu/~gohlke/pythonlibs/#mod_wsgi
下载适合自己的mod_wsgi模块,比如我的python版本为3.7,电脑为64位,就选择cp37,win_amd64那一项。
点击进行下载
安装mod_wsgi
直接在下载的文件夹中右键打开CMD窗口安装mod_wsgi。
命令如下
pip install mod_wsgi-4.9.0-cp37-cp37m-win_amd64
安装如下:
查看模块配置信息
使用命令mod_wsgi-express module-config查看模块配置信息。
配置信息在之后的服务器配置时需要使用。
配置信息如下:
Apache配置django
打开Apache的配置文件httpd.conf,在配置文件的末尾,配置你的Django项目信息如下:
配置如下:
# Django项目部署
# 添加mod_wsgi.so模块
# 之前安装mod_wsgi时查看配置的信息
LoadFile "E:/python/python37.dll"
LoadModule wsgi_module "E:/python/lib/site-packages/mod_wsgi/server/mod_wsgi.cp37-win_amd64.pyd"
WSGIPythonHome "E:/python"
# 指定django项目的wsgi配置文件路径
WSGIScriptAlias / E:/lianxipy/myMusic/myMusic/wsgi.py
# 配置django项目后台路径
WSGIPythonPath E:/lianxipy/myMusic
<Directory E:/lianxipy/myMusic/myMusic>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
# 配置django项目静态文件路径
Alias /static E:/lianxipy/myMusic/static
<Directory E:/lianxipy/myMusic/static>
AllowOverride None
Options None
Require all granted
</Directory>
配置后重启apache,访问127.0.0.1发现访问成功,效果如下:
绑定本地域名访问
直接配置到httpd.conf中后,发现配置的其他域名都无法访问了;
故配置了单独的域名,并把配置文件改到vhost中。
创建网站
使用study_pro创建网站指定python项目路径。
修改网站配置
因为网站是使用python django开发的,所以配置需要修改。
通过【设置】->【配置文件】使用记事本打开local.music.com配置文件。
项目路径改为你的项目路径和python环境地址。
修改配置文件如下:
# Django项目部署
# 添加mod_wsgi.so模块
LoadFile "E:/python/python37.dll"
LoadModule wsgi_module "E:/python/lib/site-packages/mod_wsgi/server/mod_wsgi.cp37-win_amd64.pyd"
WSGIPythonHome "E:/python"
# 配置后台路径
WSGIPythonPath E:/lianxipy/myMusic
<VirtualHost *:80>
DocumentRoot "E:/lianxipy/myMusic/myMusic"
ServerName local.music.com
# 指定django项目的wsgi配置文件路径
WSGIScriptAlias / E:/lianxipy/myMusic/myMusic/wsgi.py
<Directory E:/lianxipy/myMusic/myMusic>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
# 配置静态文件
Alias /static E:/lianxipy/myMusic/static
<Directory E:/lianxipy/myMusic/static>
AllowOverride None
Options None
Require all granted
</Directory>
</VirtualHost>
修改保存后,重启服务器,访问local.music.com。
效果如下:
总结
这就是在window部署django的全过程,中间配置遇到一些问题,不过都解决了目前的配置经过验证成功的配置,有需要的可以借鉴一下。