腾讯云服务器部署前后端服务

服务器:OpenCloudOS (兼容centos8)

后端:java+Springboot

前端:Vue


下载jdk

1)下载jdk11

wget https://download.java.net/openjdk/jdk11/ri/openjdk-11+28_linux-x64_bin.tar.gz

2)解压jdk

tar -xzvf openjdk-11+28_linux-x64_bin.tar.gz

3)环境变量配置

vim /etc/profile 加入以下内容

JAVA_HOME=/home/lighthouse/jdk-11

PATH=$JAVA_HOME/bin:$PATH

CLASSPATH=$JAVA_HOME/lib

export JAVA_HOME CLASSPATH PATH

4)刷新配置文件使生效 source /etc/profile

5)查看java版本信息 java -version

下载jenkins

下载 wget https://mirrors.aliyun.com/jenkins/redhat-stable/jenkins-2.426.2-1.1.noarch.rpm

安装

rpm -ivh jenkins-2.426.2-1.1.noarch.rpm

yum install jenkins

修改配置文件 /usr/lib/systemd/system/jenkins.service

修改user为root

修改端口

javahome

防火墙开启8180端口

启动jenkins sudo systemctl start jenkins

Manage Jenkins -》 Plugins -〉 Advanced settings -》 Update Site
修改插件镜像源
https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
https://updates.jenkins.io/update-center.json
http://mirror.xmission.com/jenkins/updates/update-center.json

-----------

服务器下载git

查看版本 git --version

如果版本过低则卸载 yum remove -y git

git下载地址:Index of /pub/software/scm/git/

[root@localhost ~]# yum -y install libcurl-devel expat-devel curl-devel  gettext-devel openssl-devel zlib-devel
 
[root@localhost ~]# yum -y install  gcc perl-ExtUtils-MakeMaker
 
[root@localhost ~]# cd /usr/local/src/
 
# 下面的地址就是通过上面的下载地址获取的
[root@localhost src]# wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.9.5.tar.gz
 
[root@localhost src]# tar -zvxf git-2.9.5.tar.gz
 
[root@localhost src]# cd git-2.9.5.tar
 
[root@localhost git-2.9.5]# make prefix=/usr/local/git all
 
[root@localhost git-2.9.5]# make prefix=/usr/local/git install

添加git到环境变量 vi /etc/profile

export PATH=$PATH:/usr/local/git/bin

刷新环境变量 source /etc/profile

查看更新后的git版本和所在路径

[root@localhost ~]# git --version
 
[root@localhost ~]# whereis git

进入jenkins设置

Path to Git executable填入whereis git展示的内容+/bin/git

如上面"whereis git"的地址为"/usr/local/git",则应该填入 "/usr/local/git/bin/git"
 

jenkins配置git信息

1)github上新建token, 并记录

Settings/Developer Settings / Personal access tokens (classic)

2) 去到要操作的远程仓库,添加一个 webhook

PayloadURL填的就是http://XXX(你的服务器,填localhost):端口号8080/github-webhook(照抄),其他的照抄

3)下载插件 GitHub Integration Plugin ,安装完后,重启jenkins

4)配置Github 服务器

系统管理—>系统设置—>GitHub --> Add GitHub Sever

API URL 输入 https://api.github.com ,点击Add添加信息

服务器下载maven

下载地址 Maven – Download Apache Maven

下载后上传压缩包到服务器, tar -zvxf解压缩

配置环境变量 vi /etc/profile

export MAVEN_HOME=/home/lighthouse/apache-maven-3.8.8 (这里改成自己的路径)

export PATH=$MAVEN_HOME/bin:$PATH

刷新环境变量 source /etc/profile

查看版本 mvn -v

CentOS8安装Maven-CSDN博客

需要在jenkins上下载Maven Integration 插件

jenkins配置maven信息

jenkins new item (后端)

General配置

Source Code Management 配置

Credentials是jenkins的账号密码,配置见下图

Branch Specifier 要和github的branch对应

Build Triggers

Build whenever a SNAPSHOT dependency is built

  • 这个选项允许你的项目在它的任何依赖项(特别是 Maven 依赖)被构建时自动触发构建。这通常用于当一个项目依赖于另一个项目的快照版本时,确保在依赖更新后立即重新构建。

Trigger builds remotely (e.g., from scripts)

  • 这个选项允许你通过网络请求远程触发构建。这可以通过调用 Jenkins 的 API 或者使用特定的脚本来实现。

Build after other projects are built

  • 这个选项会在你的项目在其他指定的项目构建完成后触发。这通常用于依赖关系,比如你需要等待一个或多个项目构建完成后才能开始自己的构建。

Build periodically

  • 这个选项允许你设置一个周期性的时间表来触发构建。你可以指定一个 cron 表达式来定义构建的频率和时间。

GitHub hook trigger for GITScm polling

  • 当配置了这个选项后,Jenkins 可以使用 GitHub 的 webhook 功能,在源代码仓库(如 GitHub)有新的提交时自动触发构建。这通常用于实现持续集成。

Poll SCM

  • 这个选项会让 Jenkins 定期轮询(检查)源代码管理(SCM)系统,如 Git,以查看是否有新的更改。如果有新的提交,Jenkins 将自动开始一个新的构建。

Build Environment

<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <configuration>
       <excludes>
          <exclude>
             <groupId>org.projectlombok</groupId>
             <artifactId>lombok</artifactId>
          </exclude>
       </excludes>
    </configuration>
</plugin>

Pre Steps

可以构建环境变量和执行shell脚本,我在这里选择shell脚本打jar包

echo "------------pre steps ---------------"

mvn clean package

echo "-----------mvn clean package done ---------------"

/var/lib/jenkins/workspace/3/target/mywiki.jar

Build

因为我的打包命令写在了prestep里,这里就可以空着了。

Root POM

  • 指定构建的根 POM 文件路径。这通常是 Maven 项目的 pom.xml 文件,它定义了项目的构建过程和依赖。

Goals and options

  • 输入你想要执行的 Maven 目标(Goals)和选项。例如,clean install 是常见的 Maven 命令,用于清理之前的构建产物并安装新的构建到本地仓库。

Advanced

高级设置,通常用于添加额外的 Maven 参数或系统属性。

MAVEN_OPTS

  • 用于指定传递给 Maven 进程的 JVM 参数,如内存设置 -Xms512m -Xmx2g。

Incremental build - only build changed modules

  • 如果启用,Maven 将只构建那些有更改的模块,以加快构建速度。

Disable automatic artifact archiving

  • 禁用自动将构建产物存档到 Jenkins 的构建目录。

Disable automatic site documentation artifact archiving

  • 禁用自动存档生成的站点文档(如 Javadoc)。

Disable automatic fingerprinting of consumed and produced artifacts

  • 禁用对消耗和生成的构件进行自动指纹记录,这有助于识别和定位构件。

Enable triggering of downstream projects

  • 如果勾选,当当前项目的构建完成后,会自动触发下游项目的构建。

Build modules in parallel

  • 允许 Maven 并行构建模块,这可以加快构建速度。

Use private Maven repository

  • 指定使用私有 Maven 仓库而不是公共仓库。

Resolve Dependencies during Pom parsing

  • 在解析 POM 文件时解析依赖,这可以加快构建速度。

Run Headless

  • 允许 Maven 在无头模式下运行,即不需要图形用户界面。

Process Plugins during Pom parsing

  • 在解析 POM 文件时处理插件,这可以确保插件配置被正确应用。

Use custom workspace

  • 允许 Maven 使用自定义的工作空间目录。

Maven Validation Level

  • 设置 Maven 校验级别,如 WARNING、ERROR 等。

DEFAULT

  • 使用默认的 Maven 配置。

Settings file

  • 指定 Maven 设置文件的位置,通常是一个 settings.xml 文件,它包含了 Maven 的配置信息,如仓库位置、构建代理等。

Use default maven settings

  • 使用 Jenkins 服务器上的默认 Maven 设置。

Global Settings file

  • 使用全局 Maven 设置文件,这通常在 Jenkins 的系统配置中定义。


 

Post Steps

"Post Steps"(后续步骤)是构建完成后执行的一系列操作。这些步骤可以用于各种目的,如通知、清理、部署或其他自定义任务。以下几个选项控制了何时执行这些后续步骤:

Run only if build succeeds

  • 这个选项意味着只有当构建成功完成时,后续步骤才会被执行。如果构建失败或者产生异常,这些步骤将被跳过。这适用于那些只对成功构建有意义的操作,比如部署到生产环境。

Run only if build succeeds or is unstable

  • 使用这个选项,即使构建结果为 "Unstable"(例如,自动化测试中有些测试用例失败),后续步骤也会执行。"Unstable" 通常表示构建本身完成了,但是存在一些警告或测试失败的情况。这可以用来进行一些额外的检查或者通知,即使构建不是完全成功的。

Run regardless of build result

  • 无论构建成功、失败还是处于不稳定状态,选择这个选项后,后续步骤都会执行。这通常用于那些无论构建结果如何都需要进行的操作,比如发送构建结果通知、清理工作空间、记录日志信息等。

选择哪种选项取决于你的具体需求和 CI/CD 流程。例如,你可能不希望在构建失败时部署应用,但你可能总是需要发送邮件通知团队成员构建的状态,或者清理一些临时文件。

生成的jar名字是在pom文件中定义的

<build>
    <finalName>mywiki</finalName>
</build>

Jar文件路径是 jenkins工作区+item名称+项目的jar包路径

在这里通过 java -jar 启动后端服务

#!/bin/bash
# 获取当前 job 名称
ITEM_NAME="${JOB_NAME}"

# 拼接完整的 JAR 文件路径
JAR_PATH="/var/lib/jenkins/workspace/${ITEM_NAME}/target/mywiki.jar"

# 检查 JAR 文件是否存在
if [ -f "$JAR_PATH" ]; then
    echo "JAR file found at: $JAR_PATH"
    # 这里可以添加启动 JAR 文件的命令
    java -jar ${JAR_PATH}
else
    echo "JAR file not found at: $JAR_PATH"
    # 可以在这里添加错误处理逻辑
fi

以下是前端部分


下载nodejs

Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,它允许你在服务器端运行 JavaScript 代码。Vue 项目中广泛使用了基于 Node.js 的工具和库。 Node.js 的安装会自带 npm(Node Package Manager),这是 JavaScript 的包管理器。

Node.js — Download Node.js®

下载的包为node-v20.13.0-linux-x64.tar.xz格式,

安装xz工具来解压缩 sudo dnf install xz

解压缩 tar xf node-v20.13.0-linux-x64.tar.xz

验证安装 node -v

jenkins配置nodejs

jenkins 安装NodeJS插件

配置

下载npm

npm 是 Node.js 的默认包管理器,用于管理项目中的依赖。Vue 项目中的大部分依赖都是通过 npm 来安装的。

下载 sudo dnf install npm

验证安装 npm -v

设置 npm 镜像 npm config set registry https://registry.npmmirror.com (2021 年淘宝发文称,npm 淘宝镜像已经从 registry.npm.taobao.org 切换到了registry.npmmirror.com。旧域名也于 2022 年 5 月 31 日停止服务)

查看镜像 npm config get registry

下载Vue CLI

Vue CLI 是 Vue 官方的命令行工具,它提供了快速搭建 Vue 项目和开发过程中的许多辅助功能。

下载 sudo npm install -g @vue/cli

打包Vue项目

npm run build

本地运行打包后的包:

sudo npm install -g serve

serve -s dist

服务器下载nginx

下载nginx
sudo dnf install epel-release
sudo dnf install nginx
启动 Nginx 服务,并设置开机自启
sudo systemctl start nginx
sudo systemctl enable nginx

检查是否成功启动 sudo systemctl status nginx

sudo cp -r /var/lib/jenkins/workspace/frontend_Item/web/dist/* /usr/share/nginx/html/my-vue-app/

配置 Nginx 运行 Vue 应用

  1. 创建 Vue 应用的目录: 假设你的 Vue 应用构建后的 dist 文件夹名为 my-vue-app,你需要在 Nginx 的网页根目录下创建一个相应的目录。
sudo mkdir -p /usr/share/nginx/html/my-vue-app
  1. 复制 Vue 应用的静态文件: 将 Vue 应用构建后的 dist 文件夹内容复制到 Nginx 的目录中。
sudo cp -r /path/to/your/vue/dist/* /usr/share/nginx/html/my-vue-app/

请将 /path/to/your/vue/dist 替换为你的 Vue 项目 dist 文件夹的实际路径。

  1. 配置 Nginx 虚拟主机: 创建一个新的 Nginx 配置文件,用于设置 Vue 应用的虚拟主机。
sudo vi /etc/nginx/conf.d/my-vue-app.conf

在文件中添加以下内容,然后保存退出:

server {
    listen 80;
    server_name my-vue-app;

    location / {
        root /usr/share/nginx/html/my-vue-app;
        try_files $uri $uri/ /index.html;
    }

    location /api/ {
        proxy_pass http://your-backend-api:port;
    }

    location /static/ {
        root /usr/share/nginx/html/my-vue-app;
    }

    error_page 404 /404.html;
    location = /404.html {
        internal;
    }

    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
        internal;
    }
}

请将 my-vue-app 替换为你的实际应用名称,http://your-backend-api:port 替换为你的后端 API 服务器地址和端口。

  1. 重启 Nginx 以应用配置
sudo systemctl restart nginx
  1. 访问你的 Vue 应用: 在浏览器中输入 http://your_server_ip 或 http://your_server_domain,你应该能看到你的 Vue 应用正在运行。

jenkins new item(前端)

通用、源码配置、触发器同后端配置。

Build Environment

Pre Steps

在这里配置代码打包信息。

vue代码打包后会生成一个dist文件夹,因为在我自己jenkins服务器上配置打包,CPU会直接98%, 所以我是在本地进行打包,然后再传代码到git, 这里的配置就可以省略。

#!/bin/bash
# 获取当前 job 名称
ITEM_NAME="${JOB_NAME}"
echo "===========${ITEM_NAME}=========="

# 拼接完整的 package.json路径
JSON_PATH="/var/lib/jenkins/workspace/${ITEM_NAME}/web/"
echo "===========${JSON_PATH}=========="
cd ${JSON_PATH}

echo "===========start  clean cache =========="
npm cache clean --force
echo "===========start  npm install =========="
npm install

echo "===========start  npm run build  dabao=========="
npm run build

Post Steps

把打包后的dist文件复制到nginx目录下,然后重启nginx

#!/bin/bash

echo "===========copy file start=========="
cp -r /var/lib/jenkins/workspace/${ITEM_NAME}/web/dist/* /usr/share/nginx/html/my-vue-app/
echo "===========copy file done=========="

echo "===========restart ngix start=========="
systemctl restart nginx

相关推荐

  1. 部署服务问题汇总

    2024-05-11 15:54:01       43 阅读
  2. flask+uwsgi+服务器 部署服务

    2024-05-11 15:54:01       24 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-05-11 15:54:01       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-05-11 15:54:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-05-11 15:54:01       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-05-11 15:54:01       20 阅读

热门阅读

  1. 找第二大的数(分治法)

    2024-05-11 15:54:01       11 阅读
  2. 个人如何做股指期货交易?

    2024-05-11 15:54:01       14 阅读
  3. 间隔采样视频的代码

    2024-05-11 15:54:01       13 阅读
  4. 低方差过滤

    2024-05-11 15:54:01       9 阅读
  5. how do i get chat‘s members‘s ids by bot in telegram

    2024-05-11 15:54:01       9 阅读
  6. GO:流程控制

    2024-05-11 15:54:01       8 阅读
  7. MYSQL变量的定义与使用

    2024-05-11 15:54:01       12 阅读
  8. Rust教程:贪吃蛇游戏(第 1/2 部分)

    2024-05-11 15:54:01       9 阅读
  9. 神经网络模型里面权重衰减的理解

    2024-05-11 15:54:01       9 阅读
  10. Oracle 10/11g 修改默认占用8080端口

    2024-05-11 15:54:01       11 阅读
  11. C++并发:线程函数传参(二)

    2024-05-11 15:54:01       11 阅读