Lors du Twitch donné le 25 février 2022, nous avons présenté l'offre IaaS de Nua.ge en parcourant l'interface avec pour objectif de déployer une application monolithique générée sur JHipster 7.6.0. L'idée était de tester cela en binôme avec un profil plutôt cloud engineer et un profil plutôt développeur / architecte.
- Créer un nouveau compte crédité de 200 € sur nua.ge. D'après la page des tarifs de nua.ge cela reviendra à 21,90 € par mois sur la base de 730 heures d'utilisation. Autrement dit, on pourrait tenir près d'un an avec un tel crédit.
- Créer un nouveau projet "JHipster apps" : un projet peut accueillir plusieurs instances.
- Générer d'une clé publique sur son poste avec
ssh-keygen -t rsa -b 4096
(la longueur doit être supérieure à 2048 bits). - Créer une nouvelle instance (Ubuntu 20.04 LTS, 2 coeurs, 8 Go de RAM, 100 Go de stockage, IP publique et ouverture du port SSH 22) en spécifiant la clé publique qui démarre par
ssh-rsa
. L'instance a un nom sous la formeinstance-YYYY-MM-DD-HH-MM-SS
. - Exposer le port 80 HTTP sur l'extérieur via l'interface d'administration en cliquant sur "Groupes de sécurité" puis "Services HTTP & HTTPs ouverts sur Internet" et "Appliquer" sur l'instance.
- Se connecter en ssh à l'instance avec
ssh ubuntu@IP_PUBLIQUE -i /path/to/.ssh/id_rsa_private_key
. - Cloner ce dépôt avec
git clone https://github.com/fdelbrayelle/test-nua.ge.git
et se déplacer dans le projet généré avec JHipster avecmkdir jhipster-sample-project
. Initier un dossier.git
au sein de ce dossier également avecgit init
. - Installer les dépendances de sdkman avec
sudo apt install unzip zip
. - Installer sdkman avec
curl -s "https://get.sdkman.io" | bash
puissource "$HOME/.sdkman/bin/sdkman-init.sh"
. - Installer Java 17 avec
sdk install java 17.0.2-oracle
. - Définir le chemin vers Java avec
export JAVA_HOME=/home/ubuntu/.sdkman/candidates/java/17.0.2-oracle/
. - Installer nvm avec
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
etsource ~/.bashrc
puis Node LTS (v16.13.2 à l'heure de la rédaction) avecnvm install --lts
. - Dans un premier terminal (utiliser par exemple
tmux
), lancer le back-end sur le port8080
avec./mvnw spring-boot:run
: pas besoin d'installer Maven grâce au wrappermvnw
. - Dans un deuxième terminal, lancer le front-end sur le port
9000
avecnpm run start
. - Installer Docker avec
sudo snap install docker
pour que le daemon Docker tourne en tâche de fond. - Installer Docker Compose avec
curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
et donner les droits en exécution dessus avecsudo chmod +x /usr/local/bin/docker-compose
. - Builder les ressources statiques avec
npm run build
(qui seront ensuite danstarget/classes/static
). - Dans un troisième terminal, lancer nginx avec
sudo docker-compose -f src/main/docker/nginx.yml up
. - Ouvrir l'URL suivante sur un navigateur web :
http://IP_PUBLIQUE/login
. L'application générée avec JHipster doit être accessible.