亚马逊云美金充值 AWS亚马逊云部署Jenkins集成
你有没有过这种经历:凌晨两点,盯着屏幕里那行Connection refused,手指悬在键盘上,像极了被生活按在地上反复摩擦的社畜?别慌,今天咱们不聊人生哲理,专治AWS上Jenkins部署的各种拧巴事儿——不是官方文档那种“点击Launch Instance”,而是真·人话版部署实录,带呼吸感,带吐槽,带能直接粘贴运行的命令。
一、先别急着装Jenkins,先把地基夯结实
亚马逊云美金充值 很多人一上来就aws ec2 run-instances,结果安全组没开8080,Jenkins跑起来了但你连门都摸不到。这就像煮泡面不烧水,光撕包装袋——仪式感满分,实用性为零。
第一步:选个顺手的AMI。别硬刚Amazon Linux 2023(虽然它新,但Jenkins某些插件会跟你玩失踪)。老老实实用Amazon Linux 2(x86_64)——稳如狗,包管理器yum还活着,不搞systemd玄学。
第二步:密钥对,不是“密钥队”。名字别叫my-first-key,改叫jenkins-prod-2024,以后删实例时看到它,心里还有点敬畏——毕竟删错密钥,等于亲手锁死自己的服务器。
第三步:安全组,要“宽进严出”,但别宽成菜市场:
✅ 开放22(SSH)——你自己进得去
✅ 开放8080(Jenkins主端口)——但仅限你公司IP或跳板机IP,千万别0.0.0.0/0!
✅ 开放80/443(后面配Nginx用)——同上,精准放行
❌ 别开2375/2376(Docker远程API),除非你想给黑客送个全自动流水线。
二、登上去,别当哑巴操作员
执行:ssh -i "jenkins-prod-2024.pem" ec2-user@你的公网IP。
如果提示Permissions 0644 for 'xxx.pem' are too open——恭喜,你刚完成Linux新手三连:1)下载了pem 2)没改权限 3)开始怀疑人生。
速修:`chmod 400 jenkins-prod-2024.pem`。记住,这是Unix世界的铁律:私钥=身份证复印件,不能随便给人看,更不能满大街晾晒。
进去后第一件事:sudo su -(别嫌烦,后面所有操作都省得敲sudo)
然后更新系统:yum update -y ——别跳过,有些老AMI内核缺补丁,Jenkins启动时会静默崩掉,连日志都不给你留。
三、装Java?别用OpenJDK 17硬扛Jenkins 2.4x
Jenkins官网写着“支持Java 11+”,但实测Jenkins 2.441 + OpenJDK 17 = 登录页加载一半卡死,控制台报java.lang.NoClassDefFoundError: javax/xml/bind/DatatypeConverter——这是JAXB被Java 11+移除的经典悲剧。
解法:乖乖装Adoptium JDK 11(LTS):
curl -L https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.22%2B7/OpenJDK11U-jdk_x64_linux_hotspot_11.0.22_7.tar.gz --output jdk.tgz
tar -xzf jdk.tgz -C /opt/
export JAVA_HOME=/opt/jdk-11.0.22+7
export PATH=$JAVA_HOME/bin:$PATH
echo 'export JAVA_HOME=/opt/jdk-11.0.22+7' >> /etc/profile.d/java.sh
验证:java -version → 输出含11.0.22即成功。
四、Jenkins本体:别用rpm,用war手动托养
AWS官方repo里的jenkins-2.3xx.rpm,版本陈旧,插件仓库常404。我们走极简路:
cd /opt
wget https://get.jenkins.io/war/2.441/jenkins.war
mkdir /var/lib/jenkins && chown -R ec2-user:ec2-user /var/lib/jenkins
启动测试:java -Djenkins.home=/var/lib/jenkins -DJENKINS_HOME=/var/lib/jenkins -jar jenkins.war --httpPort=8080 &
等30秒,浏览器打开http://你的IP:8080——如果看到彩虹进度条,说明你已击穿第一道结界。
初始密码在哪?别翻文档!直接:cat /var/lib/jenkins/secrets/initialAdminPassword。复制粘贴,一气呵成。
五、别让Jenkins裸奔!Nginx反代+HTTPS是底线
8080端口暴露公网?等于把家门钥匙焊在小区公告栏上。必须套层Nginx:
yum install nginx -y
vim /etc/nginx/conf.d/jenkins.conf,内容如下:
upstream jenkins {
server 127.0.0.1:8080;
}
server {
listen 80;
server_name your-domain.com;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl http2;
server_name your-domain.com;
ssl_certificate /etc/letsencrypt/live/your-domain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/your-domain.com/privkey.pem;
location / {
proxy_pass http://jenkins;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_redirect http:// https://;
}
}
SSL证书?Certbot一键搞定:amazon-linux-extras install epel -y && yum install certbot python3-certbot-nginx -y,然后certbot --nginx -d your-domain.com。全程交互式,比点外卖还简单。
六、插件不是越多越好,是“够用即止”
装完Jenkins,别急着搜“Docker Pipeline”“Kubernetes”——先装这四个保命插件:
✔️ Blue Ocean:UI焕然一新,流水线可视化,告别XML噩梦
✔️ Role-based Authorization Strategy:权限分组,别让实习生删了生产Job
✔️ Config File Provider:把maven settings.xml、gradle.properties统一托管
✔️ SSHD Plugin:启用Jenkins内置SSH服务,方便脚本直连
卸载默认的Subversion和CVS——你2024年还在用SVN?建议重开人生。
七、来个真·实战:用Jenkins拉GitHub代码,构建一个Spring Boot
新建Pipeline任务 → 选择“Pipeline script from SCM” → Git URL填你的仓库 → 分支写main → Pipeline script路径填Jenkinsfile。
示例Jenkinsfile(精简无废话版):
pipeline {
agent any
environment {
JAVA_HOME = '/opt/jdk-11.0.22+7'
PATH = '/opt/jdk-11.0.22+7/bin:${PATH}'
}
stages {
stage('Checkout') {
steps { checkout scm }
}
stage('Build') {
steps {
sh 'mvn -B clean package -DskipTests'
}
}
stage('Deploy') {
steps {
sh 'scp target/*.jar ec2-user@prod-server:/opt/app/'
sh 'ssh ec2-user@prod-server "sudo systemctl restart myapp"'
}
}
}
}
保存,立即构建。看着控制台滚动的绿色文字,你会突然理解:所谓DevOps,不过是把重复劳动,换成一次写对、千次复用的踏实感。
最后说句掏心窝子的
AWS上跑Jenkins,从来不是技术问题,而是耐心问题。它不会像Serverless那样“自动扩缩容”,但它像台老式柴油机——轰隆作响,但每转一圈,都算数。你调通的每个端口、填对的每个路径、修好的每个依赖,都在悄悄加固你对云基础设施的肌肉记忆。
所以,下次再看到Waiting for Jenkins to finish starting up...,别关页面。泡杯茶,等它。它值得,你也值得。

