部署django项目, nginx+uwsgi
尾部有超简单的部署https方法。
1,安装nginx,uwsgi,
- nginx一般直接命令安装就好了(如果配置http3另说)。
- uwsgi可以直接用pip安装,使用正确的pip版本安装,比如python3的pip安装的uwsgi是没法部署python2的django项目的。要使python2和python3的项目都能在一台机器上运行的话也是可以的:给两个python环境安装的pip改下名称,不要冲突,用的时候分开使用,我的服务器上用pip3安装了一个uwsgi改名为uwsgi3,再用pip2安装一个uwsgi就完美适配两个环境了。
以下配置为nginx和uwsgi通过socket文件进行通信(windows无法使用)
通过socket文件通信是unix就支持的一种进程通信方式,在一台机器上使用效率会比较高,不需要占用网络端口资源。也可以使用端口来部署,多台机器就需要用端口启动nginx 使用proxy_pass来进行代理
uwsgi配置文件
[uwsgi]
#plugin=python
socket = 路径.socket
chdir = 路径
module = practice.wsgi:application
wsgi-file = practice/wsgi.py
env = DJANGO_SETTINGS_MODULE=practice.settings
processes = 1
threads = 1
enable-theads = True
daemonize = 路径.log
buffer-size = 65535
master = true
vacuum = true
#stats=%(chdir)/uwsgi/uwsgi.status
#pidfile=%(chdir)/uwsgi/uwsgi.pid
nginx配置文件
server{
server_name practice.swustinfo.top;
charset UTF-8;
client_max_body_size 75M;
location /{
include uwsgi_params;
uwsgi_pass unix:路径.socket;
uwsgi_read_timeout 2;
}
location /static/{
alias 静态文件地址(直接由nginx完成代理,效率更高);
}
启动
# uwsgi
uwsgi --ini uwsgi.ini
#nginx
service nginx reload