nginx + docker + uwsgi + python3.9 + django3 web服务器

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

前提 python3 manager.py runserver  是 ok 的

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

配置如下

events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    server {
        listen 80;
        server_name www.rdface.cn rdface.cn 49.234.70.89;
        access_log  /usr/local/nginx/logs/access.log;
        location / {
          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; 
        }
    }
}

nginx + docker + uwsgi + python3.9 + django3 web服务器_第1张图片 在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 有没有开通

 

 

你可能感兴趣的:(服务器配置,nginx,nginx,linux,django,docker)