GNU/Linux >> LINUX-Kenntnisse >  >> Ubuntu

So konfigurieren Sie Jenkins mit SSL hinter Nginx unter Ubuntu 20.04

Jenkins ist ein Open-Source-Tool-Automatisierungstool zum Einrichten der gesamten Software-Delivery-Pipeline – Continuous Delivery. Dadurch können Entwickler Softwarebereitstellungsprozesse über den gesamten Lebenszyklus hinweg verwalten und steuern, um ihre Software zuverlässig zu erstellen, zu testen und bereitzustellen.

Jenkins hat eine erweiterbare und lebendige, aktive Community. Es ist in Java geschrieben. Im Allgemeinen wird Jenkins als eigenständige integrierte Java-Servlet-Anwendung ausgeführt. Es ist auch möglich, in Java-Servlet-Containern wie Apache Tomcat oder GlassFish zu laufen.

In diesem Tutorial lernen wir, wie man Jenkins konfiguriert mit SSL hinter Nginx auf Ubuntu 20.04 .

Voraussetzungen

  • Ein Ubuntu 20.04-Server
  • Ein Benutzer mit sudo-Berechtigungen
  • Mindestens 1 GB RAM
  • Oracle JDK 11 oder höher installiert.

Schritt 1:Installieren Sie Jenkins auf Ubuntu

Das im Standard-Ubuntu-Repository verfügbare Jenkins-Paket ist höchstwahrscheinlich hinter der neuesten Version zurückgeblieben. Es wird empfohlen, Jenkin aus dem geplanten Wartungspaket zu installieren, das im offiziellen Repository verfügbar ist.

Wir werden zuerst den Repository-Schlüssel zum System hinzufügen.

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

Beim Schreiben dieses Handbuchs installiert das Verfahren die Version 2.303.3 von Jenkins

Als Nächstes fügen wir das Paket-Repository zur sources.list hinzu Datei:

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

Wir sollten den Cache des Repositorys aktualisieren

$ sudo apt update

Jetzt können Sie Jenkins installieren:

$ sudo apt install jenkins

Starten Sie dann den Dienst

$ sudo systemctl start jenkins

Lassen Sie uns den Dienst so konfigurieren, dass er automatisch mit dem Server startet

$ sudo systemctl enable jenkins

Sie können den Status des Dienstes überprüfen

$ sudo systemctl status jenkins

Sie können die Version überprüfen, indem Sie sich die Datei /var/lib/jenkins/config.xml ansehen

$ cat /var/lib/jenkins/config.xml
<?xml version='1.1' encoding='UTF-8'?> 
<hudson>   
      <disabledAdministrativeMonitors/>   
      <version>2.303.3</version>
...
...
</hudson>

Schritt 2:Nginx mit SSL-Zertifikat konfigurieren

Da wir nun Nginx als Proxy für die Kommunikation verwenden, müssen wir es zuerst installieren

$ sudo apt install nginx

Jetzt müssen Sie das Zertifikat in den zu verwendenden Ordner kopieren. Wir gehen davon aus, dass Sie Ihr SSL-Zertifikat bereits haben.

Wir kopieren das Zertifikat

$ sudo cp jenkins.domain.com.crt /etc/nginx/certs/jenkins.domain.com.crt

Kopieren Sie dann die Schlüssel

$ sudo cp jenkins.domain.com.key /etc/nginx/certs/jenkins.domain.com.key

Um Konflikte mit der Standardkonfiguration von Nginx zu vermeiden, entfernen wir die Standardkonfiguration aus sites-enabled Verzeichnis

sudo rm /etc/nginx/sites-enabled/default

Lassen Sie uns nun die Konfigurationsdatei von Jenkins erstellen. Jenkins verwendet normalerweise Port 8080 zum Ausführen, aber da wir Nginx verwenden, lauscht es auf den Ports 80 und 443 und leitet dann mit den Domänennameninformationen die Kommunikation intern auf Port 8080 für Jenkins weiter.

Die Konfiguration, die wir festlegen werden, erzwingt automatisch alle HTTP-Anforderungen an HTTPS

$ sudo vim /etc/nginx/sites-available/jenkins.conf
upstream jenkins.domain.com {
       server SERVER_IP:8080;
}
server {
        server_name jenkins.domain.com;
        listen 80 ;
        access_log /var/log/nginx/jenkins.log;
        return 301 https://$host$request_uri;
}
server {
        server_name jenkins.domain.com;
        listen 443 ssl http2 ;
        access_log /var/log/nginx/jenkins.log;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS';
        ssl_prefer_server_ciphers on;
        ssl_session_timeout 5m;
        ssl_session_cache shared:SSL:50m;
        ssl_session_tickets off;
        ssl_certificate /etc/nginx/certs/jenkins.domain.com.crt;
        ssl_certificate_key /etc/nginx/certs/jenkins.domain.com.key;
        add_header Strict-Transport-Security "max-age=31536000";
        location / {
                proxy_pass http://jenkins.domain.com;
        }
}

Zusätzlich zur Jenkins Nginx-Konfiguration haben wir einige der erforderlichen Nginx-Derivate hinzugefügt. Sie können nach Ihren Webserver-Anforderungen verwenden und optimieren.

Erstellen Sie nun ein Symbol der Konfigurationsdatei, um sie zu aktivieren

$ sudo ln -s /etc/nginx/sites-available/jenkins.conf /etc/nginx/sites-enabled/jenkins.conf

Starten Sie nun den Nginx-Dienst

$ sudo systemctl start nginx

Aktivieren Sie es dann beim Start

$ sudo systemctl enable nginx

Jetzt können Sie Ihre Nginx-Konfiguration testen

$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Starten Sie nun den Nginx-Dienst neu, um die Konfiguration zu berücksichtigen

$ sudo systemctl restart nginx

Öffnen Sie nun die Ports 80 und 443 auf der Firewall:

$ sudo ufw allow 80,443/tcp

Stellen Sie außerdem sicher, dass Sie den SSH-Port öffnen, bevor Sie UFW aktivieren. Andernfalls könnten Sie Ihre SSH-Verbindung verlieren, wenn etwas schief geht

$ sudo ufw allow 'OpenSSH'

Aktivieren Sie jetzt UFW, falls noch nicht geschehen

$ sudo ufw enable

Schritt 3:Zugriff auf und Konfiguration von Jenkins

Öffnen Sie nun Ihren Browser mit der URL http://jenkins.domain.com und dann sehen Sie die Seite von Jenkins, die Sie nach einem Passwort fragt

Um das Passwort zu erhalten, sollten Sie sich den Inhalt der angegebenen Datei anzeigen lassen

$ sudo cat /var/lib/jenkins/secrets/initialAdminPassword
88ba484d8cff4150a90683a07c89ea7c

Fügen Sie dann das Passwort ein und fahren Sie mit der nächsten Seite fort. Sie werden nun die Seite haben, auf der Sie aufgefordert werden, die Standard-Plugins zu installieren oder die zu installierenden auszuwählen. In unserem Fall belassen wir die Standardwerte

Dann sehen Sie den Installationsprozess

Jetzt müssen Sie den Admin-Benutzer erstellen.

Validieren Sie nun die URL von Jenkins.

Jetzt können Sie mit der Verwendung Ihres Jenkins beginnen

Schlussfolgerung

In diesem Tutorial haben wir gelernt, wie man Jenkins mit SSL hinter Nginx unter Ubuntu 20.04 konfiguriert. Sie können mit der Konfiguration der Jobs und Pipelines Ihres CI/CD-Prozesses beginnen.


Ubuntu
  1. So installieren Sie Jenkins unter Ubuntu 18.04

  2. So konfigurieren Sie Ursprungs-Cloudflare-SSL mit Nginx

  3. So installieren Sie Elgg mit Nginx unter Ubuntu 14.04

  4. So installieren Sie Joomla mit Nginx unter Ubuntu 18.04

  5. So installieren Sie Elasticsearch auf Ubuntu 22.04 mit SSL

So installieren Sie WordPress mit Nginx auf Ubuntu

So installieren Sie SuiteCRM auf Ubuntu 20.04 mit Apache/Nginx

So installieren Sie MediaWiki auf Ubuntu 20.04 mit Apache/Nginx

So konfigurieren Sie Nginx mit SSL

So installieren Sie Nginx mit Let’s Encrypt SSL unter Ubuntu 20.04 LTS

So installieren Sie Nginx unter Ubuntu 22.04