Django使用Nginx和Uwsig进行部署

Django项目部署Ubuntu服务器上
思路: Nginx反向代理, Uwsgi运行Django程序


安装nginx 和uwsgi

1
2
3
4
5
6
7
8
9
10
11
12

sudo apt install ngin
# 创建venv 使用pip 安装
python3 -m venv venv

# 运行环境
source venv/bin/activate

pip install uwsgi

# 创建软链接
sudo ln -s /home/ubuntu/django/venv/bin/uwsgi /usr/bin

配置Uwsgi文件

在django 下面创建uwsgi.ini文件,内容如下

1
2
3
4
5
6
7
8
9
10
11
[uwsgi]
socket = 127.0.0.1:8081 # 使用本地代理8081端口
http = :8080 # 用于测试,或者直接做外界服务器
chdir = /home/ubuntu/django/book_recommend # Django的项目目录
wsgi-file = django_project/wsgi.py @ uwsgi 文件目录
processes = 4 # 进程4
threads = 2 # 线程2
master = true # 主程序
vacuum = true
pidfile = uwsgi8081.pid # 进程文件
daemonize = uwsgi8081.log # 日志
1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 启动uwsgi
uwsgi --ini uwsgi.ini

# 关闭uwsgi
killall -9 uwsgi

# 结束某一个uwsig
uwsgi --stop uwsgi.pid

# 查看进程
ps -ef |grep uwsgi

# 查看端口
lsof -i :8080

配置Nginx文件

/etc/nginx/sites-available/ 创建django.conf配置内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
server {
listen 8080;
server_name ihls.xyz;
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:8081; # 这里端口和uwsig中sock端口一直
uwsgi_param UWSGI_SCRIPT /home/ubuntu/django/book_recommend/django_project.wsgi; # Django wsgi文件目录
uwsgi_param UWSGI_CHDIR /home/ubuntu/django/book_recommed; # Uwsgi文件夹目录
index index.html index.htm;
client_max_body_size 35m;
}

# 配置静态文件
location /media {
alias /home/ubuntu/django/book_recommend/media;
}

location /static {
alias /home/ubuntu/django/book_recommend/static;
}
}

ps: 注意权限不够可以修改/etc/nginx/nginx.confuser root;

1
2
3
4
5
6
7
8
# 接再来应用配置
sudo ln -s /etc/nginx/sites-available/django.conf /etc/nginx/sites-enabled/

# 重启nginx
sudo service nginx restart

# 或者命令重启nginx
sudo nginx -s reload

到此,配置可以正常进行访问。结下来配置supervisor,使开机自动运行

配置supervisor

1
2
3
4
5
# 安装supervisor
sudo apt install supervisor

sudo vi /etc/supervisor/conf.d/django.conf

进行如下配置django.conf

1
2
3
4
5
6
7
8
[program:django]
user=ubuntu
directory=/home/ubuntu/django/ # 项目的文件夹uwsgi 文件位置
command=uwsgi --ini uwsgi.ini # 运行命令
autostart=true
autorestart=true
stdout_logfile=/var/log/django/stdout.log # 创建日志
stderr_logfile=/var/log/django/stderr.log # 创建日志

运行命令生效

1
2
3
4
5
6
7
# 创建日志文件夹
sudo mkdir /var/log/django


# 启动配置
sudo supervisorctl reread
sudo supervisorctl update