IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> 项目自动化部署与手动部署 -> 正文阅读

[系统运维]项目自动化部署与手动部署

自动化部署

自动化部署参考自 coderwhy。

DevOps

传统的开发模式:

  • 项目完成 => build => test => release => operate

DevOps:

  • 模块完成 => build => test => release => operate

持续集成:

持续交付:
在这里插入图片描述
持续部署:
在这里插入图片描述

阿里云服务器的配置

  1. 这里选择的是 CentOS 8.2。
  2. 重置系统后在远程连接中设置 root 密码。
  3. 安全 - 防火墙:配置暴露的端口号限制的 ip 地址来源。0.0.0.0 表示任何 ip 地址都可以访问。

配置

在这里插入图片描述

CentOS 8 已经没有维护,需要进行换源才能正常下载:

# 进入配置文件夹
cd /etc/yum.repos.d/
# 删除旧的配置文件
rm *.repo
# 下载可以用的.repo文件
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo
# 生成缓存
yum makecache

搜索包:

dnf search java-1.8

下载包:

dnf install java-1.8.0-openjdk.x86_64

仓库中没有对应的 jenkins,需要使用 wget:

wget –O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat-stable/jenkins.repo
# 导入GPG密钥以确保您的软件合法
rpm --import https://pkg.jenkins.io/redhat/jenkins.io.key
# 或者
rpm --import http://pkg.jenkins-ci.org/redhat/jenkins-ci.org.key

编辑一下文件vi /etc/yum.repos.d/jenkins.repo

[jenkins]
name=Jenkins-stable
baseurl=http://pkg.jenkins.io/redhat
gpgcheck=1

安装。

启动Jenkins的服务:

systemctl start jenkins
systemctl status jenkins
/usr/lib/systemd/systemd-sysv-install enable jenkins

Jenkins 默认使用 8080 端口提供服务,所以需要加入防火墙。之后通过公网 IP 的8080 端口进入 Jenkins 的图形化界面。

获取输入管理员密码: cat /var/lib/jenkins/secrets/initialAdminPassword

安装推荐插件。

安装 nginx,启动,设置自启动:

...
systemctl enable jenkins

配置 nginx:

cd /root/
mkdir mail_cms
cd mail_cms/
touch index.html

vscode 中修改远程文件:

  • 使用插件
  • 连接服务器:ssh root@[ip地址]
  • 修改 etc/nginx/nginx.config:
    在这里插入图片描述
    在这里插入图片描述
  • 更改后重启 nginx。
  • 此时如果是手动部署,只需要使用工具将打包文件拖到文件夹里即可。

自动化部署

原理:

  • 将代码上传到一个 git 的仓库上;
  • Jenkins 每隔一段时间到该 git 仓库上下载代码并将其打包,再执行一段 shell 脚本将其部署到 nginx 上;

安装 git。

在 jenkins 中新建一个项目。

github 生成一个 token:

  • 头像 - Setting - Personal access tokens;
  • 创建 token,权限勾选 repo 即可;
  • 将生成的 token 填入上述的密码即可;
    在这里插入图片描述
    在这里插入图片描述

定时字符串从左往右分别是:分 时 日 月 周

#每半小时构建一次OR每半小时检查一次远程代码分支,有更新则构建
H/30 * * * *
#每两小时构建一次OR每两小时检查一次远程代码分支,有更新则构建
H H/2 * * *
#每天凌晨两点定时构建
H 2 * * *
#每月15号执行构建
H H 15 * *
#工作日,上午9点整执行
H 9 * * 1-5
#每周1,3,5,从8:30开始,截止19:30,每4小时30分构建一次
H/30 8-20/4 * * 1,3,5

在这里插入图片描述

在 Jenkins 中下载 Node 插件后点击重启。

You can specify a new Node installation under “Manage Jenkins” -> “Global Tool Configuration” -> “Add NodeJS”.需要选择对应的版本。

在这里插入图片描述

配置构建:

pwd
node -v
npm -v

npm install 
npm run build

pwd

echo '构建成功'

ls

# 删除/root/mail_cms文件夹里所有的内容
rm -rf /root/mail_cms/* 

cp -rf ./dist/* /root/mail_cms/

在这里插入图片描述
进入 /etc/sysconfig/jenkins 配置访问文件权限,然后重启 Jenkins:

在这里插入图片描述

设置项目文件夹的权限:

chmod 777 .

注意:

  • 项目中生产环境的 url 需要配置正确;

点击立即构建。

简单的手动部署

  1. 将项目进行打包;
  2. 使用 koa2 搭建运行环境(此处参考自):
npm init -y
npm i koa koa-static http-proxy-middleware -S
const Koa = require("koa");
const path = require("path");
const proxy = require("http-proxy-middleware");
const static = require("koa-static");
const fs = require("fs");

const app = new Koa();

const url = "http://xxx"; // 服务器地址

app.use(async (ctx, next) => {
  if (ctx.url.startsWith("/api")) {
    ctx.respond = false;
    return proxy({
      target: url, // 服务器地址
      changeOrigin: true,
      secure: false,
      pathRewrite: {
        "^/api": "/webapp/api",
      },
    })(ctx.req, ctx.res, next);
  }
  return next();
});

// 指定静态资源文件夹
app.use(static(path.join(__dirname, "./build")));

// 指定首页
app.use(async (ctx) => {
  ctx.body = fs.readFile("./build/index.html");
});

// 监听
app.listen(50001, () => {
  console.log("Listening 50001...");
});

在这里插入图片描述

  1. 尝试在本地运行是否能运行成功:
node app.js
  1. 将其上传至服务器;
  2. 尝试在服务器端是否能运行成功;
  3. 在服务器使用 pm2 启动项目(若 centOS 8:pm2: command not found,可参考至):
pm2 start app.js
pm2 list
  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-03-13 22:13:16  更:2022-03-13 22:14:31 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 1:19:29-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码