先决条件
- 服务器配置要求
-
256 MB of RAM
-
1 GB of drive space (although 10 GB is a recommended minimum if running Jenkins as a Docker container)
-
- 需要部署安装JDK环境
- 部署安装的Jenkins版本为Version 2.400
部署安装JDK
1. 下载JDK软件包
wget https://corretto.aws/downloads/resources/11.0.19.7.1/amazon-corretto-11.0.19.7.1-linux-x64.tar.gz
2. 解压软件包
tar xzvf amazon-corretto-11.0.19.7.1-linux-x64.tar.gz
3.将解压之后的目录拷贝到/usr/local目录下
sudo mv amazon-corretto-11.0.19.7.1-linux-x64 /usr/local/
4. 配置JAVA_HOME环境变量信息,主要是往/etc/profile文件内容追加如下内容信息
export JAVA_HOME=/usr/local/amazon-corretto-11.0.19.7.1-linux-x64
export PATH=$JAVA_HOME/bin:$PATH
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib
重要说明:JDK版本从9之后开始默认没有集成jre,若要生成jre可以执行如下命令
自 JDK 9 起,Oracle 将 JRE 从 JDK 中移除。因此,在 JDK 11 及更高版本中,不能直接生成 JRE。
不过,您仍然可以使用 jlink 工具来创建一个自定义运行时镜像,其中只包含您需要的 Java 模块。使用 jlink 命令,您可以指定要包含在运行时镜像中的模块,并且可以通过使用
--output
选项来指定输出目录。例如:复制代码
jlink --module-path <path-to-modules> --add-modules <comma-separated-module-list> --output <output-dir>
在上面的命令中,
<path-to-modules>
是指包含模块的目录或路径,<comma-separated-module-list>
是以逗号分隔的模块列表,<output-dir>
是输出目录。例如,以下命令会将
java.base
和java.logging
模块包含在运行时镜像中,并将其输出到名为myjre
的目录中:复制代码
jlink --module-path $JAVA_HOME/jmods --add-modules java.base,java.logging --output myjre
这将创建一个包含所需模块的 JRE 镜像,您可以将其部署到目标计算机并使用它来运行您的应用程序。
实际生成过程
[ec2-user@master ~]$ ls /usr/local/amazon-corretto-11.0.19.7.1-linux-x64/
ADDITIONAL_LICENSE_INFO ASSEMBLY_EXCEPTION bin commitId.txt conf include jmods legal lib LICENSE man README.md release version.txt
[ec2-user@master ~]$ cd /usr/local/amazon-corretto-11.0.19.7.1-linux-x64/
[ec2-user@master amazon-corretto-11.0.19.7.1-linux-x64]$ jlink --module-path jmods --add-modules java.base,java.logging --output jre
[ec2-user@master amazon-corretto-11.0.19.7.1-linux-x64]$ ls
ADDITIONAL_LICENSE_INFO ASSEMBLY_EXCEPTION bin commitId.txt conf include jmods jre legal lib LICENSE man README.md release version.txt
[ec2-user@master amazon-corretto-11.0.19.7.1-linux-x64]$ ls jre/
bin conf include legal lib release
[ec2-user@master amazon-corretto-11.0.19.7.1-linux-x64]$
利用war文件部署Jenkins
1. 下载war文件
wget https://sg.mirror.servanamanaged.com/jenkins/war/2.400/jenkins.war
2.将文件移动到专门存放的目录
sudo mkdir -p /opt/jenkins
sudo cp /home/ec2-user/jenkins.war /opt/jenkins/
3. 直接运行如下命令启动Jenkins
java -jar jenkins.war 【启动之后,默认端口号为8080】
4. 使用 systemd 服务来管理jenkins
sudo useradd -m -s /usr/sbin/nologin jenkins
sudo su -
cat >/etc/systemd/system/jenkins.service<<EOF
[Unit]
Description=Jenkins Daemon
After=network.target
[Service]
Type=simple
ExecStart=/usr/local/amazon-corretto-11.0.19.7.1-linux-x64/bin/java -jar /opt/jenkins/jenkins.war
User=jenkins
Restart=always
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload
sudo systemctl enable jenkins --now
sudo systemctl status jenkins
实际测试效果
[root@master ~]# sudo mkdir -p /opt/jenkins
[root@master ~]# sudo cp /home/ec2-user/jenkins.war /opt/jenkins/
[root@master ~]# sudo systemctl disable jenkins
Removed symlink /etc/systemd/system/multi-user.target.wants/jenkins.service.
[root@master ~]# cat >/etc/systemd/system/jenkins.service<<EOF
> [Unit]
> Description=Jenkins Daemon
> After=network.target
>
> [Service]
> Type=simple
> ExecStart=/usr/local/amazon-corretto-11.0.19.7.1-linux-x64/bin/java -jar /opt/jenkins/jenkins.war
> User=jenkins
> Restart=always
>
> [Install]
> WantedBy=multi-user.target
>
> EOF
[root@master ~]# sudo systemctl daemon-reload
[root@master ~]# sudo systemctl enable jenkins --now
Created symlink from /etc/systemd/system/multi-user.target.wants/jenkins.service to /etc/systemd/system/jenkins.service.
[root@master ~]# sudo systemctl status jenkins
● jenkins.service - Jenkins Daemon
Loaded: loaded (/etc/systemd/system/jenkins.service; enabled; vendor preset: disabled)
Active: active (running) since Wed 2023-04-19 12:58:11 UTC; 3s ago
Main PID: 9340 (java)
Tasks: 36
Memory: 211.2M
CGroup: /system.slice/jenkins.service
├─9340 /usr/local/amazon-corretto-11.0.19.7.1-linux-x64/bin/java -jar /opt/jenkins/jenkins.war
├─9660 bash -c exec 4</dev/null exec 5</dev/null if [ -n "" ] && ! unlink ; then exit 1 fi run_in_cgroup () { local pid=$1; local starttime=$2; shift 2; local MYPID=$$; ...
└─9751 /usr/local/amazon-corretto-11.0.19.7.1-linux-x64/bin/java -Xint -XX:+UseSerialGC -Dlog4jFixerVerbose=false -cp /usr/share/log4j-cve-2021-44228-hotpatch/jdk11/Log4jHotPatch.jar Log4j...
Apr 19 12:58:11 master systemd[1]: Started Jenkins Daemon.
Apr 19 12:58:11 master java[9340]: Running from: /opt/jenkins/jenkins.war
Apr 19 12:58:11 master java[9340]: webroot: /home/jenkins/.jenkins/war
Apr 19 12:58:12 master java[9340]: 2023-04-19 12:58:12.100+0000 [id=1] INFO winstone.Logger#logInternal: Beginning extraction from war file
Apr 19 12:58:13 master java[9340]: 2023-04-19 12:58:13.377+0000 [id=1] WARNING o.e.j.s.handler.ContextHandler#setContextPath: Empty contextPath
Apr 19 12:58:13 master java[9340]: 2023-04-19 12:58:13.502+0000 [id=1] INFO org.eclipse.jetty.server.Server#doStart: jetty-10.0.13; built: 2022-12-07T20:13:20.134Z; git: 1... 11.0.19+7-LTS
Apr 19 12:58:14 master java[9340]: 2023-04-19 12:58:14.249+0000 [id=1] INFO o.e.j.w.StandardDescriptorProcessor#visitServlet: NO JSP Support for /, did not find org.eclips...ettyJspServlet
Hint: Some lines were ellipsized, use -l to show in full.
[root@master ~]#
5. 查看监听的端口
[root@master ~]# jps
23371 -- process information unavailable
9340 war
12525 Jps
[root@master ~]# netstat -tnlp|grep java
tcp6 0 0 :::8080 :::* LISTEN 9340/java
[root@master ~]#
访问Jenkins地址
1. 打开访问URL之后,显示如下
2. 根据要求输入管理员密码,登录效果如下
3. 可以直接选择【安装推荐的插件】
4. 根据提示创建用户
5.根据向导完善用户信息
6. 实例配置保持默认即可
使用Jenkins部署应用
1. 在github上创建项目空间,如“javacode"
2. 直接在jenkins服务器上部署安装git软件【具体安装过程忽略】
3. 在服务器上创建javacode目录,并初始化git环境
mkdir javacode
cd javacode
git init
4. 创建代码目录src目录
mkdir src
5.在src目录下开发第一个版本HelloWorld.java,源码如下
public class HelloWorld{
public static void main(String[] args){
System.out.println("Hello World");
}
}
6. 将src目录加入git
git add src
7. 配置git的用户信息
git config --global user.name "your_git_username"
git config --global user.email "your_email"
8.查看当前git管理的代码状态
git status .
[ec2-user@master javacode]$ git status ./
On branch master
No commits yet
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: src/HelloWorld.java
[ec2-user@master javacode]$
9. 提交代码到Github
git commit -m "Version 1"
git branch -M main
git remote add origin git@github.com:your_git_user_name/javacode.git
git remote set-url origin https://github.com/your_git_user_name/javacode.git
git push -u origin main
10. 前往git仓库确认代码是否成功push到git仓库中
11. Jenkins主页中创建一个项目任务
12. 选择Freestyle project【自由风格】项目,单击【确定】
13. 根据向导完善其他内容
在build steps中选择【增加构建步骤】,然后选择【执行shell】
其中执行的shell脚本配置信息如下
所有配置设置完成之后点击【保存】
点击【立即构建】
项目构建中
点击构建的任务然后点击【控制台输出】查看日志输出结果
上述报错主页是没有在Jenkins控制台上配置JAVA_HOME路径导致找不到,配置好后修复
最后成功构建的信息如下
参考资料
1. WAR file
2. Releases · corretto/corretto-11 · GitHub
3. Downloads for Amazon Corretto 17 - Amazon Corretto 17
4. javacode/HelloWorld.java at main · lgb861213/javacode · GitHub