Django项目window环境部署

最近刚好有时间,把前端时间使用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的全过程,中间配置遇到一些问题,不过都解决了目前的配置经过验证成功的配置,有需要的可以借鉴一下。

猜你喜欢

转载自blog.csdn.net/json_ligege/article/details/134595615