首页 > 其他分享 >领导让部署一个系统服务,我该怎么弄?

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

时间:2024-09-25 22:49:59浏览次数:3  
标签:怎么弄 RUN 部署 nginx 我该 conf 使用 镜像 docker

在这里插入图片描述

文章目录


前两天接到一个任务,就是需要将现在运行的一个系统在另外的一个服务器上面重新部署一套,记录过程。
先简单描述一下这个系统项目的情况,项目使用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;

标签:怎么弄,RUN,部署,nginx,我该,conf,使用,镜像,docker
From: https://blog.csdn.net/weixin_41288824/article/details/142534109

相关文章

  • 群晖NAS本地部署Bitwarden结合内网穿透实现跨网络跨平台远程连接
    文章目录前言1.拉取Bitwarden镜像2.运行Bitwarden镜像3.本地访问4.群晖安装Cpolar5.配置公网地址6.公网访问Bitwarden7.固定公网地址8.浏览器密码托管设置前言本文主要介绍如何在本地部署密码管理软件bitwarden并结合cpolar内网穿透工具,可以实现无公网IP远......
  • 丹摩智算:ChatGLM-6B模型的部署与使用指南
    文章目录......
  • 【AI换脸王教程】升级Facefusion3.0整合包,换脸+表情修改,本地部署永久不限使用
    你是否想过瞬间变脸于多张图片之间,甚至在热门视频中“穿越”成主角?又或者你还在因请真人模特、拍实景图、请剪辑师,花了一大半制作费用?GPT-4已经被称为最像“人”的AI,但你还没玩透AI?自媒体/电商从业者都想借助AI解放双手,降本增效,但却不知如何下手?今天揭秘的这款AI神器—FaceFusion3......
  • 本地部署运行 Google Gemma 开源大模型
    Google开源了Gemma大模型,有7B和2B两个版本,7B模型的能力已经是开源模型中的领先水平。Gemma可以轻松的在本地部署运行,如果你的显存在8G以上,可以体验7B版本,8G以下的话可以试试2B版本。部署过程如下:1、使用ollama运行Gemma模型2、使用Chatbox作为UI客户端......
  • 快速部署MySQL数据库
    一.下载对应的软件版本下载地址:http://mirrors.sohu.com/mysql/MySQL-5.6/备用地址:http://ftp.ntu.edu.tw/pub/MySQL/Downloads/[root@localhost~]#wget-qhttp://mirrors.sohu.com/mysql/MySQL-5.6/sql-5.6.36-linux-glibc2.5-x86_64.tar.gz二、解压、配置用户和权限[root@loca......
  • jenkins 搭建 uniapp h5部署服务
    项目中需要适用jenkins搭建uniapph5部署服务,初次接触,踩了很多坑,记录下主要分为两步骤:1.创建uniapp打包环境由于创建打包环境的步骤有手动确定项目,所以不能通过jenkins自动创建,需要先到目录中手动配置环境2.搭建jenkins自动化部署步骤任务把jenkins工作目录配置为刚才的环......
  • QT5程序部署提示缺少Qt5系统库问题的解决方法 symbol lookup error /libQt5XcbQpa.so.
    https://blog.csdn.net/qq_29852231/article/details/128853681 QT5程序部署提示缺少Qt5系统库问题的解决方法问题:在用QT5.12开发程序后,部署至现场(Ubuntu18/20)发现提示缺少QT5的平台库(platform)或者系统提供的QT5平台库无法正常支撑程序运行解析:经过研究发现,即时将Platform文件......
  • 如何部署北斗定位应用,基于国产自主架构LS2K1000LA-i处理器平台
    北斗卫星导航系统(以下简称北斗系统)是着眼于国内经济社会发展需要,自主建设、独立运行的卫星导航系统。经过多年发展,北斗系统已成为面向全球用户提供全天候、全天时、高精度定位、导航与授时服务的重要新型基础设施。图1北斗定位系统的应用优势强可控:北斗系统是国内自主研发的......
  • 大模型项目部署时Gradio Web页面打不开或者打开用不了及pydantic.errors.PydanticSche
    问题描述 在复现大模型demo时连接器和模型加载都没问题,但是gradio界面打不开或者打开后用不了原因分析:感觉应该是gradio的版本问题导致该文件缺少相关文件解决方案:可以首先按照上面要求下载文件https://cdn-media.huggingface.co/frpc-gradio-0.2/frpc_linux_a......
  • 最新商城小程序源码PHP全开源部署指南
    商城小程序是一种基于微信平台的移动端应用程序,可以帮助商家快速搭建自己的电商平台。通过商城小程序,用户可以方便地浏览商品、下单购买、查看订单等功能。商城小程序作为现代电商的重要组成部分,其开发和部署涉及多个环节,包括前端界面设计、后端逻辑实现、数据库设计与管理、服务器......