GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Come configurare Jenkins con SSL dietro Nginx su Ubuntu 20.04

Jenkins è uno strumento di automazione degli strumenti open source per impostare l'intera pipeline di distribuzione del software, ovvero la distribuzione continua. Ciò consente agli sviluppatori di gestire e controllare i processi di distribuzione del software durante l'intero ciclo di vita, in modo da creare, testare e distribuire il proprio software in modo affidabile.

Jenkins ha una comunità estensibile, vivace e attiva. È scritto in Java. In genere, Jenkins viene eseguito come un'applicazione servlet Java integrata autonoma. È anche possibile eseguire in contenitori servlet Java come Apache Tomcat o GlassFish.

In questo tutorial impariamo come configurare Jenkins con SSL dietro Nginx su Ubuntu 20.04 .

Prerequisiti

  • Un server Ubuntu 20.04
  • Un utente con privilegi sudo
  • Minimo di 1 GB di RAM
  • Oracle JDK 11 o successivo installato.

Passaggio 1:installa Jenkins su Ubuntu

Il pacchetto Jenkins disponibile nel repository Ubuntu predefinito è molto probabilmente dietro l'ultima versione. Si consiglia di installare Jenkin dal pacchetto di manutenzione previsto, disponibile nel repository ufficiale.

Per prima cosa aggiungeremo la chiave del repository al sistema.

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

Durante la stesura di questa guida, la procedura installerà la versione 2.303.3 di Jenkins

Successivamente, aggiungiamo il repository del pacchetto a sources.list file:

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

Dovremmo aggiornare la cache del repository

$ sudo apt update

Ora puoi installare Jenkins:

$ sudo apt install jenkins

Quindi avvia il servizio

$ sudo systemctl start jenkins

Configuriamo il servizio per l'avvio automatico con il server

$ sudo systemctl enable jenkins

Puoi controllare lo stato del servizio

$ sudo systemctl status jenkins

Puoi controllare la versione guardando il file /var/lib/jenkins/config.xml

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

Fase 2:configurazione di Nginx con certificato SSL

Ora, poiché utilizzeremo Nginx per inoltrare la comunicazione, dovremo prima installarlo

$ sudo apt install nginx

Ora devi copiare il certificato nella cartella da utilizzare. Considereremo che hai già il tuo certificato SSL.

Copieremo il certificato

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

Quindi copia le chiavi

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

Per evitare qualsiasi conflitto con la configurazione predefinita di Nginx, rimuoveremo la configurazione predefinita da sites-enabled directory

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

Ora creiamo il file di configurazione di Jenkins. Jenkins normalmente utilizza la porta 8080 per l'esecuzione, ma poiché stiamo usando Nginx, sarà in ascolto sulle porte 80 e 443, quindi con le informazioni sul nome di dominio, invierà la comunicazione internamente sulla porta 8080 per Jenkins.

La configurazione che imposteremo forzerà automaticamente tutte le richieste HTTP su 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;
        }
}

Oltre alla configurazione di Jenkins Nginx, abbiamo aggiunto alcuni dei derivati ​​nginx richiesti. Puoi utilizzare e ottimizzare in base ai requisiti del tuo server web.

Ora crea un simbolico del file di configurazione per abilitarlo

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

Ora avvia il servizio Nginx

$ sudo systemctl start nginx

Quindi abilitalo all'avvio

$ sudo systemctl enable nginx

Ora puoi testare la tua configurazione Nginx

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

Ora riavvia il servizio Nginx per prendere in considerazione la configurazione

$ sudo systemctl restart nginx

Ora apri le porte 80 e 443 sul firewall:

$ sudo ufw allow 80,443/tcp

Inoltre, assicurati di aprire la porta ssh prima di abilitare UFW, altrimenti potresti perdere la connessione ssh se qualcosa va storto

$ sudo ufw allow 'OpenSSH'

Ora abilita UFW se non ancora

$ sudo ufw enable

Fase 3:accedi e configura Jenkins

Ora apri il tuo browser con l'URL http://jenkins.domain.com e vedrai la pagina di Jenkins che ti chiede una password

Per avere la password, è necessario visualizzare il contenuto del file indicato

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

Quindi incolla la password e vai alla pagina successiva. Ora avrai la pagina che chiede di installare i plugin predefiniti o di selezionare quelli da installare. Nel nostro caso, lasceremo quelli predefiniti

Quindi vedrai il processo di installazione

Ora devi creare l'utente amministratore.

Ora convalida l'URL di Jenkins.

Ora puoi iniziare a usare il tuo Jenkins

Conclusione

In questo tutorial, abbiamo imparato come configurare Jenkins con SSL dietro Nginx su Ubuntu 20.04. Puoi iniziare a configurare i lavori e le pipeline del processo CI/CD.


Ubuntu
  1. Come installare Jenkins su Ubuntu 18.04

  2. Come configurare l'SSL Cloudflare di origine con Nginx

  3. Come installare Elgg con Nginx su Ubuntu 14.04

  4. Come installare Joomla con Nginx su Ubuntu 18.04

  5. Come installare Elasticsearch su Ubuntu 22.04 con SSL

Come installare WordPress con Nginx su Ubuntu

Come installare SuiteCRM su Ubuntu 20.04 con Apache/Nginx

Come installare MediaWiki su Ubuntu 20.04 con Apache/Nginx

Come configurare Nginx con SSL

Come installare Nginx con Let's Encrypt SSL su Ubuntu 20.04 LTS

Come installare Nginx su Ubuntu 22.04