nginx+supervisor+uwsgi 配置django项目
uwsgi(虚拟环境下需要安装uwsgi包)
在django第一级目录下创建uswgi.ini配置文件 touch uswgi.ini
输入以下配置文件
[uwsgi] # Django-related settings # the base directory (full path) # 填写项目的第一层绝对路径 chdir = 填写项目的第一层绝对路径 # Django's wsgi file # 填写项目第二层的相对路径,找到第二层目录下的wsgi.py # 这里填写的不是路径,是以上一个参数为相对,找到第二层项目目录下的wsgi.py文件 module = xx.wsgi # the virtualenv (full path) # 填写虚拟环境解释器的第一层工作目录 home = 填写虚拟环境解释器的第一层工作目录 # process-related settings # master master = true # maximum number of worker processes # 代表定义uwsgi运行的多进程数量,官网给出的优化建议是 2*cpu核数+1 # 如果是单进程,十万个请求,都丢给一个进程去处理 # 3个工作进程,十万个请求,就分给了3个进程去分摊处理 processes = 3 # the socket (use the full path to be safe socket = 0.0.0.0:8000 # 线上不会用http参数,因为对后端是不安全的,使用socket参数是安全的连接,用nginx反向代理去访问 # 后端程序是运行在防火墙内部,外网是无法直接访问的 # 临时使用http参数,便于我们用浏览器调试访问 # http = 0.0.0.0:8000 # ... with appropriate permissions - may be needed # chmod-socket = 664 # clear environment on exit vacuum = true
启动uwsgi命令
uwsgi --ini /opt/staff/uwsgi.ini
配置supervisor
linux直接安装
yum install supervisor -y
修改supervisor的配置文件,添加管理xx的任务
vim /etc/supervisord.conf
#再最底行,添加如下内容#[program:xx]是被管理的进程配置参数,xx是进程的名称
[program:xx]
command=/root/anaconda3/envs/test/bin/uwsgi --ini /opt/staff/uwsgi.ini ;supervisor其实就是在帮你执行命令而已!
autostart=true ; 在supervisord启动的时候也自动启动
startsecs=10 ; 启动10秒后没有异常退出,就表示进程正常启动了,默认为1秒
autorestart=true ; 程序退出后自动重启,可选值:[unexpected,true,false],默认为unexpected,表示进程意外杀死后才重启
stopasgroup=true ;默认为false,进程被杀死时,是否向这个进程组发送stop信号,包括子进程
killasgroup=true ;默认为false,向进程组发送kill信号,包括子进程
supervisor命令如下
#启动supervisord supervisord -c /etc/supervisord.conf #进入supervisor命令行 supervisorctl -c /etc/supervisord.conf #需要进入supervisor命令行操作 #关闭全部服务 stop all #启动某项目 start name #查看supervisord status
配置nginx
注意,编译软件之前,还是需要解决系统的开发环境,例如如下
yum install gcc patch libffi-devel python-devel zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel openssl openssl-devel -y
注:这里用的是tb的nginx
1、在linux的opt目录下,下载nginx源代码
wget http://tengine.taobao.org/download/tengine-2.3.2.tar.gz
2、解压缩源代码,准备编译三部曲
[root@xx opt]# tar -zxvf tengine-2.3.2.tar.gz
3、进入源码目录,指定nginx的安装位置
[root@xx tengine-2.3.2]# ./configure --prefix=/opt/tngx232/
4、编译且编译安装,生成nginx的可执行命令目录
make && make install
5、安装完毕后,会生成/opt/tngx232/文件夹,nginx可以使用的配置都在这里了
[root@xx tngx232]# ls
conf html logs sbin
conf 明显是存放*.conf配置文件的
html 存放网页的静态文件的目录
logs 日志
sbin 存放nginx的可执行命令
6、添加nginx到PATH中,可以快捷执行命令
永久修改PATH,开机就去读
vim /etc/profile
写入PATH="/opt/tngx232/sbin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:"
重新读取环境变量 source /etc/profile
7、首次启动nginx,注意要关闭防火墙
直接输入nginx命令即可启动
有关nginx的命令
nginx #首次输入是直接启动,不得再次输入
nginx -s reload #平滑重启,重新读取nginx的配置文件,而不重启进程
nginx -s stop #停止nginx进程
nginx -t #检测nginx.conf语法是否正确
配置nginx
server { listen 80; server_name localhost; #这是一个局部的变量,只对当前这个server{}代码块生效,编码设置为utf-8 charset utf-8; error_page 404 /40x.html; # 这里的locaiton 路径匹配,如果你写的是root参数,就是一个web站点功能 # 基于uwsgi协议的一个高性能的反向代理转发,新的参数 location / { #当请求发送给 192.168.178.140:80的时候 #通过uwsgi_pass把请求转发给后端的uwsgi服务器 uwsgi_pass 0.0.0.0:8000; #这个参数,是固定的,是添加一些转发请求头内容 include uwsgi_params; } }
配置nginx接收所有的django静态文件
第一步:修改django的配置文件,收集所有的静态文件,放入一个统一管理的目录
vim settings.py #添加如下内容
STATIC_ROOT='/s25static/' #作用是定义一个统一管理的目录,收集所有项目的静态文件
#/s25static/这个目录是linux下目录非项目里面的
第二步:用命令收集静态文件
python3 manage.py collectstatic
10.通过nginx去找到如下的静态文件即可
加入一个
location /static {
alias /s25static;
}
配置nginx完成平滑重启即可
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下