Centos8下django项目部署 nginx+uwsgi的教程

  • Post category:Linux

下面是Centos8下django项目部署nginx+uwsgi的教程的完整攻略。

环境准备

  1. 安装python3和pip3
sudo dnf install -y python3 python3-pip 
  1. 创建虚拟环境
pip3 install virtualenv 
virtualenv venv 
source venv/bin/activate 
  1. 安装django和uwsgi
pip3 install django uwsgi

创建django项目

  1. 创建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 应替换为自己使用的路径。

  1. 测试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

  1. 安装nginx
sudo dnf install -y nginx
  1. 创建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;
    }
}
  1. 测试nginx是否可以启动
sudo systemctl start nginx

如果启动成功,输入 curl http://127.0.0.1,可以得到如下结果:

<!DOCTYPE html>
<html>
<head>
    <title>Welcome to nginx!</title>
...
</html>

配置systemd

  1. 创建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 应替换为自己使用的路径。

  1. 启动并测试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
  1. 配置systemd开机启动
sudo systemctl enable uwsgi

示例说明

下面以实际的项目为例,说明如何将django项目部署到Centos 8中。

  1. 配置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
  1. 配置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;
    }
}
  1. 配置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的完整攻略,希望对您有用!