Skip to content

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

About 1296 wordsAbout 4 min

docker

2024-09-21

前两天接到一个任务,就是需要将现在运行的一个系统在另外的一个服务器上面重新部署一套,记录过程。

先简单描述一下这个系统项目的情况,项目使用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

然后根据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
  • lsb_release -a // 可能有的服务器没有这个命令
  • cat /proc/version
  • cat /etc/os-release

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

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

Changelog

Last Updated: View All Changelog
  • feat(wiki): hammeSpoon: 复制出来的文件需要重新生成永链

    On 3/27/25

求求了,快滚去学习!!!

求求了求求了,快去学习吧!

【题单】贪心算法

不知道方向的时候,可以多看看书,书会给你指明下一步该干什么,加油!