【Linux】云服务器自动化部署VuePress博客(Jenkins)
前言
博主此前是将博客部署在 Github Pages(基于 Github Action)和 Vercel 上的,但是这两种部署方式对于国内用户很不友好,访问速度堪忧。因此将博客迁移到自己的云服务器上,并且基于 Jenkins(一款开源持续集成工具)实现本地推送代码后,自动化集成部署
环境
云服务器:CentOS 7,OracleJDK 11
本地主机:Windows 11
安装配置
Jenkins
官网安装介绍(Redhat):Redhat Jenkins Packages
注意:最新版本 Jekins 最好适配 jdk11,使用 jdk8 可以正常启动,但是可能会有其他错误
导入密钥
sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io-2023.key
下载安装
yum install jenkins -y
查看目录
rpm -ql jenkins

启动应用
默认启动
# 端口默认8080
java -jar /usr/share/java/jenkins.war --httpPort=8090
常用命令
systemctl start jenkins
systemctl stop jenkins
systemctl status jenkins
# 开机自启动
systemctl enable jenkins
重启命令:http://<公网ip/域名>:8090/restart
修改配置
打开配置文件
vim /usr/lib/systemd/system/jenkins.service
配置文件修改如下(JDK 安装目录以本地为准)
# 安装的OracleJDK则需配置下面两项
Environment="JAVA_HOME=/usr/java/jdk-11.0.20"
Environment="JENKINS_JAVA_CMD=$JAVA_HOME/bin/java"
# 如果使用root用户则配置下面两项
User=root
Group=root
# 更换端口
Environment="JENKINS_PORT=8090"
初次启动时 systemctl start jenkins 执行时间可能略长
打开应用
浏览器访问:http://<公网ip/域名>:8090
注意:外部浏览器访问需要开启对应端口号防火墙,阿里云服务器还需要打开相应安全组

按照上述提示得到密码,执行如下命令
cat /root/.jenkins/secrets/initialAdminPassword
之后选择安装默认工具或是自己手动安装均可

直接使用 admin 用户登陆即可,密码就在上面的文件/root/.jenkins/secrets/initialAdminPassword中

创建任务
博客仓库地址
安装插件
安装 nvm-wrapper 插件(没有 nvm 可以直接安装 node 插件),并重启
CentOS7 不兼容 node 高版本问题参考文末博客仓库中的链接
注意:设置 nvm 默认 node 版本命令
nvm alias default <version>

General

源码管理

有时候添加上述 git 地址后会爆出错误:stderr: No ECDSA host key is known for github.com
解决方案
rm -f ~/.ssh/known_hosts
git ls-remote -h git@github.com:ReturnTmp/blog-vuepress-vdoing.git HEAD
添加凭证
选择 SSH Username with private key

描述和 ID 可以随意,最后 Key 直接复制 SSH 私钥即可

构建触发器


添加 Webhooks,Payload Url 填写 http://<公网ip/域名>:8090/github-webhook/ 即可,最后点击创建
构建环境


echo $WORKSPACE
node -v
npm -v
npm install
npm run build
构建成功后之后部署 Nginx 即可
部署 Nginx
nginx.conf(vuepress 自行更改为自己的工程名)
location / {root /var/lib/jenkins/workspace/vuepress/docs/.vuepress/dist;index index.html index.htm;try_files $uri $uri/ /index.html;}
访问应用
浏览器访问:http://<IP或域名>/

修改本地代码推送到远程分支,观察到 Jenkins 出现新的构建记录,WebHooks 即配置成功
本文对应博客仓库地址,本文也同步更新在仓库博客中,直接从仓库中进入博客链接首页即可看到文章
有任何问题或错误欢迎大家在评论区指出
参考文章
Jenkins实现Vuepress自动化部署(上)-安装配置Jenkins - 掘金 (juejin.cn)
Jenkins实现Vuepress自动化部署(下)-Jenkins任务配置自动化部署 - 掘金 (juejin.cn)
推荐阅读
Centos 7 安装 Jenkins-阿里云开发者社区 (aliyun.com)
本文由博客一文多发平台 OpenWrite 发布!
相关文章:
【Linux】云服务器自动化部署VuePress博客(Jenkins)
前言 博主此前是将博客部署在 Github Pages(基于 Github Action)和 Vercel 上的,但是这两种部署方式对于国内用户很不友好,访问速度堪忧。因此将博客迁移到自己的云服务器上,并且基于 Jenkins(一款开源持续…...
Golang字符串处理深入解析:探索 strings 标准库的全部方法
Golang 的 strings 标准库提供了许多用于处理字符串的函数。以下是一些主要的方法: Contains(s, substr string) bool: 检查字符串是否包含子串。ContainsAny(s, chars string) bool: 检查字符串是否包含字符集中的任何字符。ContainsRune(s string, r rune) bool:…...
如何在群辉NAS系统下安装cpolar套件,并使用cpolar内网穿透?
如何在群辉NAS系统下安装cpolar套件,并使用cpolar内网穿透? 文章目录 如何在群辉NAS系统下安装cpolar套件,并使用cpolar内网穿透?前言1. 在群辉NAS系统下安装cpolar套件2. 管理隧道列表3. 创建固定数据隧道 前言 群晖作为大容量存储系统,既可…...
opencv基础57-模板匹配cv2.matchTemplate()->(目标检测、图像识别、特征提取)
OpenCV 提供了模板匹配(Template Matching)的功能,它允许你在图像中寻找特定模板(小图像)在目标图像中的匹配位置。模板匹配在计算机视觉中用于目标检测、图像识别、特征提取等领域。 以下是 OpenCV 中使用模板匹配的基…...
搜索插入位置
题目描述: 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 示例 1: 输入: nums [1,3,5,6], target …...
Centos Linux快速复制文件并查看进度的方法(保留文件原始时间戳等属性)
用cp命令保证快速复制,screen保证不丢失你对cp命令执行情况的掌控。 需要用到screen软件包,防止复制过程中终端被关闭。 centos linux直到7默认都没有screen,需要安装一下 普通账户: sudo yum -y install screen root账户&am…...
牛奶产业链的工业“链主品牌”利乐是如何诞生的?
瑞典的利乐公司,一个在乳品产业链中占据重要地位的“链主品牌”,通过提供创新的包装材料和解决方案,在全球范围内占据了显著的市场份额。利乐从不生产一滴奶,却赚取了中国乳业 75%的利润,一年创收超过 800 亿人民币。在…...
【历史上的今天】8 月 11 日:苹果电脑之父诞生;阿里巴巴收购雅虎中国;OpenAI 击败电竞世界冠军
整理 | 王启隆 透过「历史上的今天」,从过去看未来,从现在亦可以改变未来。 今天是 2023 年 8 月 11 日,在 1999 年的今天,欧亚一些地区观赏到了一次壮丽的日全食景象。这次日全食是本世纪最后一次日全食,将持续两分钟…...
Flutter 报错 Could not create task ‘xxx‘.this and base files have different roots
遇到此问题也是先去百度了,有的说改了Gradle版本、gradle-wrapper.properties版本和ext.kotlin_version版本之后解决的,我没尝试,我用蹩脚的英语大致读了一下就不是这样说的,况且我用有道翻译了也不是这个意思啊,我不知…...
单调递增的数字——力扣738
文章目录 题目描述解法题目描述 解法 #include<iostream> #include<string>using namespace std;int monotoneIncreasingDigits...
STL文件格式详解【3D】
STL(StereoLithography:立体光刻)文件是 3 维表面几何形状的三角形表示。 表面被逻辑地细分或分解为一系列小三角形(面)。 每个面由垂直方向和代表三角形顶点(角)的三个点来描述。 切片算法使用…...
【分布式技术专题】RocketMQ延迟消息实现原理和源码分析
痛点背景 业务场景 假设有这么一个需求,用户下单后如果30分钟未支付,则该订单需要被关闭。你会怎么做? 之前方案 最简单的做法,可以服务端启动个定时器,隔个几秒扫描数据库中待支付的订单,如果(当前时间-订…...
Qt中ffmpeg API存储和显示摄像头视频
Qt中ffmpeg API存储和显示摄像头视频的功能需要之前写的视频ffmpegAPI的视频播放的流程。 代码源码位置:https://download.csdn.net/download/qq_43812868/88157743?spm1001.2014.3001.5503 一、存储和显示摄像头的视频的流程 这是读取打开视频文件的流程&#x…...
jfinal tomcat部署
首先明确一下 JFinal 项目是标准的 java web 项目,其部署方式与普通 java web 项目没有任何差别。Java Web 项目在 Tomcat 下部署有一些不必要的坑需要避免,所以撰写此文方便大家绕过一些坑,以下部署以 linux 为例,windows 与此类…...
Linux - MongoDB 数据库自动退出服务问题/闪退
问题:MongoDB 自动退出服务问题 原因: 由于 Mongodb 服务,使用过多系统内存,导致系统强制停止 Mongodb 服务。 解决方法: 在 mongodb.conf 配置文件内,添加新配置内容: wiredTigerCacheSi…...
B2B2C多语言电商系统平台搭建,多用户商城系统搭建(app、小程序、微商城)
搭建B2B2C多语言电商系统平台以及多用户商城系统(包括app、小程序、微商城)的步骤如下: 步骤一:需求分析和规划 1. 确定项目的目标和范围。明确平台所需的功能、支持的语言、用户权限等要求。 2. 分析竞争对手,并确定…...
【MySQL】创建高级联结
目录 一、使用表别名 二、使用不同类型的联结 1.自联结 2.自然联结 3.外部联结 3.使用带聚集函数的联结 4.使用联结和联结条件 一、使用表别名 别名除了用于列名和计算字段外,SQL还允许给表名起别名。 起别名有两个好处: 一个是缩短SQL语句&am…...
chatGPT应用于房地产行业
作为 2023 年的房地产专业人士,您无疑认识到技术对行业的重大影响。近年来,一项技术进步席卷了世界——人工智能。人工智能彻底改变了房地产业务的各个方面,从简化管理任务到增强客户互动。 在本文中,我们将探讨几种巧妙的人工智…...
java之jmh初识及使用
最近有场景需要数据支撑json的toJsonString方法和java原生的toString方法的运行速度,因此选用了JMH测试工具。 以下代码大致意思是:初始化一个list集合,放入100个对象,然后遍历这个集合,调用fastjson的toJsonString方…...
利用状态监测和机器学习提高冷却塔性能的具体方法
在现代工业生产中,冷却塔扮演着至关重要的角色,它们的性能直接影响着工艺流程的稳定性和效率。为了确保冷却塔的正常运行和减少系统故障,状态监测和机器学习成为了关键技术。 图.冷却塔(PreMaint) 在前文《基于人工智…...
第一份 Offer 决定论:去大厂做“边缘螺丝钉”,还是去 B 轮初创做“多面手”?
在秋招的决策阶段,很多同学会陷入一种认知陷阱:认为大厂的每一个岗位都自带光环,或者认为初创公司的高薪仅仅是“风险补偿”。事实上,第一份工作塑造的是你的工程审美、协作边界与解决问题的底层逻辑。要打破这种两难,…...
zoid 框架驱动开发:自定义适配器支持任意前端框架
zoid 框架驱动开发:自定义适配器支持任意前端框架 【免费下载链接】zoid Cross domain components 项目地址: https://gitcode.com/gh_mirrors/zo/zoid zoid 是一个强大的跨域组件框架,能够帮助开发者轻松构建和集成跨域组件。本文将详细介绍如何…...
热键侦探:彻底解决Windows热键冲突的终极方案
热键侦探:彻底解决Windows热键冲突的终极方案 【免费下载链接】hotkey-detective A small program for investigating stolen key combinations under Windows 7 and later. 项目地址: https://gitcode.com/gh_mirrors/ho/hotkey-detective 你是否曾经遇到过…...
Kubernetes网络管理:从CNI到Ingress的全面解析
Kubernetes网络管理:从CNI到Ingress的全面解析 🔥 硬核开场 各位技术大佬们,今天咱们来聊聊Kubernetes网络管理。别以为Kubernetes的网络就是简单的IP分配,实际上它涉及CNI插件、Service、Ingress、NetworkPolicy等多个组件&#…...
WarcraftHelper终极优化指南:5个简单步骤让魔兽争霸3从卡顿到180帧流畅运行
WarcraftHelper终极优化指南:5个简单步骤让魔兽争霸3从卡顿到180帧流畅运行 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 魔兽争霸3作为…...
如何永久保存微信聊天记录:WeChatMsg完整数据备份与可视化指南
如何永久保存微信聊天记录:WeChatMsg完整数据备份与可视化指南 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/…...
DLSS Swapper终极指南:5分钟学会智能管理游戏DLSS文件,彻底告别手动替换烦恼
DLSS Swapper终极指南:5分钟学会智能管理游戏DLSS文件,彻底告别手动替换烦恼 【免费下载链接】dlss-swapper 项目地址: https://gitcode.com/GitHub_Trending/dl/dlss-swapper 你是否曾经为了提升游戏帧率,手动在各个游戏目录中寻找并…...
保姆级教程:在野火STM32F429上用HAL库搞定LVGL 8.2移植(附触摸屏适配避坑)
野火STM32F429开发板LVGL 8.2移植实战指南 拿到野火STM32F429挑战者开发板和5寸电容屏,想快速搭建LVGUI开发环境却卡在HAL库配置、文件结构组织、触摸驱动适配等问题上?这篇保姆级教程将带你一步步完成LVGL 8.2在STM32F429平台上的完整移植,特…...
淘宝淘金币自动化脚本:每天节省25分钟的全能任务助手终极指南
淘宝淘金币自动化脚本:每天节省25分钟的全能任务助手终极指南 【免费下载链接】taojinbi 淘宝淘金币自动执行脚本,包含蚂蚁森林收取能量,芭芭农场全任务,解放你的双手 项目地址: https://gitcode.com/gh_mirrors/ta/taojinbi …...
Cosmos-Reason1-7B多场景:支持厨房、道路、车间、实验室四类物理域
Cosmos-Reason1-7B多场景:支持厨房、道路、车间、实验室四类物理域 1. 模型概述 Cosmos-Reason1-7B是NVIDIA开源的一款7B参数量的多模态物理推理视觉语言模型(VLM),作为Cosmos世界基础模型平台的核心组件,专注于物理理解与思维链(CoT)推理能…...
