端口配置
部署Nginx
通过上面的端口配置,你就可以发现这里的nginx做了反向代理:
在/etc/nginx/conf.d/下创建test.conf
upstream mynginx { # 反向代理的域名
server 192.168.43.230:19000;
}
server {
listen 80;
charset utf-8;
client_max_body_size 75M;
location /static { # 配置静态文件访问
alias /home/zheng/djangotest/static; # Nginx服务器下
}
location / { # 配置代理
proxy_pass http://mynginx;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Nginx-Proxy true;
}
}
修改/etc/nginx/nginx.conf
... ...
http {
... ...
include /etc/nginx/conf.d/djangoweb.conf;
}
部署MySQL
对于一个django的项目来说,主要修改settings.py中SQL的配置:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'HOST': '192.168.43.230', # 数据库主机
'PORT': 13306, # 数据库端口
'USER': 'root', # 数据库用户名
'PASSWORD': 'root', # 数据库用户密码
'NAME': 'djangotest', # 43新建数据库==> 使用xadmin
'OPTIONS': {
'read_default_file': os.path.dirname(os.path.abspath(__file__)) + '/my.cnf',
'init_command': "SET sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER'",
},
}
}
修改好django的MySQL配置之后,还要把MySQL的Docker运行起来
部署DjangoWeb
对于django来说,主要还是把项目文件放到镜像中,配置好环境,并开启项目
当我们使用Nginx部署的时候,少不了uwsgi:
[uwsgi]
chdir = /home/zheng/djangotest
module = djangotest.wsgi:application
wsgi-file = djangotest.uwsgi.ini
pyenv = /root/.virtualenvs/Test/bin/python
;virtualenv = /root/.virtualenvs/Test
vacuum = true
master=true
processes = 8
thread = 8
max-requests = 5000
uid = nginx
gid = nginx
http = 0.0.0.0:8000
当我们配置好之后,访问到Nginx发现无法访问到静态文件,这里我是把静态文件的目录整个放到nginx上,不知道这样处理的对不对,后续看到别的方案,再整理整理
-- 将static目录放到/etc/nginx/conf.d/test.conf中指定的静态文件目录下
docker cp ./static docker_id:/root/
挂载静态文件目录
docker run -v:-v参数指定需要从
宿主机
挂载到容器
的目录
-- 将本机的/home/hyzhou/docker,挂载到镜像中的/data目录
sudo docker run --rm-i -t -v /home/hyzhou/docker:/data:rw ubuntu:14.04 /bin/bash
总结
这里没有使用Docker三剑客去做部署,而是一个一个docker启动,一个一个的设置映射端口的,其实使用多个docker部署没什么难度,是比较简单的,只是里面端口映射有点烦。特别是Nginx 反向代理
的时候,如果你对项目的端口映射
迷迷糊糊的,Nginx这里的转发
和映射
就糊涂了。一定要弄明白每个端口是做什么的。
评论区