nginx + docker + uwsgi + python3.9 + django3 + vue 部署在服务器

本文详细介绍了使用Django框架配合Nginx和Uwsgi进行项目部署的过程,包括云服务器上MySQL和Redis的配置,以及如何通过Docker运行uwsgi和项目。同时,提供了nginx配置示例,解释了如何正确处理静态资源和HTTPS配置。
摘要由CSDN通过智能技术生成

我在云服务器上搭建了mysql redis,项目在docker 里面 所以 uwsgi 也是在docker 里面

前提 python3 manager.py runserver 0.0.0.0:8000  是 ok 的

我的nginx 的功能就是把80 端口 指向 8000 端口(因为我的docker 就是8000:8000),没啥特殊功能

配置如下

events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
   

server {
        listen   443 ssl;
        server_name 域名;
        ssl_certificate /etc/xxx.pem;
        ssl_certificate_key /etc/xx.key; 
        ssl_session_timeout  5m;
        ssl_protocols  TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers  AESGCM:ALL:!DH:!EXPORT:!RC4:+HIGH:!MEDIUM:!LOW:!aNULL:!eNULL;
        ssl_prefer_server_ciphers  on;
        resolver 114.114.114.114;
        location / {
          root /data/vue/dist/;  # dist文件不要放在root目录下,会导致500 or 403
          index index.html;
        }
        location /api/ {
          proxy_pass http://127.0.0.1:8000;
          proxy_set_header X-Real-IP $remote_addr;
          proxy_set_header REMOTE-HOST $remote_addr;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }

    }
 

}

 

备注:

这个api 可以更改,但是后端的接口需要支持 比如 以前是 user/data/,现在这么配置了 接口的urls.py 需要修改成 api/user/data/

vue 项目中请求后端的url

 python urls.py 配置

 

 

 在docker 里面 启动 python3 manager.py runserver 0.0.0.0:8000 

这个时候 你访问的ip 应该能看到你的主页

为啥要用uwsgi 我看人家都这么玩 所以我就加上了 我个人的需求不用uwsgi 也是可以的

目录结构 如下

mkdir uwsgi_conf

cd uwsgi_conf

touch uwsgi.pid

touch uwsgi.status

uwsgi 配置 如下

[uwsgi]
# http = 0.0.0.0:8088
# the local unix socket file than commnuincate to Nginx
# 指定项目执行的端口号
# 用nginx的时候就配socket , 直接运行的时候配 http
# socket = :8000
# the base directory (full path)
# 项目的目录
chdir = /opt/CY_Home/GoodCY
# Django's wsgi file
wsgi-file = GoodCY/wsgi.py
# uwsgi的进程名称前缀
procname-prefix-spaced=GoodCY
# 文件修改,自动加载
py-autoreload=1
# maximum number of worker processes
# 开启的进程数量
processes = 2
# thread numbers startched in each worker process
threads = 10
# 每个进程worker数
workers = 5
thread-stacksize = 512
buffer-size = 65535
# monitor uwsgi status
# stats = 0.0.0.0:9191
# 启用主进程
master=true
# clear environment on exit
# 当服务器退出的时候自动清理环境
vacuum = true
# 最大连接数量
max-requests=10000
# 设置日志目录
daemonize=/opt/logs/uwsgi.log
# 超市
harakiri = 60
# 指定IP端口,web访问入口
http=0.0.0.0:8000

# 指定多个静态文件:static目录和media目录,也可以不用指定该静态文件,在nginx中配置静态文件目录
# uwsgi有自己的配置语法,详细可参考官网,无需写绝对路径,可以用循环、判断等高级配置语法
for =static
static-map=/static=%(chdir)/%(_)
endfor =

# uWSGI进程号存放
pidfile=%(chdir)/uwsgi_conf/uwsgi.pid

# monitor uwsgi status  通过该端口可以监控 uwsgi 的负载情况
# 支持ip+port模式以及socket file模式
stats=%(chdir)/uwsgi_conf/uwsgi.status
启动 uwsgi

uwsgi --ini /opt/CY_Home/GoodCY/uwsgi_conf/home_uwsgi.ini

停止

uwsgi --stop /opt/CY_Home/GoodCY/uwsgi_conf/uwsgi.pid

就可以了

注意事项:

1、django debug False python3 manager.py runserver 静态资源加载不了咋办?

强制加载 与debug True 一致

python3 manage.py runserver --insecure 

2、在setting 里面 获取环境变量的DEBUG 

DEBUG = os.environ['DEBUG'] 这样是错误的 获取的是字符串 不是布尔值

可以这样

DEBUG = os.environ['DEBUG'] is 'True'

这样 就可以了

3、mysql redis 等 放在云服务器 千万别开通所有的外网访问 因为一个不小心 就成肉鸡了

所以 云服务器的安全组要用起来 redis 指定内网ip 访问 在配置里面

4、若访问不通 你可以看下防火墙、安全组是不是没开通 80端口 https 看看443 有没有开通

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值