Skip to content

Instantly share code, notes, and snippets.

@etissieres
Created June 1, 2016 09:49
Show Gist options
  • Save etissieres/44d91884daf594f73814e3bf89d38ab5 to your computer and use it in GitHub Desktop.
Save etissieres/44d91884daf594f73814e3bf89d38ab5 to your computer and use it in GitHub Desktop.
Jenkins & Nexus install

Jenkins & Nexus

Installation

  • On part sur une base de Ubuntu 16.04 LTS.
  • On prend pour hypothèse que le domaine sample.com pointe notre serveur.
  • On va installer Jenkins et Nexus derrière un reverse-proxy Nginx sécurisé par https.
  • Le domaine jenkins.sample.com pointera sur Jenkins.
  • Le domaine nexus.sample.com pointera sur Nexus.

Pré-requis

Il nous faut d'abord installer Java 8 :

$ sudo apt-get install openjdk-8-jdk

Jenkins

Pour installer Jenkins, il faut rajouter un dépôt, mettre à jour les paquets et installer le paquet jenkins :

$ wget -q -O - https://jenkins-ci.org/debian/jenkins-ci.org.key | sudo apt-key add -
$ sudo sh -c 'echo deb http://pkg.jenkins-ci.org/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'
$ sudo apt-get update
$ sudo apt-get install jenkins

Un utilisateur jenkins est créé et jenkins tourne avec cet utilisateur, ce qui nous conviens.

Nexus

Pour installer nexus, il faut télécharger l'archive .tar.gz de la dernière version. A l'heure actuelle cette archive correspond à : nexus-3.0.0-03-unix.tar.gz.

Décompresser l'archive et mettre le résultat dans /opt/nexus :

$ tar xf nexus-3.0.0-03-unix.tar.gz
$ rm nexus-3.0.0-03-unix.tar.gz
$ sudo mv nexus-3.0.0-03 /opt/nexus

Nous allons maintenant créer un utilisateur qui fera tourner nexus, et lui donner les droits sur le dossier nexus :

$ sudo groupadd nexus
$ sudo useradd -d /opt/nexus -g nexus -s /bin/bash nexus
$ sudo chown -R nexus:nexus /opt/nexus

Nous allons maintenant créer un script de démarrage systemctl pour démarrer nexus en tant que daemon. Pour ce faire, créer le fichier /usr/local/bin/nexus.service avec le contenu suivant :

[Unit]
Description=nexus service
After=network.target

[Service]
Type=forking
ExecStart=/opt/nexus/bin/nexus start
ExecStop=/opt/nexus/bin/nexus stop
User=nexus
Restart=on-abort

[Install]
WantedBy=multi-user.target

Puis exécuter les commandes suivants afin de déclarer ce nouveau daemon auprès de systemctl :

$ sudo systemctl daemon-reload
$ sudo systemctl enable /usr/local/bin/nexus.service
$ sudo systemctl start nexus.service

Nginx

Pour installer nginx :

$ sudo apt-get install nginx

Certificats SSL

Nous allons utiliser letsencrypt qui permet de générer des Certificats SSL valides gratuitement.

Nous installons donc letsencrypt :

$ sudo apt-get install letsencrypt

Letsencrypt va lancer un serveur web et le requêter sur le domaine pour lequel on veut générer un certificat afin de vérifier que nous sommes bien les détenteurs du serveur desservi par ce domaine.

Par conséquent, nous allons arréter nginx :

$ sudo systemctl stop nginx

Nous allons maintenant générer les certificats :

$ sudo letsencrypt certonly --standalone -d jenkins.sample.com
$ sudo letsencrypt certonly --standalone -d nexus.sample.com

Un email vous sera demandé, ainsi que l'acceptation des conditions d'utilisation.

Configuration Nginx

Nous allons maintenant configurer Nginx afin qu'il redirige les requêtes de jenkins et nexus vers leurs services respectifs. Pour ce faire, remplacez le contenu de /etc/nginx/sites-available/default par :

server {
        listen 443 ssl default_server;
        listen [::]:443 ssl default_server;

        ssl_certificate /etc/letsencrypt/live/jenkins.sample.com/cert.pem;
        ssl_certificate_key /etc/letsencrypt/live/jenkins.sample.com/privkey.pem;

        server_name jenkins.sample.com;

        location / {
                proxy_set_header Host $host:$server_port;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Forwarded-Proto $scheme;
                proxy_pass http://127.0.0.1:8080;
        }
}

server {
        listen 443 ssl;
        listen [::]:443 ssl;

        ssl_certificate /etc/letsencrypt/live/nexus.sample.com/cert.pem;
        ssl_certificate_key /etc/letsencrypt/live/nexus.sample.com/privkey.pem;

        server_name nexus.sample.com;

        location / {
                proxy_set_header Host $host:$server_port;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Forwarded-Proto $scheme;
                proxy_pass http://127.0.0.1:8081;
        }
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment