温馨提示×

怎样在Linux上运行Jenkins

小樊
34
2026-01-04 18:45:37
栏目: 智能运维

在 Linux 上运行 Jenkins 的完整步骤

一 准备环境

  • 安装并验证 Java:Jenkins 2.357+ 要求 Java 11,推荐安装 OpenJDK 11
    • Ubuntu/Debian:
      sudo apt update
      sudo apt install -y openjdk-11-jdk
      java -version
      
    • CentOS/RHEL:
      sudo yum install -y java-11-openjdk java-11-openjdk-devel
      java -version
      
  • 确保服务器可访问外网(用于下载插件/更新),并规划访问端口(默认 8080)。

二 安装方式

  • 方式 A 系统包管理器安装(推荐,便于开机自启与升级)
    • Ubuntu/Debian:
      # 导入密钥与源
      curl -fsSL https://pkg.jenkins.io/debian-stable/jenkins.io-2023.key \
        | sudo tee /usr/share/keyrings/jenkins-keyring.asc > /dev/null
      echo "deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc] https://pkg.jenkins.io/debian-stable binary/" \
        | sudo tee /etc/apt/sources.list.d/jenkins.list > /dev/null
      sudo apt update
      sudo apt install -y jenkins
      sudo systemctl start jenkins
      sudo systemctl enable jenkins
      sudo systemctl status jenkins
      
    • CentOS/RHEL:
      sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
      sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io-2023.key
      sudo yum install -y jenkins
      sudo systemctl start jenkins
      sudo systemctl enable jenkins
      sudo systemctl status jenkins
      
  • 方式 B 直接运行 WAR 包(轻量、无需系统包)
    # 下载后运行(当前目录有 jenkins.war)
    java -jar jenkins.war
    # 指定端口(避免冲突)
    java -jar jenkins.war --httpPort=8095
    
    如需后台常驻,可用 nohup 或配合 systemd 托管(见下文进阶)。

三 初始化配置

  • 访问 http://服务器IP:8080,进入解锁页面。
  • 获取初始管理员密码:
    sudo cat /var/lib/jenkins/secrets/initialAdminPassword
    
    如通过 WAR 指定了自定义目录,则到该目录下的 secrets/initialAdminPassword 读取。
  • 选择“安装推荐插件”,完成后创建管理员用户,确认 Jenkins URL(默认即可,后续可改)。

四 防火墙与端口

  • 开放 8080(或自定义端口):
    • firewalld(CentOS/RHEL):
      sudo firewall-cmd --add-port=8080/tcp --permanent
      sudo firewall-cmd --reload
      sudo firewall-cmd --list-ports
      
    • ufw(Ubuntu/Debian):
      sudo ufw allow 8080/tcp
      sudo ufw enable
      sudo ufw status
      
  • 云服务器需同时在安全组放行对应端口。

五 进阶与常见问题

  • 自定义端口与服务托管
    • WAR 方式指定端口:
      java -jar jenkins.war --httpPort=9520
      
    • systemd 托管自定义 WAR(示例):
      sudo tee /etc/systemd/system/jenkins.service >/dev/null <<'EOF'
      [Unit]
      Description=Jenkins
      After=network.target
      
      [Service]
      Type=simple
      User=jenkins
      Environment="JENKINS_HOME=/data/jenkins/.jenkins"
      Environment="JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64"
      ExecStart=/usr/lib/jvm/java-11-openjdk-amd64/bin/java -Djava.awt.headless=true \
        -jar /data/jenkins/jenkins.war --httpPort=9520
      WorkingDirectory=/data/jenkins
      Restart=on-failure
      RestartSec=10
      
      [Install]
      WantedBy=multi-user.target
      EOF
      sudo systemctl daemon-reload
      sudo systemctl enable --now jenkins
      sudo journalctl -u jenkins -f
      
  • 常见问题速解
    • 端口被占用:改用 –httpPort=8095 或释放占用进程。
    • 权限不足:确保 JENKINS_HOME、工作目录对 jenkins 用户可读写(chown/chmod)。
    • 插件下载慢:在“插件管理-高级”配置国内镜像源,提升下载速度。
    • 构建需要 Docker:将 jenkins 用户加入 docker 组(usermod -aG docker jenkins),并重启服务。

0