序言:
在软件开发过程中,我们通常需要使用多个环境来进行开发、测试、预发布和生产。而软件部署时,如果采用纯人工的方式逐个通过jar的方式进行部署,会出现以下问题:服务器过多容易出错;修改配置可能存在未修改到位的情况;服务器部署权限一般只有开发服务器人员才有权限,涉及到服务器的安全。为了解决这些问题,我们可以借助持续构建工具Jenkins来实现自动化部署。本文将介绍如何使用Jenkins进行软件安装和配置。
一、软件安装
在使用Jenkins之前,我们需要先安装一些必要的软件,例如JDK。可以通过以下命令查看是否已经安装了Java:
```bash
rpm -qa | grep java
```
如果已经安装了Java,可以通过以下命令卸载:
```bash
rpm -qa | grep java | xargs rpm -e --nodeps
```
如果没有安装Java,可以通过以下命令安装JDK 1.8:
```bash
sudo yum install java-11-openjdk -y
sudo yum install java-1.8.0-openjdk* -y
```
接下来我们可以通过以下命令查看JDK的版本:
```bash
java -version
```
最后我们可以通过以下命令查看JDK的配置信息:
```bash
alternatives --config java
```
需要注意的是,新手不建议使用这种方式来配置环境变量,建议自己手动配置环境变量。
请根据提供的内容完成内容重构,并保持段落结构:
1. 切换到maven目录下的conf文件夹,打开文件vim settings.xml。
2. 配置本地卡路径:`
3. 配置阿里云镜像:
```xml
```
将以上内容放入到mirrors标签里面。
4. 安装git,用于jenkins拉取代码。执行以下命令:
```bash
yum install git git --version
```
5. 安装jenkins,使用离线安装。首先下载jenkins,选择一个较新的版本。由于之前的版本有漏洞,所以升级了一下版本。这里提供了两个地址,可以根据实际情况选择一个访问正常的地址进行下载。
```bash
wget https://mirrors.tuna.tsinghua.edu.cn/jenkins/war-stable/2.401.1/jenkins.war
wget https://mirrors.aliyun.com/jenkins/war-stable/2.332.3/jenkins.war
```
6. 启动jenkins,指定端口号为9090。执行以下命令:
```bash
nohup java -jar /usr/local/jenkins/jenkins.war --httpPort=9090 > /var/log/jenkins.log 2>&1 &
```
7. 开通防火墙9090端口。执行以下命令:
```bash
firewall-cmd --zone=public --add-port=9090/tcp --permanent
```
8. 更新防火墙配置。执行以下命令:
```bash
firewall-cmd --reload
```
在上图中放置密码,下载插件大约需要40分钟。安装新版本后,您需要安装gitee、maven、ssh等插件。在安装过程中,请记得勾选jenkins重启。这是一个已安装列表,其中aviable表示安装成功。
### Maven Integration plugin ###
### SSH version Publish Over SSH ###
### Deploy to container Plugin ###
在这里安装插件时,请确保勾选了Jenkins重启。以下是一些关键配置:
1. 使用maven_home设置maven的安装路径。
2. 创建项目时,请确保名字以实际项目名为准。
3. 在构建保存天数处填写代码构建版本保留的天数。
4. 构建最大个数为3,即构建的历史记录最大为多少,如下图所示。
5. 在配置gitee时,输入gitee地址,并指定分支dev(可以根据实际情况更改)。
6. 在Credentials中输入对应的用户名。
7. 生成gitee WebHook,具体操作方法如下:找到gitee的项目路径,点击管理,找到webHook密码并复制到下面的空白处。
8. 使用maven打包时,执行以下命令:clean package -U -Dmaven.test.skip=true。在maven版本文件中,您可以随意填写任何内容。
9. 执行shell命令echo hello来检查是否打包成功。如果显示success,说明打包成功。
10. 在/root/.jenkins/workspace/test/target路径下可以看到生成的jar包。至此,万里长征已经完成,只需将生成的jar包发送到远程服务器进行备份和启动即可。
连接远程服务器并重启服务(远程服务器指jenkins):首先远程连接服务器,然后将打包的应用发布到相应的服务器(测试或生产环境)。如果远程服务器和部署服务器不在同一个服务器上,您需要生成ssh秘钥。执行以下命令:
```bash
ssh-keygen -t rsa -C "xxx@163.com"
```
按照提示继续操作。注意将xxx@163.com替换为您的实际邮箱地址。最后,将生成的秘钥复制下来,去掉第一行和最后一行后进行复制。接下来,配置ssh:进入系统设置 -> 系统配置 -> 一直向下拉 -> 将远程服务器的私钥粘贴到这里。
请根据提供的内容完成内容重构,并保持段落结构:
```
name: 随便输入
Hostname: 服务器的ip
Username: 服务器的账号
Remote Directory: ssh的根目录(操作命令,都是基于该目录来的)
点击test,返回success说明ssh免登录成功
项目配置ssh
点击项目,修改ssh配置
source file: 是jenkins的jar位置
Remove prefix: 是去掉前缀
Remote Direcotory: 这里写的/,表示以配置的ssh根目录为准,之前社长配置的是/root/downlod
exec command: 是重启脚本,这里暂时只打印echo hello这一句话
到这里gitee上的代码,已通过jenkins下载到jenkins的workspaces上编程成一个jar(maven打包)
通过ssh,把对应jar,传输到远程服务器上
编写重启的脚本(1 kill进程,把之前的文件备份,再把该文件移动过来,再java -jar启动)
脚本:
vim test.sh
编写test脚本
```
以下是重构后的脚本内容:
```bash
#!/bin/sh
# 这里可替换为你自己的执行程序,其他代码无需更改
APP_NAME=iopace.jar
SSH_PATH=/root/download
PROJECT_PATH=/root/download/bak
echo " ==备份项目,并移动项目---"
# 备份jar按bak存放
cp -R $PROJECT_PATH/$APP_NAME $PROJECT_PATH/"$APP_NAME".bak
rm -rf $PROJECT_PATH/$APP_NAME
cp -R $SSH_PATH/$APP_NAME $PROJECT_PATH/$APP_NAME
echo " =====关闭Java应用======"
PROCESS=`ps -ef |grep $APP_NAME |grep -v grep|grep hg-learn.jar|awk '{print $2}'`
for i in $PROCESS do
echo "Kill the $1 process [ $i ]"
kill -9 $i
done
echo " =====启动Java应用======"
nohup java -jar \n -Xdebug \n -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=9091 \n -Duser.timezone=GMT+08 \n $PROJECT_PATH/$APP_NAME \n --spring.profiles.active=dev \n -Xdebug > /dev/null 2>&1 &
chmod +x test.sh
```
在Jenkins服务器上操作Vue项目打包,首先需要安装Node.js。可以通过以下步骤进行安装:
1. 下载Node.js安装包:
```bash
wget https://nodejs.org/dist/v16.6.0/node-v16.6.0-linux-x64.tar.gz
```
2. 解压安装包:
```bash
tar zxvf node-v16.6.0-linux-x64.tar.gz
```
3. 改名并赋权:
```bash
mv node-v16.6.0-linux-x64 node16
chmod 777 node16
```
接下来,需要配置环境变量。打开`/etc/profile`文件,添加以下内容:
```bash
export NODE_HOME=/usr/local/software/nodeJs/node16
export PATH=$NODE_HOME/bin:$PATH
source /etc/profile
```
验证Node.js和npm是否安装成功:
```bash
node -v
npm -v
```
为了加速Node.js的下载速度,可以使用国内镜像源。例如,使用阿里云镜像源,可以执行以下命令:
```bash
npm install -g cnpm --registry=https://registry.npmmirror.com #校验是否成功 cnpm -v
```
然后,安装NodeJS插件,配置NodeJS环境变量,创建Vue项目,构建的版本保留2天,最多存在3个构建版本。输入项目的git地址,指定分支master可以动态修改成其他的分支。
请根据以下步骤操作:
1. 点击生成webHook密码,记住框起来的两个地址,需要在gitee上配置。
2. 填入上面记住的两个信息。
3. 点击测试,没有报错,说明连接成功。
4. 添加nodeJS信息。如果nodeJS配置没有问题,下拉可以选择到我们配置好的nodeJS环境变量。
5. 设置shell脚本:
```bash
echo $PATH node -v npm -v source /etc/profile ###--legacy-peer-deps npm install ###测试环境 npm run build:stage # 删除dist压缩包 rm -rf ./dist.tar.gz; # 压缩dist文件 tar -zcvf dist.tar.gz ./dist
```
6. 打印当前地址,输入node的版本信息。
7. `npm run build --dev`,dev就是前端的不同环境的名称,可以动态切换。实际上就是在jenkins的工作目录下生成一个dist的文件夹。
8. 到这里我们已经实现把前台项目编译成文件夹运行咯。在实际部署过程中,可能存在jenkins和前台不是一台服务器的情况,所以我们还需要多操作一步:前台代码部署到另外一台服务器。
9. ssh server name是我们在项目ssh阶段已配置好的。Sources files实际上就是针对于jenkins的workspaces来说的,是相对路径dist/*的意思就是dist文件夹的内容,我都需要。Remove prefix不需要去掉前缀,因为是文件夹,所以不需要配置。Remote diretory上传路径,这里的/是相对于ssh配置的路径来说的(ssh我配置的是/root/download)。exec command就是需要执行的命令,后台打包有讲解,可以参考编写。到这里jenkins打包成vue就成功咯。
10. `echo hello cd /root/download ###删除之前的目录 rm -rf dist/ ###解压 tar -zxvf dist.tar.gz ###删除包 rm -rf dist.tar.gz cp -r /root/project/front/dist /root/project/front/dist-bak rm -rf /root/project/front/dist cp -r dist /root/project/front/dist`
请根据以下内容完成重构,并保持段落结构:
移动脚本参考:
1. 后台项目迁移:保留2天。
2. 输入git地址、账号和密码,选择分支。执行命令:`clean package -U -Dmaven.test.skip=true`。
3. 选择ssh,选择对应的ssh。例如:`**/iopace.jar`表示jenkins的名称。
4. 如果不输入target,则会在ssh配置的远程目录下创建一个target文件夹。新增target表示不需要创建。
5. 在当前目录下执行命令:`echo prod`,增加环境变量。
6. 备份文件:`source /etc/profile`,执行命令:`\cp -f /root/project/iopace/iopace.jar /root/project/iopace/iopace.jar.bak`。
7. 移动项目:`mv -f /root/download/iopace.jar /root/project/iopace/`。
8. 启动脚本:`sh /root/iopace.sh restart`。