Django uwsgi+nginx+supervisor部署

Posted Python测试开发成长之路

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django uwsgi+nginx+supervisor部署相关的知识,希望对你有一定的参考价值。

Django 配置

DEBUG = False
ALLOWED_HOSTS = ['127.0.0.1', '106.54.238.180'] STATIC_ROOT = os.path.join(BASE_DIR, 'static_dist')


修改完配置文件后将项目上传至服务器



uwsgi+nginx+supervisor

安装uwsgi

pip3 install uwsgi

创建配置文件uwsgi.ini

[uwsgi]
# 项目目录(路径)chdir = /usr/local/mock/
# Django的wsgi文件module = MagicMockServer.wsgi
# 启用主进程master = true
# 进程个数processes = 1
socket = /usr/local/mock/mock.sock#http = :8080
# socket权限设置chmod-socket = 666
# 自动移除unix Socket 和 Pid 文件 当服务停止的时候vacuum = true
# 设置日志目录# daemonize = /var/log/mock_uwsgi.log


nginx部署

1.安装nginx,yum install nginx

2.添加配置文件;进入到conf.d目录 cd /etc/nginx/conf.d;创建mock.conf文件 touch mock.conf

upstream mock { server unix:///usr/local/mock/mock.sock;}

# 配置服务器server {
# 监听的端口号 listen 8080;
# 域名 server_name 106.54.238.180; charset utf-8;
# 最大的文件上传尺寸 client_max_body_size 75M;
# 静态文件访问url location /static { # 静态文件地址 alias /usr/local/mock/static_dist; }
# 最后, 发送所有非静态文件请求到django服务器 location / { uwsgi_pass mock; # uwsgi_params文件地址 include /etc/nginx/uwsgi_params; }}


supervisor管理uwsgi进程

supervisor管理uwsgi作用;可以在uwsgi发生意外的情况下,会自动重启。

1.安装supervisor,pip3 install supervisor

2.项目根目录下创建supervisor.conf

[program:mock]# 执行命令command = uwsgi --ini uwsgi.ini# 项目路径directory = /usr/local/mock/# 开始的时候等待几秒startsecs = 0# 停止的时候等待几秒stopwaitsecs = 0# 自动开始autostart = true# 程序挂了后自动重启autorestart = truestdout_logfile = /usr/local/mock/supervisord.logstderr_logfile = /usr/local/mock/supervisord.err
[supervisord]loglevel = info
[inet_http_server]# supervisor 服务器port = :9005username = adminpassword = 123
[supervisorctl]# 使用supervisorctl的配置serverurl = http://127.0.0.1:9005username = adminpassword = 123
[rpcinterface:supervisor]supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface


supervisord 相关命令

 运行:supervisord -c supervisor.conf

 启动uwsgi 通过supervisorctl -c supervisor.conf 进入管理控制台,然后执行相关命令:

    status: 查看状态

    start program_name 启动程序

    restart  program_name 重启程序

    stop program_name 停止程序

    reload  重新加载配置文件

    quit  退出控制台


相关问题汇总

django.db.utils.OperationalError: (2026, 'SSL connection error: error:1425F102:SSL routines:ssl_choose_client_version:unsupported protocol')报错;解决方法

vim /etc/crypto-policies/back-ends/opensslcnf.config
CipherString = @SECLEVEL=2:kEECDH:kRSA:kEDH:kPSK:kDHEPSK:kECDHEPSK:-aDSS:-3DES:!DES:!RC4:!RC2:!IDEA:-SEED:!eNULL:!aNULL:!MD5:-SHA384:-CAMELLIA:-ARIA:-AESCCM8Ciphersuites = TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256:TLS_AES_128_CCM_SHA256# MinProtocol = TLSv1.2# 这里把1.2改成1.1MinProtocol = TLSv1.1


openssl升级降级

wget http://www.openssl.org/source/openssl-1.0.2d.tar.gz    
2、安装到/usr/local/ssl/目录下:
tar zxvf openssl-1.0.2d.tar.gz
cd openssl-1.0.2d
./config --prefix=/usr/local/ssl
make && make install
mv -f /usr/bin/openssl /usr/bin/openssl.old
mv -f /usr/include/openssl /usr/include/openssl.old


ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl #修改软链,指向新版本的openssl路径
ln -s /usr/local/ssl/include/openssl /usr/include/openssl


echo "/usr/local/ssl/lib">>/etc/ld.so.conf
#添加so库的路径,添加完成之后,运行ldconfig ,将新增的so 文件缓存到/etc/ld.so.cache中;


ldconfig -v
openssl version -a #确认版本是否为1.0.2d


以上是关于Django uwsgi+nginx+supervisor部署的主要内容,如果未能解决你的问题,请参考以下文章

通过 Nginx 的 uwsgi + django - uwsgi 设置/生成?

转载nginx+uwsgi+django

Django+Nginx+uWSGI = 504 网关超时

uWSGI + Nginx + Django 部署

Django + Uwsgi + Nginx 实现生产环境部署

Django + Uwsgi + Nginx 实现生产环境部署