阿里云nginx uwsgi docker django 部署
我是把nginx uwsgi django 部署在一个容器里,然后mysql部署在另外一个容器里,docker和mysql通讯没问题,主要问题出在nginx和uwsgi的配置,下面简单说一下docker1.创建容器sudo docker run -it --name dj -p 8000:8000 ubuntu:20.04注意这里有2个坑–name 取名字的时候尽量不要和以后镜像重名,否则会让你重
我是把nginx uwsgi django 部署在一个容器里,然后mysql部署在另外一个容器里,docker和mysql通讯没问题,主要问题出在nginx和uwsgi的配置,下面简单说一下
docker
1.创建容器
sudo docker run -it --name dj -p 8000:8000 ubuntu:20.04
注意这里有2个坑
–name 取名字的时候尽量不要和以后镜像重名,否则会让你重新改名字
-p 8000:8000 记得一定要映射端口,不然后期再改比较麻烦
2.安装python3,pip,uwsig,nginx
sudo apt update
sudo apt install python3.10
sudo apt install python3-pip
python3 -m pip install uwsgi
sudo apt install nginx
nginx配置
1.打开配置文件
nginx的版本
nginx version: nginx/1.18.0 (Ubuntu)
cd /etc/nginx/sites-enabled
vim default
修改配置文件
server {
# 监听端口
listen 8000 default_server;
listen [::]:8000 default_server;
# 转发uwsgi
location / {
uwsgi_pass 127.0.0.1:8888;
include /etc/nginx/uwsgi_params;
}
# Django的静态文件的绝对路径
location /static/ {
alias /data/git/django_test/django_blog/static/;
}
}
uwsgi配置
创建uwsgi.ini文件
在django的项目settings的同级目录里创建uwsgi.ini文件.
uwsgi.ini文件内容
[uwsgi]
# nginx
socket=0:8888
# http协议
# http=127.0.0.1:8888
# 项目当前工作目 与manage.py同级
chdir=/data/git/django_test/django_blog
# wsgi.py的绝对路径 与settings.py同级
wsgi-file=/data/git/django_test/django_blog/docker_djago/wsgi.py
# 进程数 不大于cpu核心数
process=4
# 进程数
threads=20
# pid记录文件
pidfile=uwsgi.pid
# 后台启动
daemonize=uwsgi.log
# 开启主进程
master=True
这里有2个坑
chdir的路径是manage.py的同级路径
wsgi-file的路径尽量写绝对路径,我在本地写相对路径可行,在云服务器写相对路径报错,后来写了绝对路径.
django的配置
DEBUG = False
ALLOWED_HOSTS = ['*']
uwsgi操作
每次修改配置需要重启服务
# 开启uwsgi
uwsgi --ini uwsgi.ini
# 关闭uwsgi
uwsgi --stop uwsgi.pid
nginx操作
# 检查配置文件
nginx -t
# 重启nginx
service nginx restart
补充
页面如果是
502,并且有nginx字样,
那就说明nginx能接收到请求,可能是uwsgi或者nginx反向代理配置的问题
页面如果是
Internal Server Error django
说明nginx和uwsgi都没问题,是django的问题
更多推荐
所有评论(0)