Amazon Linux2部署安装Jenkins

先决条件

  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 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

c++积累11-强制类型转换运算符(static_cast/reinterpret_cast/const_cast/dynamic_cast)

1、背景 将类型名作为强制类型转换运算符的做法是C语言的老式做法&#xff0c;C为保持兼容而予以保留。强制类型转换是有一定风险的&#xff0c;C引入新的转换机制&#xff0c;主要为了客服C语言转换的三个缺点&#xff1b; 1、没有从形式上体现转换功能和风险的不同。 例如&a…

深度强化学习——第一次知识小结(3.5)

一、策略网络的小结&#xff1a; 重要概念回顾&#xff1a; 1、动作价值函数QΠ(st,at) 动作价值函数是未来奖励总和Ut的条件期望&#xff0c;如果已知了策略函数Π与当前的状态st&#xff0c;QΠ就可以对所有的动作a打分&#xff0c;以此来决定选择哪个a 其实顾名思义就是…

【分布式版本控制系统Git】| 国内代码托管中心-Gitee、自建代码托管平台-GitLab

目录 一&#xff1a;国内代码托管中心-码云 1. 码云创建远程库 2. IDEA 集成码云 3. 码云复制 GitHub 项目 二&#xff1a;自建代码托管平台-GitLab 1. GitLab 安装 2. IDEA 集成 GitLab 一&#xff1a;国内代码托管中心-码云 众所周知&#xff0c;GitHub 服务器在国外&…

二:伙伴系统

内核空间内存分配 目录 内核空间内存分配 伙伴系统 首先从内核空间开始&#xff0c;讲解内存管理模式。 主要分为三种方式&#xff1a; 这篇文章我们集中注意于伙伴系统 伙伴系统 解决了外部碎片问题&#xff0c;针对大块内存分配设计 Linux中的内存管理的“页”大小为4…

第三章(4):自然语言处理入门

第三章&#xff08;4&#xff09;&#xff1a;自然语言处理入门 在本节中&#xff0c;我们将在简单文本数据上&#xff08;例如一个句子上&#xff09;&#xff0c;执行一系列基本操作&#xff0c;来帮助你熟悉NLP的工作原理&#xff0c;其中一些技术在第三章&#xff08;2&…

SLIC超像素分割算法

SLIC超像素分割算法 《SLIC Superpixels》 摘要 超像素在计算机视觉应用中越来越受欢迎。然而&#xff0c;很少有算法能够输出所需数量的规则、紧凑的超级像素&#xff0c;并且计算开销低。我们介绍了一种新的算法&#xff0c;将像素聚类在组合的五维颜色和图像平面空间中&a…

腾讯云COS+SpringBOot实现文件上传下载功能

文章目录 第一步&#xff1a;在.yml文件中配置对应秘钥内容第二步&#xff1a;完成COSConfig类编写第三步&#xff1a;编写Controller类Bug提示&#xff1a; 最近一直在做一个项目&#xff0c;需要支持视频&#xff0c;音频&#xff0c;图片的上传&#xff0c;前面介绍的都是把…

2023年制造业产品经理考NPDP有什么用?

产品经理国际资格认证NPDP是新产品开发方面的认证&#xff0c;集理论、方法与实践为一体的全方位的知识体系&#xff0c;为公司组织层级进行规划、决策、执行提供良好的方法体系支撑。 【认证机构】 产品开发与管理协会&#xff08;PDMA&#xff09;成立于1979年&#xff0c;是…

beef-xss浏览器劫持

beef-xss浏览器劫持 一&#xff0c;实验拓扑图二&#xff0c;租用一台阿里云&#xff0c;搭建docker环境和beef环境1.租一台阿里云服务器&#xff0c;系统选用ubuntu&#xff0c;计时收费的那种&#xff0c;一个小时几毛钱2.开启策略组3000端口&#xff0c;5000端口4.安装docke…

交友项目【查询好友动态,查询推荐动态】实现

目录 1&#xff1a;圈子 1.1&#xff1a;查询好友动态 1.1.1&#xff1a;接口分析 1.1.2&#xff1a;流程分析 1.1.2&#xff1a;代码实现 1.2&#xff1a;查询推荐动态 1.2.1&#xff1a;接口分析 1.2.2&#xff1a;流程分析 1.2.3&#xff1a;代码实现 1&#xff1a…

十五分钟带你学会 Electron

文章目录 什么是 Electron为什么要选择 Electron安装 Electron桌面CSDN实战Electron 基础配置Electron 进程主进程渲染进程主进程与渲染进程的区别主进程与渲染进程的通信 Electron 跨平台问题Electron 部署打包应用程序发布应用程序 Electron 跨端原理总结 什么是 Electron E…

数据库实验 | 第1关:建立和调用存储过程(不带输出参数的存储过程)

任务描述 本关任务&#xff1a; 该实验是针对数据表jdxx&#xff0c;该数据表有四个字段&#xff0c;分别是省份(sf)、城市(cs)、区县(qxmc)、街道(name)。 例如&#xff0c;查询天心区(qxmc)的所有字段的值结果如图所示 任务要求 建立存储过程 dqxx(in city varchar(10),i…

QT QPainter坐标系统和坐标变换

一、坐标变换函数 QPainter 在窗口上绘图的默认坐标系统如图下图所示&#xff0c;这是绘图设备的物理坐标。为了绘图的方便&#xff0c;QPainter 提供了一些坐标变换的功能&#xff0c;通过平移、旋转等坐标变换&#xff0c;得到一个逻辑坐标系统&#xff0c;使用逻辑坐标系统…

BEV+Transformer对无人驾驶硬件体系的巨大改变

摘要&#xff1a; BEVTransformer彻底终结了2D直视图CNN时代&#xff0c;BEVTransformer对智能驾驶硬件系统有着什么样的影响&#xff1f;背后的受益者又是谁&#xff1f; 图片来源&#xff1a;特斯拉 BEVTransformer是目前智能驾驶领域最火热的话题&#xff0c;没有之一&…

【区块链】走进web3的世界-DApp如何快速接入wall

在web3中&#xff0c;wall是您进入区块链的一个标识&#xff0c;每个用户使用的wall都不近相同&#xff0c;因此接入更多的wall是很有必要的&#xff0c;从用户角度来说&#xff0c;非必要情况下&#xff0c;我是不愿意去额外下载wall的。因此今天我们来聊一下&#xff0c;DApp…

开发常用的 Linux 命令2(文件的查看、搜索和权限)

开发常用的 Linux 命令2&#xff08;文件的查看、搜索和权限&#xff09; 作为开发者&#xff0c;Linux是我们必须掌握的操作系统之一。因此&#xff0c;在编写代码和部署应用程序时&#xff0c;熟练使用Linux命令非常重要。这些常用命令不得不会&#xff0c;掌握这些命令&…

【hello Linux】进程程序替换

目录 1. 程序替换的原因 2. 程序替换原理 3. 替换函数 4. 函数解释 5. 命名理解 6.简陋版shell的制作 补充&#xff1a; Linux&#x1f337; 1. 程序替换的原因 进程自创建后只能执行该进程对应的程序代码&#xff0c;那么我们若想让该进程执行另一个“全新的程序”这 便要用…

“分割一切”大模型SAM、超轻量PP-MobileSeg、工业质检工具、全景分割方案,PaddleSeg全新版本等你来体验!

图像分割是计算机视觉的一项基础技术&#xff0c;其目标是将图像中的像素按内容分成不同的类别。它在许多领域有重要应用&#xff0c;比如自动驾驶、工业质检、医疗图像分析、遥感图像解译等。 导读 PaddleSeg 是飞桨高性能图像分割开发套件&#xff0c;在图像分割领域做了大…

IC-14W网络IC卡读写器_银河麒麟桌面操作系统V10适配测试报告

银河麒麟操作系统产品NeoCertify 认证测试报告 系统版本&#xff1a;银河麒麟桌面操作系统V10 厂商名称&#xff1a; 广州荣士电子有限公司 认证产品&#xff1a;IC-14W网络IC卡读写器 测试日期&#xff1a; 2022-11-04 …

基于html+css的图片展示11

准备项目 项目开发工具 Visual Studio Code 1.44.2 版本: 1.44.2 提交: ff915844119ce9485abfe8aa9076ec76b5300ddd 日期: 2020-04-16T16:36:23.138Z Electron: 7.1.11 Chrome: 78.0.3904.130 Node.js: 12.8.1 V8: 7.8.279.23-electron.0 OS: Windows_NT x64 10.0.19044 项目…