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