失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 基于docker部署前后端分离项目--->docker+Dockerfile+vue+nginx+uwsgi+django+socket+负载均衡

基于docker部署前后端分离项目--->docker+Dockerfile+vue+nginx+uwsgi+django+socket+负载均衡

时间:2023-11-05 18:34:15

相关推荐

基于docker部署前后端分离项目--->docker+Dockerfile+vue+nginx+uwsgi+django+socket+负载均衡

1. 介绍

本文基于阿里云服务器,安装的ubuntu20.04系统适用于conten7.5系列适用于ubuntu16.04以上系列 vue已经打包完成,所以不能使用我的vue项目

2. 部署

部署步骤

# 下载到opt目录下 git clone /yqmc/qq.git# 进入后端项目目录下cd /opt/qq/qapi# uwsgi(配置在后面,必须与manage.py同一级)vim uwsgi.ini# Dockfile(配置在后面,必须与manage.py同一级)vim Dockerfile# 静态文件的收集vim qapi/settings.py# 解开最后一行# 进行静态文件收集python3 manage.py collectstatic# 构建镜像docker build -t='q_d' .# nginx的配置# 创建目录用于挂载mkdir -p /opt/nginx/conf /opt/nginx/logstouch /opt/nginx/conf/nginx.conftouch /opt/nginx/conf/default.conftouch /opt/nginx/logs/error.logtouch /opt/nginx/logs/access.log# nginx做的事情正向代理静态文件正向代理django静态文件反向代理转发# 写入配置(配置在后面)vim /opt/nginx/conf/nginx.confvim /opt/nginx/conf/default.conf# 起dockerdocker run -di --name=t1 -v /opt/qq/qapi:/opt/qq/qapi -p 8081:8080 q_d# 起nginxdocker run --name=nginx -id -p 80:80 -v /opt/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /opt/nginx/conf/default.conf:/etc/nginx/conf.d/default.conf -v /opt/nginx/logs/error.log:/var/log/nginx/error.log -v /opt/nginx/logs/access.log:/var/log/nginx/access.log -v /opt/static:/opt/static -v /opt/qq/qweb/dist:/usr/share/nginx/html nginx

uwsgi.ini

[uwsgi]# 用socket无法直接访问页面,必须用nginx做反向代理socket=0.0.0.0:8080# 可以直接访问,不安全 用ab直接可以把服务器搞崩;http = 0.0.0.0:8080# 项目根目录(你的项目根目录,刚才进入opt pwd查看的路径)chdir = /opt/qq/qapi# wsgi文件所在的路径(相对于根目录找到wsgi.py)wsgi-file = qapi/wsgi.py# 进程数processes = 4# 线程数threads = 2# uwsgi服务器的角色master = True# 存放进程编号的文件# pidfile = uwsgi.pid# 日志输出(坑,解开的话,会后台运行,导致docker无法启动****,最好不要解开)# daemonize = uwsgi.log

Dockerfile

# 基于基础镜像,默认会去宿主机里找,没有会去hub上拉取。在没有,报错FROM python:3.6# 制作者MAINTAINER ymq# 暴露端口(可以不写) -p 映射,但最好留着EXPOSE 8080# 宿主机文件requirement.txt copy到容器内home路径下ADD ./requirement.txt /home/# 构建镜像执行执行命令RUN pip install -r /home/requirement.txt -i /simple/RUN pip install uwsgi -i /simple/# 用来保存数据,防止容器挂掉,数据丢失 可以不写 -v 映射,但最好留着VOLUME ["/home"]# 工作路径,WORKDIR --> cd WORKDIR /opt/qq/qapi# 执行的命令,当容器启动的时候,会自动执行使django以uwsgi启动CMD ["uwsgi", "--ini", "uwsgi.ini"]

nginx

nginx.conf

user nginx;worker_processes auto;error_log /var/log/nginx/error.log notice;pid /var/run/nginx.pid;events {worker_connections 1024;}http {include /etc/nginx/mime.types;default_type application/octet-stream;log_format main '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';access_log /var/log/nginx/access.log main;sendfile on;#tcp_nopushon;keepalive_timeout 65;#gzip on;# 解耦合,这也就是为什么,配置文件跨域分成两个include /etc/nginx/conf.d/*.conf;}

default.conf

server {listen 80;# 云服务器的IP,这里可以填写域名或IP,填写自己的server_name www.0528.ltd;location / {root /usr/share/nginx/html;index index.html index.htm;try_files $uri $uri/ /index.html;}}# 负载均衡的配置upstream u_text {server 106.14.42.253:8081;#server 106.14.42.253:8082;}server {listen 80;# 云服务器的IP,这里可以填写域名或IP,填写自己的server_name api.0528.ltd;# 当监听到当前IP端口80发来请求时,进行转发location / {uwsgi_pass u_text;# uwsgi与nginx通信的模块include /etc/nginx/uwsgi_params;}location /static {#alias 重命名alias /opt/static;}}

报错

修改错误xadmin(注释掉,修改成下面两句)

vim /usr/local/lib/python3.6/site-packages/xadmin/plugins/importexport.py# from import_export.admin import DEFAULT_FORMATS, SKIP_ADMIN_LOG, TMP_STORAGE_CLASS from import_export.formats.base_formats import DEFAULT_FORMATSfrom import_export.admin import ImportMixin, ImportExportMixinBase

错误修改mysql(decode-encode)

vim /usr/local/lib/python3.6/site-packages/django/db/backends/mysql/operations.py

ps git 链接删除

git remote rm origin

如果觉得《基于docker部署前后端分离项目--->docker+Dockerfile+vue+nginx+uwsgi+django+socket+负载均衡》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。