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完成平滑重启即可

 nginx -s reload

 

posted @   starSgz  阅读(169)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下
点击右上角即可分享
微信分享提示