web:framework:spring:deployment

Ceci est une ancienne révision du document !


Déploiement Springboot

Mise en place du déploiement automatique d'une application Springboot vers un serveur externe (VM mise à disposition) via CI/CD Gitlab.

Se connecter en root avec su :

su -l

Installer Java

Choisir une version compatible (supérieure ou égale à la verion java déclarée dans le pom.xml):

cd /tmp
wget https://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.deb
dpkg -i jdk-17_linux-x64_bin.deb
java -version

Installer Tomcat 10

Ajouter un utilisateur tomcat :

useradd -m -d /opt/tomcat -U -s /bin/false tomcat 

Télécharger et dézipper Tomcat :

cd /tmp
wget https://dlcdn.apache.org/tomcat/tomcat-10/v10.1.16/bin/apache-tomcat-10.1.16.tar.gz
sudo tar xzvf apache-tomcat-10*tar.gz -C /opt/tomcat --strip-components=1 

Définir les permissions sur les fichiers :

chown -R tomcat:tomcat /opt/tomcat/ 
chmod -R u+x /opt/tomcat/bin 

Créer le tomcat-manager pour manager les sites à distance via l'interface web :

nano /opt/tomcat/conf/tomcat-users.xml

<!-- user manager can access only manager section -->
<role rolename="manager-gui" />
<user username="manager" password="_SECRET_PASSWORD_" roles="manager-gui" />

<!-- user admin can access manager and admin section both -->
<role rolename="admin-gui" />
<user username="admin" password="_SECRET_PASSWORD_" roles="manager-gui,admin-gui" />

Créer un service Tomcat

Pour gérer tomcat plus facilement, créer un service Tomcat :

nano /etc/systemd/system/tomcat.service

[Unit]
Description=Tomcat
After=network.target

[Service]
Type=forking

User=tomcat
Group=tomcat

Environment="JAVA_HOME=/usr/lib/jvm/jdk-17-oracle-x64"
Environment="JAVA_OPTS=-Djava.security.egd=file:///dev/urandom"
Environment="CATALINA_BASE=/opt/tomcat"
Environment="CATALINA_HOME=/opt/tomcat"
Environment="CATALINA_PID=/opt/tomcat/temp/tomcat.pid"
Environment="CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC"

ExecStart=/opt/tomcat/bin/startup.sh
ExecStop=/opt/tomcat/bin/shutdown.sh

[Install]
WantedBy=multi-user.target

Rechargr le deamon service pour prendre en compte le nouveau service :

systemctl daemon-reload

Démarrer Tomcat :

systemctl start tomcat.service

Activer Tomcat pour qu'il redémarre automatiquement à chaque reboot :

systemctl enable tomcat.service

Afficher son statut :

systemctl status tomcat.service

Accéder à l'interface Web via l'adresse DNS fournie :

  • http[s]://srv2-vm-[number].sts-sio-caen.info/
  • http[s]://srv2-vm-[number].sts-sio-caen.info/manager/

gitlab-ci user sur la VM

Sur la VM :

  • Créer un utilisateur gitlab-ci
  • Faire en sorte qu'il puisse accéder à sudo
  • Changer son password : changeMyPassword
  • Permettre qu'il puisse s'authentifier en SSH avec login/password
  • Redémarrer SSH
  • Faire en sorte qu'il n'ait pas besoin de saisir un password en utilisant sudo avec les commandes mv, cp, systemctl

adduser --quiet --shell $SHELL --disabled-password --gecos 'GitlabCI User' gitlab-ci
usermod -a -G sudo gitlab-ci
echo 'gitlab-ci:changeMyPassword' | chpasswd
printf 'Match User gitlab-ci\n\tPasswordAuthentication yes\n' >> /etc/ssh/sshd_config
systemctl restart sshd
echo 'gitlab-ci ALL=(ALL) NOPASSWD: /bin/mv, NOPASSWD: /usr/bin/systemctl, NOPASSWD: /bin/cp' | sudo EDITOR='tee -a' visudo

Variable CI/CD sur Gitlab

  • web/framework/spring/deployment.1700564817.txt.gz
  • Dernière modification : il y a 23 mois
  • de jcheron