Amazon Linux2部署安装Jenkins

news2025/2/27 2:09:30

先决条件

  1. 服务器配置要求
    • 256 MB of RAM

    • 1 GB of drive space (although 10 GB is a recommended minimum if running Jenkins as a Docker container)

  2. 需要部署安装JDK环境
  3. 部署安装的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.basejava.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 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/436312.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Altium Designer借助嘉立创添加PCB封装和3D模型

目录 引言打开立创专业版EDA&#xff0c;建立项目从立创商城找到器件编码添加PCB封装导出和修改3D封装 引言 由于使用Altium Designer的频率并不是特别高&#xff0c;所以每一次使用总是得东跌西撞的才回忆起一些使用步骤。因此&#xff0c;想在这里记录一下Altium Designer借…

【mysql】binlog日志

目录 1.1 基本说明1.2 binlog日志格式1.3 binlog日志查看1.4 binlog日志删除1.5 binlog操作示例 1.1 基本说明 1.全称binary log&#xff0c;二进制日志 2.记录了所有的DDL语句&#xff08;Data Definition Language数据定义语言&#xff09;和DML语句&#xff08;Data Manipul…

Java多线程中sleep()方法和wait()方法的区别

目录 具体而言 &#xff0c;sleep&#xff08;&#xff09;方法与wait&#xff08;&#xff09;方法的区别主要表现在以下几个方面&#xff1a; 引申&#xff1a;sleep&#xff08;&#xff09;方法和yield&#xff08;&#xff09;方法有什么区别&#xff1f; 常见面试题&a…

如何衡量算法的效率?时间复杂度空间复杂度

本篇博客会讲解如何衡量一个算法的效率。衡量算法的效率&#xff0c;主要有2个维度&#xff0c;分别是&#xff1a;时间复杂度和空间复杂度。 时间复杂度用来衡量算法的时间效率。时间复杂度越低&#xff0c;算法的耗时越短&#xff0c;效率则越高。空间复杂度用来衡量算法的空…

Space Cloud updated Crack

Space Cloud updated Crack Space Git Flow-对于实践连续发布周期的开发团队来说&#xff0c;在协调团队成员、建立流程和集成多个工具时&#xff0c;建立交付流可能需要付出巨大努力。为了更容易做到这一点&#xff0c;引入了JetBrains Space Git流&#xff0c;这是一个完整的…

同一热卖商品的高并发写难题 - Lua脚本扣减库存方案

目录 一、Mysql高并发写时的行锁难题 二、Redis的相关命令 1. WATCH命令 2. EVAL与EVALSHA命令 三、SpringBoot执行Lua脚本代码示例 1. 依赖包 2. Lua脚本sku.lua 3. 加载Lua脚本 4. 执行Lua脚本 四、参考资料 一、Mysql高并发写时的行锁难题 通常来说&#xff0c;秒…

百度大模型ERNIE3.0

大模型对比 文心全景图 ERNIE 3.0

《Java8实战》第9章 重构、测试和调试

9.1 为改善可读性和灵活性重构代码 Lambda 表达式可以帮助我们用更紧凑的方式描述程序的行为。 9.1.1 改善代码的可读性 可读性非常主观&#xff0c;但是通俗的理解就是“别人理解这段代码的难易程度”。改善可读性意味着你要确保你的代码能非常容易地被包括自己在内的所有…

【Java|基础篇】方法的定义使用、重载以及递归

文章目录 1.什么是方法2.方法的定义和使用返回值类型形参与实参方法执行过程 3.⭐方法的重载4.递归5. 总结 1.什么是方法 方法就是组织好的,可重复使用的具有某种功能的特定代码块 (类似于函数) 在我们平时写代码时,如果遇到会经常使用的一些功能相同的代码时,我们就可以把这段…

在线考试系统学员答题批改日志,实战练习

一、环境要求 sandbox-hdp 2.6.4 或同等版本自建的HadoopHiveSparkHBase 开发环境。 二、数据描述 这是一份来自于某在线考试系统的学员答题批改日志&#xff0c;日志中记录了日志生成时间,题目难度系数&#xff0c;题目所属的知识点 ID&#xff0c;做题的学生 ID&#xff0…

Oracle的学习心得和知识总结(二十一)|Oracle数据库可插拔数据库PDB的创建及删除

目录结构 注&#xff1a;提前言明 本文借鉴了以下博主、书籍或网站的内容&#xff0c;其列表如下&#xff1a; 1、参考书籍&#xff1a;《Oracle Database SQL Language Reference》 2、参考书籍&#xff1a;《PostgreSQL中文手册》 3、EDB Postgres Advanced Server User Gui…

华为OD机试(Java),5键键盘的输出

一、题目描述 有一个特殊的5键键盘&#xff0c;上面有a&#xff0c;ctrl-c&#xff0c;ctrl-x&#xff0c;ctrl-v&#xff0c;ctrl-a五个键。 a键在屏幕上输出一个字母a&#xff1b;ctrl-c将当前选择的字母复制到剪贴板&#xff1b;ctrl-x将当前选择的字母复制到剪贴板&#…

极氪要上市,吉利“基因改造”成功

文|智能相对论 作者| 落笔 当越来越多的国产新锐品牌入局新能源汽车市场&#xff0c;晚半拍的极氪却用较短的时间实现了主观逆袭。据统计&#xff0c;极氪001自问世以来便接连斩获消费者欢心&#xff0c;2022年极氪001更是实现了全年交付71941台的战绩&#xff0c;且持续蝉联…

ASP音乐网站的设计与实现

本文阐述了音乐网站的设计与实现&#xff0c;本系统采用ASPSQL Sever 2000作为开发工具。前台主要实现歌曲的分类显示及分类查询、歌曲的在线试听及下载、会员注册、登录以及最新音乐的新闻介绍&#xff0c;并且还为用户提供了在线交流的平台等功能&#xff1b;后台主要用于数据…

BGP路由优选实验

一&#xff0c;实验要求及其拓扑图 二&#xff1a;划分好IP的拓扑 三&#xff1a; 实验分析 1、使用 Preval 策略&#xff0c;确保R4通过R2到达192.168.10.0/24 1、抓取流量 [r4]ip ip-prefix PV permit 192.168.10.0 24 2、配置策略 [r4]route-policy PV permit node 10 [r4…

Web UI自动化测试框架

WebUI automation testing framework based on Selenium and unittest. 基于 selenium 和 unittest 的 Web UI自动化测试框架。 特点 提供更加简单API编写自动化测试。提供脚手架&#xff0c;快速生成自动化测试项目。自动生成HTML测试报告生成。自带断言方法&#xff0c;断言…

Linux常用环境配置

一、sqlite3 1、官网地址 SQLite Download Page 2、在Linux下载 右键复制源代码链接在linux用wget下载 wget https://www.sqlite.org/2023/sqlite-autoconf-3410200.tar.gz 3、解压 tar -xzvf sqlite-autoconf-3410200.tar.gz 4、编译 # 进入解压目录 cd sqlite-autoconf-34102…

App 版本更新插件介绍及使用指南

随着移动互联网的发展&#xff0c;APP 已经成为人们生活中必不可少的一部分&#xff0c;而版本更新也是 APP 发展过程中必不可少的环节。为了更好地实现 APP 版本更新和管理&#xff0c;我们推荐一个非常实用的插件&#xff1a;App 版本更新插件。 该插件支持强制更新、静默更…

Hystrix传递ThreadLocal范围对象的问题(最为细致的分析)

场景 在springcloud微服务体系下&#xff0c;从网关层开始要在request请求头放置一些重要参数&#xff0c;比如traceId&#xff0c;并要求在fegin之间的调用时&#xff0c;也能够一直传递下去&#xff0c;由于实际项目使用中&#xff0c;都是fegin集成了hystrix一起配合使用的…