Jenkins Automation Server met Apache te installeren op Ubuntu 20.04

Jenkins is een gratis en open-source automatiseringsserver die ontwikkelaars helpt bij het bouwen, testen en uitrollen van hun software. Het is gebaseerd op Java en biedt meer dan 1700 plugins die helpen bij het automatiseren van de repeterende taken die bij het software ontwikkelingsproces komen kijken. Het ondersteunt meerdere besturingssystemen, zoals Windows, Mac OS X en Linux, en kan gemakkelijk over meerdere machines verdeeld worden.

In deze zelfstudie laten we je zien hoe je Jenkins met Apache als reverse proxy kunt installeren op Ubuntu 20.04.

Vereisten

  • Een server waarop Ubuntu 20.04 draait.
  • Een root wachtwoord is de server geconfigureerd.

Aan de slag

Voor je begint is het een goed idee om je systeem met de nieuwste versie te updaten. Je kunt je systeem bijwerken met het volgende commando:

apt-get update -y
apt-get upgrade -y

Na het bijwerken start je het systeem opnieuw op om de veranderingen door te voeren.

Installeer Java

Jenkins is gebaseerd op Java, dus Java moet in je systeem geïnstalleerd zijn. Als het niet geïnstalleerd is, kun je het installeren door het volgende commando uit te voeren:

apt-get install openjdk-11-jdk gnupg2 -y

Eenmaal geïnstalleerd, controleer je de geïnstalleerde versie van Java met het volgende commando:

java -version

Je zou de volgende uitvoer moeten krijgen:

openjdk version "11.0.8" 2020-07-14
OpenJDK Runtime Environment (build 11.0.8+10-post-Ubuntu-0ubuntu120.04)
OpenJDK 64-Bit Server VM (build 11.0.8+10-post-Ubuntu-0ubuntu120.04, mixed mode, sharing)

Als je klaar bent, kun je verder gaan met de volgende stap.

Installeer Jenkins

Standaard is de nieuwste versie van Jenkins niet beschikbaar in de Ubuntu 20.04 standaard repository. Je zult dus de Jenkins repository aan je systeem moeten toevoegen.

Download eerst de GPG sleutel en voeg die toe met het volgende commando:

wget -q -O - https://pkg.jenkins.io/debian/jenkins.io.key | apt-key add -

Voeg vervolgens de Jenkins repository aan de APT toe met het volgende commando:

sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'

Werk vervolgens de repository bij en installeer de nieuwste versie van Jenkins met het volgende commando:

apt-get update -y
apt-get install jenkins -y

Controleer na de succesvolle installatie de status van Jenkins met het volgende commando:

systemctl status jenkins

Je zou de volgende uitvoer moeten zien:

? jenkins.service - LSB: Start Jenkins at boot time
     Loaded: loaded (/etc/init.d/jenkins; generated)
     Active: active (exited) since Sun 2020-08-09 12:50:35 UTC; 44s ago
       Docs: man:systemd-sysv-generator(8)
      Tasks: 0 (limit: 2353)
     Memory: 0B
     CGroup: /system.slice/jenkins.service

Aug 09 12:50:34 ubuntu2004 systemd[1]: Starting LSB: Start Jenkins at boot time...
Aug 09 12:50:34 ubuntu2004 jenkins[6134]: Correct java version found
Aug 09 12:50:34 ubuntu2004 jenkins[6134]:  * Starting Jenkins Automation Server jenkins
Aug 09 12:50:34 ubuntu2004 su[6180]: (to jenkins) root on none
Aug 09 12:50:34 ubuntu2004 su[6180]: pam_unix(su-l:session): session opened for user jenkins by (uid=0)
Aug 09 12:50:34 ubuntu2004 su[6180]: pam_unix(su-l:session): session closed for user jenkins
Aug 09 12:50:35 ubuntu2004 jenkins[6134]:    ...done.
Aug 09 12:50:35 ubuntu2004 systemd[1]: Started LSB: Start Jenkins at boot time.

Op dit moment draait Jenkins en luistert het op poort 8080. Je kunt het controleren met het volgende commando:

netstat -plntu | grep 8080

Je zou de volgende uitvoer moeten zien:

tcp6       0      0 :::8080                 :::*                    LISTEN      6192/java  

Als je klaar bent, kun je verder gaan met de volgende stap.

Configureer Apache als omgekeerde proxy

Vervolgens moet je Apache installeren en instellen als een omgekeerde proxy voor Jenkins. Zo kun je Jenkins benaderen via de poort 80.

Installeer eerst de Apache webserver met het volgende commando:

apt-get install apache2 -y

Schakel na de installatie van de Apache webserver de vereiste modules in met het volgende commando:

a2enmod proxy
a2enmod proxy_http

Maak vervolgens een Apache virtual host configuratiebestand voor Jenkins met het volgende commando:

nano /etc/apache2/sites-available/jenkins.conf

Voeg de volgende regels toe:

<Virtualhost *:80>
    ServerName        jenkins.example.com
    ProxyRequests     Off
    ProxyPreserveHost On
    AllowEncodedSlashes NoDecode
 
    <Proxy http://localhost:8080/>
      Order deny,allow
      Allow from all
    </Proxy>
 
    ProxyPass         /  http://localhost:8080/ nocanon
    ProxyPassReverse  /  http://localhost:8080/
    ProxyPassReverse  /  http://jenkins.hakase-labs.io/
</Virtualhost>

Sla het bestand op en sluit het als je klaar bent. Schakel dan het Apache virtuele host configuratiebestand in met het volgende commando:

a2ensite jenkins

Herstart vervolgens de Apache en Jenkins dienst om de veranderingen toe te passen:

systemctl reload apache2
systemctl restart jenkins

Je kunt nu de status van de Apache dienst controleren met het volgende commando:

systemctl status apache2

Je zou de volgende uitvoer moeten krijgen:

? apache2.service - The Apache HTTP Server
   Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
  Drop-In: /lib/systemd/system/apache2.service.d
           ??apache2-systemd.conf
   Active: active (running) since Sun 2020-08-10 12:41:30 UTC; 22min ago
  Process: 15407 ExecReload=/usr/sbin/apachectl graceful (code=exited, status=0/SUCCESS)
 Main PID: 14417 (apache2)
    Tasks: 11 (limit: 1114)
   CGroup: /system.slice/apache2.service
           ??14417 /usr/sbin/apache2 -k start
           ??15412 /usr/sbin/apache2 -k start
           ??15413 /usr/sbin/apache2 -k start
           ??15414 /usr/sbin/apache2 -k start
           ??15416 /usr/sbin/apache2 -k start
           ??15417 /usr/sbin/apache2 -k start
           ??15418 /usr/sbin/apache2 -k start
           ??15419 /usr/sbin/apache2 -k start
           ??15420 /usr/sbin/apache2 -k start
           ??15422 /usr/sbin/apache2 -k start
           ??15429 /usr/sbin/apache2 -k start

Aug 10 12:41:29 ubuntu20.04 systemd[1]: Starting The Apache HTTP Server...

Op dit punt is Apache webserver geconfigureerd om Jenkins te bedienen. Je kunt nu verder gaan met de volgende stap.

Opmerking: als je over het internet verbinding maakt met Jenkins, dan is het aan te bevelen de verbindingen met SSL/TLS te beveiligen. Om SSL via Let’s Encrypt met certbot voor de Jenkins webinterface in te schakelen, kijk hier:

https://www.howtoforge.com/how-to-manage-lets-encrypt-ssl-tls-certificates-with-certbot/

Toegang tot de Jenkins webinterface

Open nu je webbrowser en typ de URL http://jenkins.example.com. Je wordt gevraagd het initiële admin wachtwoord in te voeren, zoals hieronder:

Maak Jenkins los

Je kunt Jenkins initiële admin wachtwoord zien met het volgende commando:

cat /var/lib/jenkins/secrets/initialAdminPassword

Je zou Jenkins wachtwoord moeten zien in de volgende uitvoer:

78d6b10330434b27a09590fc781c9e6d

Typ het wachtwoord uit de bovenstaande uitvoer in het inlogscherm en klik op de knop Doorgaan. Je wordt doorgestuurd naar het Jenkins aanpassingsscherm:

Installeer Jenkins Plugins

Kies je gewenste optie en klik erop. Je zou het Jenkins plugins installaties in uitvoering scherm moeten zien:

Aan de slag met Jenkins

Als alle plugins met succes geïnstalleerd zijn, zou je het volgende scherm moeten zien:

Maak een Admin gebruiker aan

Geef je admin gebruikersnaam, wachtwoord, e-mail op en klik op de Save and Continue knop. Je zou het volgende scherm moeten zien:

Configureer Jenkins

Typ je Jenkins URL en klik op de bewaar en voltooi knop. Je zou het volgende scherm moeten zien:

Jenkins is er klaar voor

Klik op de knop“Start using Jenkins“. Je zou het Jenkins dashboard moeten zien in het volgende scherm:

Jenkins Dashboard

Vervolgens moet je de standaard beveiligingsinstellingen voor Jenkins instellen.

Klik in het linkerdeelvenster op Manage Jenkins => Configure Global Security. Je zou het volgende scherm moeten zien:

Beheer Jenkins Configuratie

Veilige Jenkins

Kies nu Matrix-gebaseerde beveiliging, voeg je gebruiker toe, verleen volledige rechten en klik op de knop Opslaan.

Test Jenkins

Op dit punt is Jenkins geïnstalleerd en geconfigureerd. het is tijd om een voorbeeldjob te maken en de Jenkins functionaliteit te testen.

Klik op het Jenkins dashboard op de knop Create New Job. Je zou het volgende scherm moeten zien:

Test Jenkins

Maak jenkins Project

Geef je job naam, kies Freestyle project en klik op de OK knop. Je zou het volgende scherm moeten zien:

Bouw commando's

Klik nu op de Build tab. Kies bij de“Add build step” de optie“Executeshell” en typ“free -m” in het commandovak. Klik dan op de knop Save. Je zou het volgende scherm moeten zien:

Controleer het geheugengebruik

Klik nu op de“Build Now” knop in het linker deelvenster om de Job uit te voeren. Als de job is uitgevoerd, zou je de console uitvoer van de door Jenkins uitgevoerde job moeten zien in het volgende scherm:

Testresultaat

Conclusie

Gefeliciteerd! je hebt met succes Jenkins met Apache geïnstalleerd op Ubuntu 20.04 server. Je kunt Jenkins nu in de ontwikkelomgeving gebruiken om het ontwikkelingsproces te versnellen. Voel je vrij om me te vragen als je vragen hebt.