Linux下nginx+uwsgi部署django项目

本文详细介绍了如何在Linux环境下部署Django项目,包括安装uWSGI,下载并配置Nginx,以及调整uWSGI和Nginx的配置以实现项目部署。通过修改uwsgi.ini和nginx.conf文件,设置端口和路径,最终实现通过Nginx代理uWSGI来访问Django应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. linux中安装uwsgi步骤

(1)安装依赖包:apt-get install build-essential python-dev
在这里插入图片描述

使用root用户安装:
sudo apt-get install build-essential python-dev
输入密码即可。

(2)下载安装包
wget http://projects.unbit.it/downloads/uwsgi-latest.tar.gz

解压:
tar zxvf uwsgi-latest.tar.gz
进入解压目录:
cd uwsgi-2.0.20
编译:
make

在这里插入图片描述

安装依赖:apt-get install python-dev python3-dev,过程中输入y

可以直接切换到root下:su root 回车,输入密码

然后重新输入make

出现下面则安装成功:
在这里插入图片描述

(3)在django项目与manage.py同级目录下创建uwsgi_config文件夹,创建 uwsgi.ini,uwsgi.log,uwsgi.pid三个文件,再通过vim uwsgi.ini编辑该文件内容,内容如下:

# 指定IP端口,ip为内网ip,如果是云服务器,是云服务器内网ip
# http可以直接访问,socket是让Nginx指定的
http=192.168.152.140:8089
#socket=10.121.2.104:8087
# 项目目录,和manage.py同级的目录
chdir=/home/xzzcr/PycharmProjects/django/qmr/
# 启动主进程,来管理其他进程
master=true
# 加载一个WSGI模块,这里加载wsgi.py这个模块
# 通常是在<django项目>/<和项目同名文件夹>/wsgi.py
# 但是如果chdir指定了项目绝对路径,只需要写<和项目同名文件夹>/wsgi.py
module=qmr.wsgi:application
# 启动多少个进程,和核心数一样就行
processes=2
wsgi-file=qmr/wsgi.py
file=/home/xzzcr/PycharmProjects/django/qmr/qmr/wsgi.py
log-maxsize=102400
buffer-size=65535
# 每个进程最大的请求数
max_requests=1000
# 运行的日志,通常放在 uwsgi_config 下
daemonize=/home/xzzcr/PycharmProjects/django/qmr/uwsgi_config/uwsgi.log
## 自动移除unix Socket和pid文件当服务停止的时候
vacuum=true
profiler=true
memory-report=true
enable-threads=true
logdate=true
limit-as=6048

# 如果使用的是虚拟环境, 需要指定 pythonpath
;pythonpath=/home/ltops/.virtualenv/srmAutoData/bin/python3.8

# 指定pid文件,用于重启和停止,通常放在 uwsgi_config 下
pidfile=/home/xzzcr/PycharmProjects/django/qmr/uwsgi_config/uwsgi.pid
# 启用线程
enable-threads=true
#设置在平滑的重启(直到接收到的请求处理完才重启)一个工作子进程中,

reload-mercy=8

(4)然后在Terminal窗口中uwsgi --ini uwsgi.ini启动,打开浏览器,输入uwsgi.ini文件中定义的url即可访问。

2. 下载nginx

wget http://nginx.org/download/nginx-1.18.0.tar.gz

解压:
tar -zxvf nginx-1.18.0.tar.gz

进入解压目录:
cd nginx-1.18.0

安装libpcre3-dev 与zlib1g-dev
apt-get install libpcre3 libpcre3-dev zlib1g-dev

设置编译解压完后的文件:
./configure --prefix=/usr/local/nginx
在这里插入图片描述

编译完成

对编译完的文件进行安装:
make && make install

进入到nginx的编译安装目录:
cd /usr/local/nginx/sbin/

启动:
./nginx

在这里插入图片描述

在浏览器中输入localhost:80(端口可以在配置文件中自行修改,我这里是默认的80端口),出现上图所示页面即代表安装成功。

接下来创建开机自启
cd /lib/systemd/system/ 进入该目录
vim nginx.service 打开文件,编辑以下文本

编辑脚本:

[Unit]
Description=nginx service
After=network.target 
   
[Service] 
Type=forking 
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s quit
PrivateTmp=true 
   
[Install] 
WantedBy=multi-user.target

然后:systemctl enable nginx 开启开机启动
systemctl restart nginx.service 重启nginx服务

如果报以下错误:
在这里插入图片描述

多半是端口端口被占用,netstat -nap | grep 80查看端口情况,使用kill -9 port杀死占用的端口
在这里插入图片描述

重复netstat -nap | grep 80,kill操作直到没有端口占用80端口为止。

最后重新执行systemctl start nginx.service命令即可。

3. django + nginx +uwsgi

修改django项目中uwsgi.ini文件中的socket,此时注释掉前面的http,socket的地址一定要和nginx.conf中配置的uwsgi_pass一致,否则无效,详细配置移步到下面。

[uwsgi]
# 指定IP端口,ip为内网ip,如果是云服务器,是云服务器内网ip
# http可以直接访问,socket是让Nginx指定的
# http=192.168.152.140:8089
socket=192.168.152.140:8089
# 项目目录,和manage.py同级/的目录
chdir=/home/xzzcr/PycharmProjects/django/qmr/
# 启动主进程,来管理其他进程
master=true
# 加载一个WSGI模块,这里加载wsgi.py这个模块
# 通常是在<django项目>/<和项目同名文件夹>/wsgi.py
# 但是如果chdir指定了项目绝对路径,只需要写<和项目同名文件夹>/wsgi.py
module=qmr.wsgi:application
# 启动多少个进程,和核心数一样就行
processes=2
wsgi-file=qmr/wsgi.py
file=/home/xzzcr/PycharmProjects/django/qmr/qmr/wsgi.py
log-maxsize=102400
buffer-size=65535
# 每个进程最大的请求数
max_requests=1000
# 运行的日志,通常放在 uwsgi_config 下
daemonize=/home/xzzcr/PycharmProjects/django/qmr/uwsgi_config/uwsgi.log
## 自动移除unix Socket和pid文件当服务停止的时候
vacuum=true
profiler=true
memory-report=true
enable-threads=true
logdate=true
limit-as=6048

# 如果使用的是虚拟环境, 需要指定 pythonpath
#pythonpath=/home/ltops/.virtualenv/srmAutoData/bin/python3.8

# 指定pid文件,用于重启和停止,通常放在 uwsgi_config 下
pidfile=/home/xzzcr/PycharmProjects/django/qmr/uwsgi_config/uwsgi.pid
# 启用线程
enable-threads=true
#设置在平滑的重启(直到接收到的请求处理完才重启)一个工作子进程中,

reload-mercy=8

修改nginx配置,进入nginx安装目录中,cd sbin进入到文件中,vim nginx.conf:
在这里插入图片描述

netstat -ntlp|grep port(port为nginx.conf配置的端口),根据结果使用kill -9 port关掉nginx的进程:
在这里插入图片描述

然后重新./nginx启动nginx

在项目中:
uwsgi --reload uwsgi.pid
uwsgi --ini uwsgi.ini

最后浏览器输入nginx的访问路劲:localhost:8088,即可访问到内容,意味着部署成功。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值