- 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
etNexus
derrière un reverse-proxyNginx
sécurisé par https. - Le domaine
jenkins.sample.com
pointera surJenkins
. - Le domaine
nexus.sample.com
pointera surNexus
.
Il nous faut d'abord installer Java 8 :
$ sudo apt-get install openjdk-8-jdk
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.
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
Pour installer nginx :
$ sudo apt-get install nginx
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.
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;
}
}