当前位置: 首页 > news >正文

领导让部署一个系统服务,我该怎么弄?

在这里插入图片描述

文章目录

    • Docker
      • docker基础
      • 通过Dockerfile构建镜像
      • 打包镜像,离线使用
      • docker修改代理内容
    • Nginx
      • ubuntu安装nginx
      • nginx基本操作
    • 问题
      • Sqlalchemy可以反射一些表,另外一些反射为None
      • 查看服务器的架构和版本,查看本机外网IP
      • PG数据库创建角色创建库并授权

前两天接到一个任务,就是需要将现在运行的一个系统在另外的一个服务器上面重新部署一套,记录过程。
先简单描述一下这个系统项目的情况,项目使用Python写的,使用python3.9,结合django的web框架, 中间件大概有Redis、RabbitMq,协议有websocket,部署使用uwsgi服务器。

目标服务器操作系统为Ubuntu,版本是16.04, x86_64的架构;(后面这个架构信息会是一个很重要的角色。)

从前面来说,这是我第二次部署这个系统,前一次是直接在主机上面部署的, 因为当时我觉得那应该是我最后一次部署,所以就没有容器部署的想法;这次使用docker来快速部署,方便后面重复安装。

那最开始需要掌握的就是docker, dockerfile这些知识点, 前期我是不了解的,是在部署过程中学习到的一些内容。

Docker

docker基础

docker的基础的使用到的命令我在这里就简单描述一下:

docker pull image
docker run
docker start/stop/restart container
docker inspect image/container
docker exec -it container /bin/bash

例如:

// 使用postgres镜像构建容器
docker run --name sf_postgres2 -p 5432:5432 -e POSTGRES_PASSWORD=password -itd postgres:13
// 使用自建的镜像构建容器
docker run --name sf_aipaas -p 8080:8080 -itd sf_aipaas:v0.0.2

通过Dockerfile构建镜像

下面是使用到Dockerfile

# FROM python:3.9
# 使用一个参数名为BASE_IMAGE
ARG BASE_IMAGE
# 在FROM指令中使用该参数
FROM $BASE_IMAGE
# 维护者信息
MAINTAINER dengcong      
# 设置工作目录,也就是下面执行 ENTRYPOINT 后面命令的路径
# 必须是这个
WORKDIR /root/project# 将需要部署的目录添加进去
ADD ./aipass/ ./aipass/ 
ADD ./dist/ ./dist/ 
ADD ./equ_web/ ./equ_web/ 
ADD ./microRpa/ ./microRpa/ 
ADD ./web/ ./web/ 
ADD ./nginx.conf ./nginx.confRUN apt update
# 安装nginx
RUN apt install nginx -y
RUN mv /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak
RUN cp ./nginx.conf  /etc/nginx/
RUN mkdir -p /usr/share/nginx/logs
RUN touch /usr/share/nginx/logs/error.logs
RUN service nginx restart# 安装supervisorãjl
RUN apt install supervisor -y
# 设置语言为utf-8
ENV LANG C.UTF-8     
# 根据requirement.txt下载好依赖包
COPY ./aipass/requirements.txt ./
# RUN pip3 install -r requirements.txt
# 暴露端口
EXPOSE 8003 6002 8080 8081       
# EXPOSE 指令是声明运行时容器提供服务端口,这只是一个声明,在运行时并不会因为这个声明应用就会开启这个端口的服务。

然后根据Docker file构建出来镜像

docker built -t <images_name>:<tag> .
docker build -t sf_apaas:v0.0.1

也可以像Dockerfile内容里面一样,定义一个变量,在构建的时候传入

docker build --build-arg BASE_IMAGE=<image_name>:<tag> -t <images_name>:<tag> .
docker build --build-arg BASE_IMAGE=bb12e85b15da -t sf_apaas:v0.0.2 .

打包镜像,离线使用

// 转存
docker save -o <images_name>_<tag>.tar <image_name>:<tag>
docker save -o postgres_13.6.tar postgres:13.6
// 恢复
docker load -i <image_name>_<tag>.tar
docker load -i postgres_13.6.tar

docker修改代理内容

在大陆,dockerhub很不友好,很多时候会出现超时的情况,就出现了使用CloudFlare来代理的情况。

docker使用镜像报错:standard_init_linux.go:211: exec user process caused “exec format error“

上面这个问题主要就是使用的镜像和系统的架构不匹配的问题。开始时在mac上面构建镜像的,但是mac的架构是arm64,服务器的是x86_64的这两个架构不能用相同的镜像。

国内无法拉取Docker镜像了?这些方法拯救你的Docker

这个文章就是用来配置cloudflare配置dockerhub的代理,但是我的建议还是使用共有的代理源,比如下面这个github仓库里面的 issue里面所涉及到的:

CF-Workers-docker.io

// 写入
sudo tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://docker.dengcong.org"]  
}
EOF
// 重启
sudo systemctl daemon-reload
sudo systemctl restart docker

Nginx

直接在容器的内部安装使用nginx

ubuntu安装nginx

sudo apt install nginx

nginx基本操作

nginx的基本操作命令总结:

service nginx start/stop/restart
nginx -t
nginx -s reload

使用这种方式安装的nginx的一些基本信息

nginx 配置文件路径 /etc/nginx/nginx.conf
nginx 日志路径 /var/log/nginx/

Nginx从入门到精通(超级详细)(上)

问题

Sqlalchemy可以反射一些表,另外一些反射为None

表的所有者或者是表主键的影响。表结构的重要性,表主键,同步问题导致orm反射返回None。

查看服务器的架构和版本,查看本机外网IP

uname -a 
// Linux yscloudDev002 4.4.0-154-generic #181-Ubuntu SMP Tue Jun 25 05:29:03 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
lsb_release -a
//
LSB Version:    core-9.20160110ubuntu0.2-amd64:core-9.20160110ubuntu0.2-noarch:security-9.20160110ubuntu0.2-amd64:security-9.20160110ubuntu0.2-noarch
Distributor ID: Ubuntu
Description:    Ubuntu 16.04.6 LTS
Release:        16.04
Codename:       xenialcurl ifconfig.me
// 查看当前服务器的外网ipcat /proc/version
// Linux version 4.15.0-213-generic (buildd@lcy02-amd64-079) (gcc version 7.5.0 (Ubuntu 7.5.0-3ubuntu1~18.04)) #224-Ubuntu SMP Mon Jun 19 13:30:12 UTC 2023

PG数据库创建角色创建库并授权

create user testuser with password 'pwd';
CREATE DATABASE platform OWNER testuser;
GRANT ALL PRIVILEGES ON DATABASE platform TO testuser;

http://www.mrgr.cn/news/36300.html

相关文章:

  • 计算机视觉算法学习路线
  • 力扣 困难 25.K个一组反转链表
  • 新买的笔记本电脑如何打开和使用显示卡的问题
  • OpenHarmony(鸿蒙南向)——平台驱动指南【DAC】
  • python爬虫bs4库的用法
  • 字符串的join和os.path.join()
  • 一个示例了解什么是 API 集成
  • MICS:PythonJail沙箱逃逸(持续更新中)
  • docker和docker-compose安装
  • 开源的CDN:jsDelivr+Github加速图片加载
  • JAVA并发编程之final详解
  • 分享课程:VUE数据可视化教程
  • 应用层协议 --- HTTP
  • 注册安全分析报告:人民卫生音像
  • JavaScript --模版字符串用反引号
  • 三维重建的几何评价指标
  • Stable Diffusion的采样方法
  • 数值计算 --- 平方根倒数快速算法(上)
  • Chrome Cookie最大有效期
  • 问题记录:end value has mixed support, consider using flex-end instead