下面是Centos8下django项目部署nginx+uwsgi的教程的完整攻略。
环境准备
- 安装python3和pip3
sudo dnf install -y python3 python3-pip
- 创建虚拟环境
pip3 install virtualenv
virtualenv venv
source venv/bin/activate
- 安装django和uwsgi
pip3 install django uwsgi
创建django项目
- 创建django项目,并创建uwsgi.ini文件
django-admin startproject myproject
cd myproject
vim uwsgi.ini
在uwsgi.ini文件中添加如下内容:
[uwsgi]
chdir=/path/to/myproject
module=myproject.wsgi:application
socket=127.0.0.1:8000
master=true
pidfile=/var/run/uwsgi.pid
vacuum=true
max-requests=5000
daemonize=/var/log/uwsgi.log
其中, path/to/myproject
应替换为自己使用的路径。
- 测试uwsgi是否可以启动
uwsgi --ini uwsgi.ini
如果启动成功,控制台将输出以下内容:
*** Starting uWSGI 2.0.18 (64bit) on [Wed Oct 6 10:08:43 2021] ***
compiled with version: 8.5.1 20210324 (Red Hat 8.5.1-1) on 05 October
...
配置nginx
- 安装nginx
sudo dnf install -y nginx
- 创建nginx配置文件
sudo vim /etc/nginx/conf.d/myproject.conf
在myproject.conf文件中添加如下内容:
server {
listen 80;
server_name example.com; # 修改为自己的域名
client_max_body_size 100M;
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:8000;
}
}
- 测试nginx是否可以启动
sudo systemctl start nginx
如果启动成功,输入 curl http://127.0.0.1
,可以得到如下结果:
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
...
</html>
配置systemd
- 创建systemd配置文件
sudo vim /etc/systemd/system/uwsgi.service
在uwsgi.service文件中添加如下内容:
[Unit]
Description=uWSGI instance to serve myproject
After=network.target
[Service]
User=root
Group=root
WorkingDirectory=/path/to/myproject
ExecStart=/usr/local/bin/uwsgi --ini uwsgi.ini
[Install]
WantedBy=multi-user.target
其中, path/to/myproject
应替换为自己使用的路径。
- 启动并测试systemd服务
sudo systemctl start uwsgi
sudo systemctl status uwsgi
如果启动成功,则控制台将输出以下内容:
● uwsgi.service - uWSGI instance to serve myproject
Loaded: loaded (/etc/systemd/system/uwsgi.service; disabled; vendor preset: disabled)
Active: active (running) since Wed 2021-10-06 17:20:04 CST; 1s ago
Main PID: xxx (uwsgi)
Status: "uWSGI is ready"
Tasks: 4 (limit: 4637)
Memory: 44.4M
CGroup: /system.slice/uwsgi.service
├─xxx /usr/local/bin/uwsgi --ini uwsgi.ini
├─xxx /usr/local/bin/uwsgi --ini uwsgi.ini
├─xxx /usr/local/bin/uwsgi --ini uwsgi.ini
└─xxx /usr/local/bin/uwsgi --ini uwsgi.ini
- 配置systemd开机启动
sudo systemctl enable uwsgi
示例说明
下面以实际的项目为例,说明如何将django项目部署到Centos 8中。
- 配置uwsgi.ini文件
[uwsgi]
chdir=/home/website/myproject
module=myproject.wsgi:application
socket=127.0.0.1:8000
master=true
pidfile=/var/run/uwsgi.pid
vacuum=true
max-requests=5000
daemonize=/var/log/uwsgi.log
- 配置nginx配置文件
server {
listen 80;
server_name www.example.com;
client_max_body_size 100M;
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:8000;
}
}
- 配置systemd服务
[Unit]
Description=uWSGI instance to serve myproject
After=network.target
[Service]
User=root
Group=root
WorkingDirectory=/home/website/myproject
ExecStart=/usr/local/bin/uwsgi --ini uwsgi.ini
[Install]
WantedBy=multi-user.target
以上就是Centos8下django项目部署nginx+uwsgi的完整攻略,希望对您有用!