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

news2024/11/15 17:18:32

在这里插入图片描述

文章目录

    • 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.conf

RUN 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:       xenial

curl ifconfig.me
// 查看当前服务器的外网ip

cat /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.coloradmin.cn/o/2165618.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CentOS7 离线部署docker和docker-compose环境

一、Docker 离线安装 1. 下载docker tar.gz包 下载地址&#xff1a; Index of linux/static/stable/x86_64/ 本文选择版本&#xff1a;23.0.6 2.创建docker.service文件 vi docker.service文件内容如下&#xff1a; [Unit] DescriptionDocker Application Container Engi…

SpringBoot中XXL-JOB实现灵活控制的分片处理方案

❃博主首页 &#xff1a; 「码到三十五」 &#xff0c;同名公众号 :「码到三十五」&#xff0c;wx号 : 「liwu0213」 ☠博主专栏 &#xff1a; <mysql高手> <elasticsearch高手> <源码解读> <java核心> <面试攻关> ♝博主的话 &#xff1a…

9.25盒马鲜生一面

1.自我介绍 2.css两种盒子模型 ​3.rem和em 4.px概念 5.transition和animation的区别 6.移动端适配方案 7.vh、vw、% 8.js基本数据类型 9.call、apply、bind的区别 10.js实现继承的方法 11.get和post的区别 12.web安全&#xff08;XSS&#xff0c;CSRF&#xff09; …

甩锅笔记:好好的服务端应用突然起不来,经定位是无法访问外网了?测试又说没改网络配置,该如何定位?

在工作中、团队协作时&#xff0c;可能遇到的问题&#xff0c;如集成测试等场景。但是作为偏前端的全栈&#xff0c;锅从天上来&#xff0c;不是你想甩就能甩&#xff0c;尤其面对测试等比较强势的团体&#xff08;bug创造者&#xff09;&#xff0c;你必须有强大的心理承受能力…

Vscode Run Code Py中文乱码问题

F1打开命令行界面&#xff0c;找到settings.json文件&#xff1b;选Workspace这个 找/直接输"code-runner.executorMap" python值改为"$pythonPath $fullFileName"

进程和线程的区别;线程的多种创建方式;Thread 类及常见方法;线程的状态

文章目录 进程和线程的区别线程的创建方式继承Thread&#xff0c;重写run&#xff08;创建单独的类/匿名内部类&#xff09;实现Runnable&#xff0c;重写run&#xff08;创建单独的类/匿名内部类&#xff09;实现Callable&#xff0c;重写call&#xff08;创建单独的类/匿名内…

828华为云征文 | 云服务器Flexus X实例,Docker集成搭建 Jupyter Notebook

828华为云征文 | 云服务器Flexus X实例&#xff0c;Docker集成搭建 Jupyter Notebook Docker 部署 Jupyter Notebook 是一个方便且快速的方式&#xff0c;可以帮助你搭建一个用于数据分析、机器学习和科学计算的环境 华为云端口放行 服务器放行对应端口9955 Docker安装并配置镜…

计算物理精解【1】-C++计算(1)

文章目录 基础hello,worldgetlinestd::cin引用与指针函数数据类型基本数据类型更多类型sizeof 正则表达式单次匹配多次匹配组匹配字符串的匹配 splitmap基础实战整型变量符号表简单分析生成整型变量表 正则表达式基础regex_matchregex_replaceswap Eigen概述简单例子Matrix基础…

DNS协议解析

DNS协议解析 什么是DNS协议 IP地址&#xff1a;一长串唯一标识网络上的计算机的数字 域名&#xff1a;一串由点分割的字符串名字 网址包含了域名 DNS&#xff1a;域名解析协议 IP>域名 --反向解析 域名>IP --正向解析 域名 由ICANN管理&#xff0c;有级别&#xf…

2.1 HuggingFists系统架构(二)

部署架构 上图为HuggingFists的部署架构。从架构图可知&#xff0c;HuggingFists主要分为服务器(Server)、计算节点(Node)以及数据库(Storage)三部分。这三部分可以分别部署在不同的机器上&#xff0c;以满足系统的性能需求。为部署方便&#xff0c;HuggingFists社区版将这三部…

Python | Leetcode Python题解之第419题棋盘上的战舰

题目&#xff1a; 题解&#xff1a; class Solution:def countBattleships(self, board: List[List[str]]) -> int:return sum(ch X and not (i > 0 and board[i - 1][j] X or j > 0 and board[i][j - 1] X)for i, row in enumerate(board) for j, ch in enumerat…

vue全局注册和局部注册的区别

1.全局注册&#xff1a; a、b为注册的组件 2.局部注册 3.有图可以看出&#xff0c;全局注册会影响白屏时间

2024最新Python Debugger工具pdb的用法(深度学习项目),了解输入输出的形状大小

侵入式方法 &#xff08;在被调试的代码中添加以下代码然后再正常运行代码&#xff09; import pdb pdb.set_trace() 例如&#xff1a; 正常运行训练文件后&#xff1a; 在命令行发现输出以下内容&#xff1a; 出现了(Pdb) 的提示符&#xff0c;说明已经打开pdb 在使用Pyth…

解决fatal: unable to access ‘https://........git/‘: Recv failure: Operation time

目录 前言 解决方法一 解决方法二 解决方法三 解决方法四 总结 前言 在使用 Git 进行代码拉取时&#xff0c;可能会遇到连接超时的问题&#xff0c;特别是在某些网络环境下&#xff0c;例如公司网络或防火墙严格的环境中。这种情况下&#xff0c;Git 无法访问远程仓…

红帽认证会过期吗?一文给你解释清楚!

红帽认证以其权威性、实用性和高含金量受到了广大IT人士的青睐&#xff0c;尤其是Linux领域。然而&#xff0c;许多人在考取红帽认证后&#xff0c;心中都有一个疑问&#xff1a;红帽认证会过期吗?本文将为大家详细解答这个问题。 红帽认证是什么? 红帽认证是由红帽公司(Re…

Windows 2003系统的防护技巧,禁止IPC$空连接

一、修改管理员帐号和新建“陷阱”帐号 多年以来&#xff0c;微软一直在强调建议重命名Administrator账号并禁用Guest账号&#xff0c;提高计算机的安全性。Windows Server 2003系统&#xff0c;Guest 账号是默认禁用的&#xff0c;管理员账号默认是Administrator&#xff0c;…

html 几行的空间分成3个区域

1.代码 <!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <meta name"viewport" content"widthdevice-width, initial-scale1.0"> <title>三个区域示例</title> …

深入解析Python 中的 sortedcontainers 库:高效的排序数据结构

在日常的 Python 编程中&#xff0c;列表&#xff08;list&#xff09;、集合&#xff08;set&#xff09;和字典&#xff08;dict&#xff09;是常用的数据结构。然而&#xff0c;在某些特定的场景下&#xff0c;我们需要对数据进行排序&#xff0c;并且希望在插入、删除或访问…

4.2章节python中选择结构

选择结构主要通过if、elif&#xff08;else if的缩写&#xff09;和else语句来实现。这些语句允许程序根据条件执行不同的代码块。另外还有表达式中多个条件连接等。 一、基本语句if if 语句后面跟一个条件表达式&#xff0c;如果条件为真&#xff08;True&#xff09;&#…

Machine Learning Specialization 学习笔记(4)

文章目录 前言一、模型评估训练集常规训练集线性回归逻辑回归 交叉验证集 偏差与方差正则化 学习曲线数据集的添加&#xff08;数据增强&#xff09;迁移学习精确率与召回率 二、决策树基本概念决策树的工作原理决策树的优点决策树的缺点决策树算法的变体决策树在Python中的实现…