项目部署:nginx+supervisor+uwsgi+django

一、uwsgi相关配置

1.uwsgi相关配置
项目目录中新建uwsgi.ini文件

[uwsgi]
; 监听的端口
; http = :8000
; 指定和nginx进行套接字通信的方式:端口或文件
; socket = 127.0.0.1:8001
socket = /var/sock/OfferHelp_nginx.sock

; 项目所在目录,和manage.py同级
chdir = /home/kzzf/project/OfferHelp

; 虚拟环境所在目录
home=/home/kzzf/env/OfferHelp-env
PYTHONHOME = /home/kzzf/env/OfferHelp-env/bin/

; 主应用中的wsgi文件
wsgi-file = OfferHelp/wsgi.py

; 代理静态资源:路径映射,现在交给nginx处理
; static-map = /static=/home/kzzf/project/OfferHelp/collect_static

; 启动一个master进程,来管理其余的子进程
master=True
processes = 4
threads = 2

; 保存主进程的pid,用来控制uwsgi服务
pidfile=/home/kzzf/project/OfferHelp/uwsgi.pid
; 启动项目  uwsgi uwsgi.ini
; uwsgi --stop/reload xxx.pid  停止/重启uwsgi

; 设置后台运行,保存日志,使用supervisor管理时需要取消后台运行
; daemonize=/home/kzzf/project/OfferHelp/log/uwsgi.log

; 设置每个工作进程处理请求的上限,达到上限时,将回收(重启)该进程。可以预防内存泄漏
max-requests=5000

# 服务停止时自动移除unix Socket和pid文件
vacuum=true

2.uwsgi相关命令

uwsgi /home/kzzf/project/OfferHelp/uwsgi.ini

# uwsgi的关闭
uwsgi --stop uwsgi.pid
pkill -f uwsgi -9

二、supervisor

一个进程管理工具,客户端/服务端模式,用他来管理uwsgi的服务
1.安装

# 使用python2安装,supervisor暂时不支持python3
pip install supervisor

# 创建supervisor相关的目录
mkdir -p /etc/supervisor/conf.d    # 存放各个程序的配置
mkdir -p /etc/supervisor/var/      # 存放supervisor启动需要的sock和pid文件

# 生成默认的配置文件
echo_supervisord_conf > /etc/supervisor/supervisord.conf

2.修改默认的配置文件
/etc/supervisor/supervisord.conf

[unix_http_server]
file=/etc/supervisor/var/supervisor.sock

[supervisord]
logfile=/var/log/kzzf/supervisord.log   ; main log file; default $CWD/supervisord.log
logfile_maxbytes=50MB        ; max main logfile bytes b4 rotation; default 50MB
logfile_backups=10           ; of main logfile backups; 0 means none, default 10
loglevel=info                ; log level; default info; others: debug,warn,trace
pidfile=/etc/supervisor/var/supervisord.pid ; supervisord pidfile; default supervisord.pid
nodaemon=false               ; start in foreground if true; default false
minfds=1024                  ; min. avail startup file descriptors; default 1024
minprocs=200                 ; min. avail process descriptors;default 200
user=root                    ; setuid to this UNIX account at startup; recommended if root

# 和unix_http_server中配的要一致
[supervisorctl]
serverurl=unix:///etc/supervisor/var/supervisor.sock ; use a unix:// URL  for a unix socket

[include]
files = /etc/supervisor/conf.d/*.ini

3.自定义程序的配置文件
/etc/supervisor/conf.d/OfferHelp.ini

[program:OfferHelp]    ; 指定程序名为OfferHelp
command=uwsgi /home/kzzf/project/OfferHelp/uwsgi.ini     ; 进程启动时执行的命令
directory=/home/kzzf/project/OfferHelp/    ; 指定执行命令时所在的目录
autostart=true    ; supervisord 启动时自动启动
startsecs=5     ; 启动 5 秒后没有异常退出,视为正常启动
startretries =3   ; 启动失败自动重试次数,默认是 3
autorestart=unexpected   ; 程序异常退出后自动重启
user=root
stdout_logfile=/var/log/kzzf/OfferHelp/stdout.log    ; 日志输出文件
stderr_logfile=/var/log/kzzf/OfferHelp/stderr.log

4.相关命令

# 指定配置文件,后台启动supervisor
supervisord -c /etc/supervisor/supervisord.conf

supervisorctl update    # 更新配置
supervisorctl start/restart/stop 程序名
supervisorctl  start/restart/stop all

三、nginx配置

1.拷贝uwsgi_params文件到项目目录

cp /etc/nginx/uwsgi_params /home/kzzf/project/OfferHelp/

2.新建nginx配置文件
/etc/nginx/conf.d/nginx_OfferHelp.conf

upstream OfferHelp {
    # server 配置socket通信方式,可以使用端口或者文件,推荐unix socket,开销更小
    # 要与uwsgi.ini中socket配的一样
    server unix:///var/sock/OfferHelp_nginx.sock; # for a file socket
    # server 127.0.0.1:8001; # for a web port socket
}

# configuration of the server
server {
    listen      80;
    server_name kzzf.club;    # 域名或ip
    charset     utf-8;

    # 上传文件大小的限制
    client_max_body_size 75M;
    
    # 资源代理
    location /media  {
       alias /home/kzzf/project/OfferHelp/media;
    }

    location /static {
        alias /home/kzzf/project/OfferHelp/collect_static;
    }

    # 服务转发
    location / {
        uwsgi_pass  OfferHelp;    # 这个和上面upstream配置的名字对应
        include     /home/kzzf/project/OfferHelp/uwsgi_params; # 拷贝到项目目录中的uwsgi_params文件
    }
}

3.修改默认的配置文件
/etc/nginx/nginx.conf
将默认的user(nginx)改为root,不然访问静态资源时可能报403错误
修改nginx默认监听的端口,不然django项目没法使用80端口

user root;    # 此处默认为:user  nginx:

    server {
        listen       800 default_server;    # 改为800
        listen       [::]:800 default_server;    # 改为800
        server_name  _;
        root         /usr/share/nginx/html;

四、启动服务

systemctl reload nginx.service

supervisord -c /etc/supervisor/supervisord.conf

参考:https://uwsgi-docs-zh.readthedocs.io/zh_CN/latest/tutorials/Django_and_nginx.html
https://www.zmrenwu.com/courses/hellodjango-blog-tutorial/materials/74/
https://www.cnblogs.com/supery007/p/9368242.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Ubuntu是一个自由开源的操作系统,其中有很多的工具和服务可以用于搭建与开发Web应用。其中,常用的Web应用栈是使用Nginx作为Web服务器,UWSGI作为应用程序服务器,Django作为Web框架,MySQL作为关系型数据库。 要安装和配置这些服务,需要进行以下步骤: 1. 安装Ubuntu操作系统,可以选择最新版本的Ubuntu LTS或者最新的Ubuntu发行版。 2. 安装Nginx服务,并配置Nginx服务器来处理并转发HTTP请求。这里可以使用apt-get install命令来安装Nginx包。 3. 安装UWSGI服务,并配置UWSGI服务器来处理Django应用程序。这里可以使用pip install命令来安装UWSGI包。 4. 安装Django,并编写一个基本的Django应用程序。然后配置UWSGI服务器以运行Django应用程序。可以使用pip install命令来安装Django包。可以使用此教程 - https://uwsgi-docs.readthedocs.io/en/latest/tutorials/Django_and_nginx.html 5. 安装MySQL数据库服务,并配置MySQL服务器以使用Django应用程序。可以使用apt-get install命令来安装MySQL包。 6. 在Django应用程序中配置MySQL数据库连接参数,并创建 MySQL数据库及表。 7. 配置Nginx服务器以使用UWSGI服务器来处理Django应用程序。可以使用上面的教程来完成这一步骤。 8. 启动NginxUWSGI服务器,并测试Django应用程序是否可以访问。 在进行以上的步骤时,需要注意安全措施,防止 Web 应用程序被攻击和入侵。同时,也需要进行充分的测试,保证 Web 应用程序的稳定性和可用性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值