Dans le cadre du projet , ce service va nous de «piloter» le SGBD MariaDB installé dans un container. Mais il pourra accéder à d'autre serveur évidemment (on vérifiera l'accès à celui du VHS).
On va positionner ce composant au sein d'un container LXC lxc-web01
, ce qui correspond au schéma plus global proposé dans ce paragraphe.
Les manipulations listées ci-dessous s'appliquent dans le CT lxc-web01
– dont l'installation est donc un préalable – mais elles pourront s'appliquer dans un environnement Linux quelconque – aux commandes près propres à la distribution choisie. Vous pouvez ainsi ignorer les mentions au container si vous ne travaillez pas dans ce contexte, le reste demeure applicable…
On considère que le container lxc-web01
est déjà crée via la procédure ici. On l'a construit avec un serveur ssh; on va donc s'y connecter dans ce mode, à partir de la console de notre serveur, sur le compte défini au moment de la création du container:
admin@wasabi:~$ lxc-ls -f NAME STATE AUTOSTART GROUPS IPV4 IPV6 UNPRIVILEGED lxc-web01 RUNNING 1 onboot, webserver 10.0.3.51 - true
admin@wasabi:~$ ssh monusr@lxc-web01 cram28@lxc-web01's password: Welcome to Alpine! The Alpine Wiki contains a large amount of how-to guides and general information about administrating Alpine systems. See <http://wiki.alpinelinux.org/>. You can setup the system with the command: setup-alpine You may change this message by editing /etc/motd. lxc-web01:~$
lxc-web01:~$ sudo -i [sudo] password for monusr: lxc-web01:~#
lxc-web01:~# mkdir /www/adminer
lxc-web01:~# wget https://github.com/vrana/adminer/releases/download/v4.7.6/adminer-4.7.6.php \ -O /www/adminer/index.php
lxc-web01:~# wget https://raw.githubusercontent.com/vrana/adminer/master/designs/hever/adminer.css \ -O /www/adminer/adminer.css
lxc-web01:~# chown -R www:www /www/adminer lxc-web01:~# chmod -R 755 /www/adminer
On se contente ici de définir le “VirtualHost” correspondant au service, dans le répertoire de configuration du serveur Nginx: On alimente un fichier dédier selon:
lxc-web01:~# nano /etc/nginx/conf.d/adminer.conf ## Contenu Virtualhost service Adminer server { listen 80; server_name adminer.lxc-web01.lxc; access_log /var/log/nginx/adminer.access.log; error_log /var/log/nginx/adminer.error.log; root /www/adminer; index index.php; location / { try_files $uri $uri/ =404; } location ~ \.php$ { try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass php; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
S'il existe un fichier de définition par défaut, le supprimer:
lxc-web01:~# rm /etc/nginx/conf.d/default.conf
☛ Démarrage avec l'hôte: Si vous souhaitez éviter de faire «à la main» le lancement du container après un arrêt/relance du serveur, il suffit de modifier sa configuration en ajoutant ou dé-commentant les lignes suivantes:
$ nano $(lxc-config lxc.lxcpath)/lxc-web01/config lxc.group = onboot lxc.group = webserver lxc.start.auto = 1
Pour autant que vous ayez suivi la partie “autostart:” dans la configuration des containers «non privilégiés»…
☛ «Lien» proxy:
Le container lxc-web01
contient maintenant le service Adminer. On a prévu de l'atteindre en passant par le CT Proxy Web: En conséquence, vous devez vous assurer que ce service est bien identifié dans la configuration du proxy:
## Dans le CT ''lxc-proxy'' lxc-proxy:~$ cat /etc/nginx/conf.d/lxc-proxy.conf #Contents of /etc/nginx/conf.d/lxc-web01.conf server { listen 80; ... } server { listen 443 ssl http2; ... location /adminer { include conf.d/proxy_set_header.inc; proxy_pass http://lxc-web01/adminer/; } ... }
Vous devez redémarrer le serveur Nginx du proxy à chaque fois que vous modifiez ce fichier, pour bonne prise en compte (cf. le tuto proxy).
☛ Accès direct:
Vous pouvez «by-passer» le proxy… Dans ce cas, le CT lxc-web01
n'embarque pas le HTTPS et il vous faudra ouvrir le port du container sur un port libre sur serveur via la commande iptables
qui peut prendre les formes suivantes:
Ouvrir & fermer et Voir les @:ports NATés:
Ouvrir: sudo iptables -t nat -A PREROUTING -p tcp -i <interface> --dport <portHost> -j DNAT --to-destination <@IP:Port Destination> Exemple: sudo iptables -t nat -A PREROUTING -p tcp -i br0 --dport 8000 -j DNAT --to-destination 10.0.3.51:80 Fermer: sudo iptables -t nat -D PREROUTING -p tcp -i <interface> --dport <portHost> -j DNAT --to-destination <@IP:Port Destination> Exemple: sudo iptables -t nat -D PREROUTING -p tcp -i br0 --dport 8000 -j DNAT --to-destination 10.0.3.51:80 Liste: sudo iptables -t nat -L sudo iptables -t nat -S
☛ Utilisation:
On suppose ici que vous passez par le proxy configuré comme ci-dessus, et que votre serveur s'appelle wasabi
. Il faut bien sûr vous souvenir du login/mot de passe MariaDB que vous avez défini ici…
https://wasabi/adminer/
lxc-web01
car les CT sont sur le même sous-réseau.