Django + Docker + Supervisor 部署WEB服务

Django部署web服务
 Pip install Django
 django-admin.py startproject django .
 编写前后端代码,配置setting.py
Docker打包程序
2.1Docker 离线安装
根据自身系统在download.docker.com/linux下载对应的docker版本
目前黄区服务器的下载版本docker-ce-18.03.c3-1.el7.centos.x86_64.rpm
Centos 安装步骤:
yum install docker-ce-18.03.c3-1.el7.centos.x86_64.rpm
测试docker是否安装成功:
Docker –v
不出错则安装成功
Tips:
当离线安装Docker缺依赖包时可到http://mirrors.163.com/根据自己的系统下载对应的依赖包。
2.2 Dockerfile生成docker镜像
 Dockerfile编写
FROM continuumio/anaconda3:5.2.0

COPY requirements.txt /home
COPY django /home
RUN yum -y update gcc
&& yum -y install gcc+ gcc-c++
&& pip install -i https://pypi.doubanio.com/simple/ --trusted-host==pypi.doubanio.com --no-cache-dir -r requirements.txt
Expose 8000
各个参数意义:
From 拉取镜像,若本地有该镜像则从本地拉取,没有则从DockerHub拉取
Copy 复制本地文件至Docker镜像
Run 运行指令
Expose 暴露端口

根据dockerfile生成docker镜像
docker build –t django:v1.0 .
-t 后的参数为镜像名以及tag标签
测试docker镜像
docker run –p 8000:8000 –itd django:v1.0 python manage.py runserver
在本地输入10.121.68.68:8000即可访问部署的web程序
Supervisor守护进程
 Pip install supervisor
 查找anaconda所在路径whereis anaconda cd /root/anaconda3/bin
 echo_supervisord_conf > supervisored.conf
 mkdir /etc/supervisor/conf.d
 cp supervisored.conf /etc/supervisor
 修改配置文件supervisored.conf最后一行
[include]
Files = conf.d/*.conf
 在conf.d文件夹下编写控制文件
【[program:DjangoServer] ;程序名称,终端控制时需要的标识
command=docker run –p 8000:8000 –I django:v2.0 python manage.py runserver 0.0.0.0:8000 ; 运行程序的命令
directory=/data/LYR/ ; 命令执行的目录
autorestart=true ; 程序意外退出是否自动重启
stderr_logfile=/var/log/django.err.log ; 错误日志文件
stdout_logfile=/var/log/django.out.log ; 输出日志文件
environment=ASPNETCORE_ENVIRONMENT=Production ; 进程环境变量
user=root ; 进程执行的用户身份
stopsignal=INTPS
 测试是否生效
supervisord -c /etc/supervisor/supervisord.conf
ps -ef | grep DjangoServer
 配置supervisor开机自启动
新建一个“supervisord.service”文件
【[Unit]
Description=Supervisor daemon

[Service]
Type=forking
ExecStart=/usr/bin/supervisord -c /etc/supervisor/supervisord.conf
ExecStop=/usr/bin/supervisorctl shutdown
ExecReload=/usr/bin/supervisorctl reload
KillMode=process
Restart=on-failure
RestartSec=42s
[Install]
WantedBy=multi-user.target】
将文件拷贝至"/usr/lib/systemd/system/supervisord.service"
systemctl enable supervisord
打包过程中BUG记录
###问题:ModuleNotFoundError: No module named ‘corsheaders’
解决方案:pip install django-cors-headers
###问题:运行docker命令时Error:The input device is not a TTY
解决方案:把docker run -itd 修改为docker run -i
###问题:运行pytorch时 Segmentation Fault 错误
解决方案:torch 版本不匹配。注:torch 1.2.0及以后cpu版本安装时命令为pip install torch+cpu
###问题:Django 跨域问题
解决方案:
1.pip install django-cors-headers
2. setting.py 添加
INSTALLED_APPS = [
‘django.contrib.admin’,
‘django.contrib.auth’,
‘django.contrib.contenttypes’,
‘django.contrib.sessions’,
‘django.contrib.messages’,
‘django.contrib.staticfiles’,
corsheaders’,
]
MIDDLEWARE = [
‘django.middleware.security.SecurityMiddleware’,
‘django.contrib.sessions.middleware.SessionMiddleware’,
’corsheaders.middleware.CorsMiddleware’,
‘django.middleware.common.CommonMiddleware’,
‘django.middleware.csrf.CsrfViewMiddleware’,
‘django.contrib.auth.middleware.AuthenticationMiddleware’,
‘django.contrib.messages.middleware.MessageMiddleware’,
‘django.middleware.clickjacking.XFrameOptionsMiddleware’,
]
CORS_ALLOW_CREDENTIALS = True

CORS_ORIGIN_ALLOW_ALL = True

APPEND_SLASH = False
###问题:unlinking stable socket /tmp/supervisor.sock
解决方案:unlink /tmp/supervisor.sock
###问题:supervisord 启动失败 Error: Another program is already listening on a port that one of our HTTP server
解决方案:
ps -ef |grep supervisord
kill -s SIGTERM “PID”
###问题:unix:///var/run/supervisor/supervisor.sock no such file
问题描述:安装好supervisor没有开启服务直接使用supervisorctl报的错
解决方案:supervisord -c /etc/supervisord.conf

©️2020 CSDN 皮肤主题: 1024 设计师:上身试试 返回首页