Jenkins Automation Server met Apache te installeren op Ubuntu 18.04

Jenkins is een automatiseringsserver die gevorked is van het Hudson project. Jenkins is een server-gebaseerde toepassing die draait in een Java servlet container, hij heeft ondersteuning voor vele SCM (Source Control Management) software systemen, waaronder Git, SVN, en Mercurial. Jenkins biedt honderden plugins om je project te automatiseren. Jenkins is gemaakt door Kohsuke Kawaguchi, voor het eerst uitgebracht in 2011 onder de MIT Licentie, en het is gratis software.

In deze zelfstudie laat ik je zien hoe je de nieuwste stabiele Jenkins versie kunt installeren op Ubuntu Server 18.04 LTS (Bionic Beaver). We zullen Jenkins draaien op onze eigen domeinnaam, en we zullen Jenkins installeren en configureren om onder de Apache webserver reverse proxy te draaien.

Vereisten

  • Ubuntu 18.04
  • Root voorrechten

Wat zullen we doen?

  1. Java installeren
  2. Installeer Jenkins
  3. Installeer en configureer Apache2 als omgekeerde proxy voor Jenkins
  4. Configureer UFW Firewall
  5. Configureer Jenkins
  6. Jenkins Beveiliging
  7. Testen van

Stap 1 – Installeer Java

Jenkins is een op Java gebaseerde toepassing, dus moeten we Java OpenJDK op de server installeren. In deze stap installeren we Java 8 uit een PPA repository die we eerst zullen toevoegen.

Installeer software-properties-common packages, voeg dan de java OpenJDK PPA repository toe.

sudo apt install software-properties-common apt-transport-https -y
sudo add-apt-repository ppa:openjdk-r/ppa -y

Installeer Java

Installeer nu Java 8 met apt commando.

sudo apt install openjdk-8-jdk -y

Als de installatie voltooid is, controleer je de java versie die op het systeem geïnstalleerd is.

java -version

En je krijgt dat Java OpenJDK 1.8 nu op het Ubuntu 18.04 systeem geïnstalleerd is.

Java OpenJDK 1.8 is nu geïnstalleerd op de Ubuntu 18.04

Opmerking:

  • Als je meerdere java versies op je systeem hebt, verander dan de standaard java versie met het onderstaande commando.
sudo update-alternatives --config java

Stap 2 – Installeer Jenkins

Jenkins biedt een Ubuntu repository voor de installatiepakketten en we zullen Jenkins uit deze repository installeren.

Voeg Jenkins sleutel en repository toe aan het systeem met het onderstaande commando.

wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add -
echo 'deb https://pkg.jenkins.io/debian-stable binary/' | tee -a /etc/apt/sources.list

Werk nu de repository bij en installeer Jenkins.

sudo apt update
sudo apt install jenkins -y

Installeer Jenkins op Ubuntu

Als de installatie voltooid is, start je de Jenkins service en voeg je die toe aan de opstarttijd.

systemctl start jenkins
systemctl enable jenkins

Jenkins is nu up and running op de Ubuntu 18.04 server, draaiend op de standaard poort ‘8080’. Controleer het met netstat zoals hieronder.

netstat -plntu

En je krijgt het resultaat zoals hieronder.

Jenkins server ingeschakeld en gestart

Stap 3 – Installeer en configureer Apache2 als omgekeerde proxy voor Jenkins

In deze zelfstudie zullen we Jenkins achter een Apache webserver draaien, we zullen apache configureren als de omgekeerde proxy voor Jenkins.

Eerst installeren we Apache en schakelen we enkele require modules in, en dan maken we het virtual host bestand met domeinnaam jenkins.hakase-labs.io voor Jenkins. Gebruik hier je eigen domeinnaam en vervang die in alle config bestanden waar hij ook voorkomt.

Installeer apache2 webserver uit de Ubuntu repository.

sudo apt install apache2 -y

Als de installatie voltooid is, schakel dan de modules proxy en proxy_http in, zodat we apache kunnen instellen als frontend server/reverse proxy voor Jenkins.

a2enmod proxy
a2enmod proxy_http

Maak vervolgens een nieuw virtual host bestand voor Jenkins in de sites-available directory.

cd /etc/apache2/sites-available/
vim jenkins.conf

Plak de virtuele host configuratie hieronder.

<Virtualhost *:80>
    ServerName        jenkins.hakase-labs.io
    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 op en sluit af, activeer dan de Jenkins virtuele host met het a2ensite commando.

a2ensite jenkins

Herstart de Apache en Jenkins diensten.

systemctl restart apache2
systemctl restart jenkins

De apache2 installatie en configuratie als reverse proxy voor Jenkins is voltooid.

Apache als reverse proxy voor jenkins

Stap 4 – Configureer UFW firewall

Voordat we de UFW firewall op de Ubuntu server inschakelen, moeten we de basis dienstenpoorten toevoegen, zoals SSH, HTTP, en HTTPS.

Voeg SSH, HTTP, en HTTPS diensten aan de ufw firewall toe.

ufw allow ssh
ufw allow http
ufw allow https

Start nu de ufw firewall en schakel hem in.

ufw enable

Typ ‘y’ en druk op Enter.

Configureer de UFW firewall

De ufw firewall is nu ingeschakeld, en de HTTP poort is toegevoegd.

Stap 5 – Configureer Jenkins

Jenkins draait op de domeinnaam‘http://jenkins.hakase-labs.io’. Open je webbrowser en typ de URL in.

Je krijgt het scherm dat je vraagt om het initiële admin wachtwoord in te voeren. Er is al een wachtwoord gegenereerd door Jenkins, dus we hoeven alleen maar het resultaat te tonen en naar het wachtwoordvak te kopiëren.

Toon het initiële admin wachtwoord Jenkins met het cat commando.

cat /var/lib/jenkins/secrets/initialAdminPassword

Configureer jenkins

Plak de resultaten op het scherm en klik op ‘Continue’.

Maak Jenkins los

Nu moeten we enkele plugins in Jenkins installeren om een goede basis te krijgen voor later gebruik. Kies ‘Install Suggested Plugins’, klik erop.

Pas Jenkins aan

Jenkins plugins installaties in uitvoering.

Jenkins aan de slag

Als de plugins installatie voltooid is, moeten we een nieuw admin wachtwoord aanmaken. Typ je admin gebruikersnaam, wachtwoord, e-mail enz. in en klik op ‘Save and Continue’.

Maak een admin gebruiker aan

Typ voor de instance configuratie de Jenkins domeinnaam ‘http://jenkins.hakase-labs.io’ en klik op de knop ‘Save and Finish’.

Instance configuratie

Klik nu op de knop ‘Start using Jenkins’.

Jenkins is er klaar voor

En je wordt doorverwezen naar het Jenkins admin dashboard.

Welkom in Jenkins

De installatie en configuratie van Jenkins is met succes voltooid

Stap 6 – Jenkins beveiliging

Vanuit het Jenkins admin dashboard moeten we de standaard beveiligingsinstellingen voor Jenkins configureren, klik op ‘Manage Jenkins’ en dan op ‘Configure Global Security’.

Beheer Jenkins

Jenkins biedt verschillende machtigingsmethoden in de sectie ‘Toegangscontrole’. We zullen de ‘Matrix-gebaseerde Beveiliging’ gebruiken, zodat we alle gebruikersprivileges kunnen controleren.

Voeg de ‘hakase’ gebruiker toe bij het vakje ‘User/Group’ en klik op add.

Geef de ‘hakase’ gebruiker alle privileges door alle opties aan te vinken, en klik op de knop ‘Save’.

Jenkins instellingen

Je wordt doorgestuurd naar het dashboard, en als er inlogmogelijkheid is, typ je gewoon je admin gebruiker en wachtwoord in.

Log in als admin

Stap 7 – Testen

In dit onderdeel willen we een eenvoudige job voor de Jenkins server maken. We zullen een eenvoudige job maken om Jenkins te testen en om de serverbelasting te achterhalen met het top commando.

Klik in het Jenkins admin dashboard op ‘Create New Job’.

Baan aanmaken in Jenkins

Typ de naam van de job. We gebruiken hier ‘Checking System’, kies ‘Freestyle Project’ en klik op ‘OK’.

Jenkins banen

Ga naar het tabblad ‘Build’. Kies bij de ‘Add build step’ de optie ‘Execute shell’.

Typ het onderstaande commando in het vak.

top -b -n 1 | head -n 5

Klik op ‘Save’.

Bouw Jenkins baan

Je bent nu op de job pagina van de job ‘Projectcontrolesysteem’. Klik op ‘Build Now’ om de opdracht ‘controlerend systeem’ uit te voeren.

Project controle systeem

Nadat de job uitgevoerd is, zie je de ‘Build History’, klik op de eerste job om de resultaten te zien.

Hier zijn de resultaten van de door Jenkins uitgevoerde job.

Resultaat van Jenkins job run

De installatie en configuratie van Jenkins automatiseringstool met Apache2 als omgekeerde proxy op Ubuntu 18.04 is met succes voltooid.

Referenties