本文主要是介绍Django学习记录11——利用uwsgi在ubuntu18.04server上部署,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一.安装各种东西
首先在能够在本地通过python manage.py runserver
实现Django服务器的启动的情况下,通过安装uwsgi
服务器进行部署。如果安装了宝塔,记得ssh登录的时候先将权限切换至sudo su
- 假设安装了Anaconda,那么安装
uwsgi
的过程应该如下:
conda install uwsgi
- 如果是普通的Python的话,直接:
pip3 install uwsgi
二.配置uwsgi
在任意一个目录,推荐在Django的项目的根目录下,也就是有manage.py
的目录下进行配置,创建uwsgi.ini
(当然名字随便取):
Django项目名称为Kanna
[uwsgi]
chdir=/home/kanna/django_ws/Kanna
wsgi-file=Kanna/wsgi.py
py-autoreload=1
module=Kanna.wsgi.application
master=true
max-requests=5000
vacuum=true
pidfile=/home/kanna/django_ws/Kanna/log/pid/uwsgi.pid
logto=/home/kanna/django_ws/Kanna/log/log/web.log
http=0.0.0.0:80
uid=root
gid=root
enable-threads=true
harakiri=30
processes=4
threads=2
post-buffering=4096
virtualenv=/home/kanna/anaconda3/envs/django/
这里是解释一下各行参数的意思:
chdir=/home/kanna/django_ws/Kanna
这个是项目目录,填绝对路径wsgi-file=Kanna/wsgi.py
指定加载WSGI文件,填Django项目里的wsgi模块
py-autoreload=1
修改了Django源码后,uwsgi会自动重启,避免手动重启module=Kanna.wsgi.application
这个就填settings
里的WSGI_APPLICATION
字符串的内容master
指定启动主进程,到时候uwsgi多进程的父进程是这个启动的pidmax-requests
最大访问数量vacuum
服务器退出时,自动删除socket文件和pid文件pidfile=/home/kanna/django_ws/Kanna/log/pid/uwsgi.pid
这个是当前进程的绝对路径,同时以后重启,停止也是基于操作该pid文件进行的。daemonize=/home/kanna/django_ws/Kanna/log/log/web.log
以守护进程的方式启动,且日志文件的绝对路径。会造成systemd
阻塞,所以不用。logto=/home/kanna/django_ws/Kanna/log/log/web.log
记录日志文件http=0.0.0.0:80
服务器的ip地址。若要用nginx
反向代理,则不用该字段,用socketuid=root gid=root
服务器的用户id和用户组idenable-threads
启用线程harakiri
自动中断时间processes
多进程数目threads
单进程线程数post-buffering=4096
开启http请求体的缓存。uWSGI将所有大于限定大小的HTTP请求体保存到磁盘中virtualenv=/home/kanna/anaconda3/envs/django/
可填。若环境默认python不是该项目使用的python,则需要把其他环境的python的绝对路径填上。
更多的参数内容,可以看看这篇大佬的博客:
uWSGI参考资料(1.0版本的配置选项列表)
三.运行
在配置文件的目录下
uwsgi --ini uwsgi.ini
手动重启
uwsgi --reload xxx.pid
关闭
uwsgi --stop xxx.pid
四.开机自启
在ubuntu18.04的环境下,以下代码测试无误
使用systemd
服务。更多的systemd
介绍在该博客下有详细介绍:
Systemd及service文件解析
4.1 创建.service
文件
sudo vim /etc/systemd/system/web_uwsgi.service
4.2 写入内容
uwsgi
的绝对路径建议使用whereis uwsgi
来查看
[Unit]
Description=HTTP Interface Server For Django[Service]
#自己修改一下路径
ExecStart=/usr/local/bin/uwsgi --ini /www/wwwroot/Kanna/uwsgi.ini
ExecReload=/usr/local/bin/uwsgi --reload /www/wwwroot/Kanna/log/pid/uwsgi.pid
ExecStop=/usr/local/bin/uwsgi --stop /www/wwwroot/Kanna/log/pid/uwsgi.pid[Install]
WantedBy=multi-user.target
4.3 运行服务
sudo systemctl enable /etc/systemd/system/web_uwsgi.service
4.4 管理服务
因为已经配置好,start
、reload
、stop
,所以用systemd
命令也可以操作uwsgi
:
systemctl stop web_uwsgi.service
关闭uwsgi服务
systemctl start web_uwsgi.service
开启uwsgi服务
systemctl restart web_uwsgi.service
重启uwsgi服务
这篇关于Django学习记录11——利用uwsgi在ubuntu18.04server上部署的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!