Centos7.6 使用gunicorn+nginx 部署django5.2

安装 Python 和 pip

安装依赖

首先需要安装一些必要的开发工具和依赖包:

yum groupinstall -y "Development Tools"
yum install -y zlib-devel openssl-devel bzip2-devel xz-devel libffi-devel sqlite-devel ncurses-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel

这些依赖包是编译 Python 所需的

升级 OpenSSL

CentOS 7 默认的 OpenSSL 版本较低(1.0.2),而 Python 3.12 需要 OpenSSL 1.1.1 或更高版本。可以通过以下步骤安装 OpenSSL 1.1.1

wget https://www.openssl.org/source/openssl-1.1.1w.tar.gz
tar -xzf openssl-1.1.1w.tar.gz
cd openssl-1.1.1w
./config --prefix=/usr/local/ssl --openssldir=/usr/local/ssl shared zlib
make
make install

然后更新系统的 PATH 和 LDLIBRARYPATH,以便使用新安装的 OpenSSL:

export PATH="/usr/local/ssl/bin:$PATH"
export LD_LIBRARY_PATH="/usr/local/ssl/lib:$LD_LIBRARY_PATH"

下载并编译安装 Python 3.12.9

从 Python 官方网站下载 Python 3.12.9 的源码包

wget https://www.python.org/ftp/python/3.12.9/Python-3.12.9.tgz
tar -xzf Python-3.12.9.tgz
cd Python-3.12.9

在编译之前,需要指定 OpenSSL 的路径 和安装路径:

./configure --prefix=/usr/local/python3.12 --enable-optimizations --with-openssl=/usr/local/ssl
make
make install

做软连接(Centos自带python2.7,很多软件基于python2.7,所以不要覆盖python2.7的软连接(python)))

ln -s /usr/local/python3.12/bin/python3.12 /usr/local/bin/python3

pip3做软连接

ln -s /usr/local/python3.12/bin/pip3 /usr/local/bin/pip3

安装virtualenv(虚拟环境)

pip3 install virtualenv

建立软连接

ln -s  /usr/local/python3.6/bin/virtualenv /usr/bin

建立虚拟环境(你在哪个目录下使用该命令,虚拟环境目录就会建立在该文件夹下)

virtualenv -p /usr/local/bin/python3 webenv

修改权限

chmod -R u+x webenv

进入虚拟环境

source webenv/bin/activate

退出虚拟环境

deactivate

创建 Gunicorn 服务文件

创建 /etc/systemd/system/gunicorn.service文件

假设我的项目目录为/www/wwwroot/project 虚拟环境环境目录为 /root/webenv

[Unit]
Description=gunicorn daemon
After=network.target

[Service]
User=root
Group=root
WorkingDirectory=/www/wwwroot/project
Environment="PATH=/root/webenv/bin"
Environment="DJANGO_SETTINGS_MODULE=project.settings"
ExecStart=/root/webenv/bin/gunicorn --workers 3 --bind unix:/www/wwwroot/project/project.sock tkqd.wsgi:application

[Install]
WantedBy=multi-user.target

启动 Gunicorn

sudo systemctl start gunicorn
sudo systemctl enable gunicorn

检查状态

journalctl -u gunicorn -f

systemctl status gunicorn

重新加载 systemd 配置

systemctl daemon-reload

启动 Gunicorn 服务:

sudo systemctl start gunicorn

设置开机自启:

sudo systemctl enable gunicorn

检查服务状态:

sudo systemctl status gunicorn

配置 Nginx

检查 proxy_params 文件是否存在

首先,检查 /www/server/nginx/conf/proxy_params 文件是否真的存在。运行以下命令:

ls -l /www/server/nginx/conf/proxy_params

如果文件不存在,你需要创建它。

创建 proxy_params 文件

如果文件不存在,可以手动创建一个。以下是一个标准的 proxy_params 文件内容:

proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;

将上述内容保存到 /www/server/nginx/conf/proxy_params 文件中

创建 Nginx 配置文件

创建 /etc/nginx/conf.d/your_project.conf 文件

server {
    listen 80;
    server_name your_server_ip;

    location = /favicon.ico { access_log off; log_not_found off; }
    location /static/ {
        root /path/to/your/django/project;
    }
    location / {
        include proxy_params;
        proxy_pass http://unix:/path/to/your/project.sock;
    }
}

完成上述步骤后,访问你的网站(例如 http://www.dome.top),检查是否能够正常访问 Django 应用。

文档信息

版权声明:可自由转载(请注明转载出处)-非商用-非衍生

发表时间:2025年6月5日 15:24