J'ai d�cid� de changer de config pour des petits d�v web, dans la pr�c�dente config, j'utilisais kvm-qemu avec samba et sur la machine h�te firejail pour isoler le navigateur web et tester en local le fonctionnement d'un site web semi statique avec un peu de php. Garder une vm en fonctionnement continu avec les interfaces r�seaux, je trouvais �a un peu trop contraignant
Maintenant, j'ai essay� de tester les conteneurs avec podman qui n'utilise pas un processus permanent. Je me suis rendu compte quand la config tourne que je n'ai pas document� toutes les �tapes et que au cas o� il faut refaire les manips, �a serait du temps � reprendre toutes les �tapes. Et puis je voudrais voir � partir s'il y des am�liorations possibles, les technos �voluent et je ne suis pas au courant de tout. Surtout pour la partie config r�seau sur podman, �a a l'air un peu casse t�te
Ces infos compl�tent les infos sur ce site
Pour podman, utilisation en tant qu'utilisateur standard... Il faut pr�voir plusieurs go d'espaces libre dans le r�pertoire utilisateur sur debian c'est dans:
/home/utilisateur/.local/share/containers/storage
🟨 verif que podman est install�
ou
si c'est pas install�
pour debian
1 2
| sudo apt update
sudo apt install podman |
ou combin� avec podman compose
1 2
| sudo apt update
sudo apt install podman podman-compose |
si c'est install�, regarder s'il n'y a pas d�j� des images parce que �a prend de l'espace disque
🟠 lire les discussions suivantes parce que sur debian pour la version linux 6.1 il faut installer un package suppl�mentaire pour modifier le mode de stockage des images. Si cette �tape est ignor�e, les images peuvent occuper des dizaines de go au lieu de quelques go
Eventuellement enregistrer les images existantes dans un fichier archive, voir apr�s la partie commit
regarder s'il pas un conteneur en cours de fonctionnement
sinon arr�ter les conteneurs actifs
podman stop -a && podman rm -a
t�l�chargement de l'image php avec le serveur httpd
podman pull php:8.2-apache
t�l�chargement de l'image mysql 8
t�l�chargement de l'image phpmyadmin
podman pull phpmyadmin:5.2.2
voir l'espace disque occup� par les conteneurs
d�marrage du conteneur avec l'image de php-apache
podman run -d --name web_server -p 8080:80 docker.io/library/php:8.2-apache
ouvrir le navigateur web ou curl et il doit y avoir "it works" sur http://locahost:8080
il peut aussi il y avoir une erreur de permission... sur l'exp�rience, de ce tuto, possible d'ignorer cette erreur et de passer aux �tapes suivantes et de modifier le fichier de config pour autoriser option indexes dans le directory listing...
on peut entrer dans le conteneur sur le shell bin bash avec l'alias web_server de la commande run
podman exec -it web_server /bin/bash
ou avec l'id du conteneur
89b...ci-dessous correspond � l'id du conteneur en 1�re colonne de la cde pr�c�dente
podman exec -it 89b... /bin/bash
cr�ation d'un fichier html simple, comme il n'y a pas d'�diteur de texte, la commande cat peut servir � �crire dans un fichier � partir de la m�moire tampon (buffer) jusqu'� la saisie de 'EOL'
cat > index_s1.html<< EOL
1 2
| <html><body><h1>Conteneur/image podman html<h1>
</h1></body></html> |
on termine la saisie avec EOL
on fait la meme chose pour tester php
1 2 3 4 5 6 7
| <html><body><h1>Conteneur/image podman php</h1>
<h2>config php</h2>
<br>
<?php phpinfo(); ?>
</h1></body></html> |
EOL termine le buffer
on est toujours dans le shell bin/bash du conteneur mais on peut v�rifier dans le navigateur que les fichiers index_s1.html et index_s2.php sont acccessibles
http://localhost:8080/index_s1.html
http://localhost:8080/index_s2.php
si c'est bon, on continue
ici, c'est pour modifier le fichier de configuration du serveur avec un affichage du r�pertoire web
toujours dans le bin bash du conteneur, attention � ne pas �tre sur le fichier de config de la machine h�te ou d'une �ventuelle vm!!!
cd /etc/apache2/sites-available
copier le contenu ci dessous dans un �diteur de texte de la machine hote
ajouter ou remplacer en dessous de documentroot
1 2 3 4 5 6 7 8
|
<Directory /var/www/html>
Options +Indexes
AllowOverride all
Order allow,deny
Allow from all
Require all granted
</Directory> |
la commande ci-dessous va effacer le fichier de config et il sera possible de le remplacer par copie avec le fichier de config modifier. Ne pas tenir compte de l'affichage, appuyer sur enter apr�s la copie et saisir EOL pour terminer le buffer
cat > 000-default.conf << EOL
copier la totalit� du fichier de config, attention � ne pas copier autre chose
tester la configuration
dans le navigateur
http://localhost:8080/
il devrait s'afficher
index_s1.html
index_s2.php
si c'est bon on peut sortir du shell bin/bash du conteneur maintenant avec exit ou continuer et installer des modules php
📦 config de php dans le conteneur
pour les modules suivants (cde php -m avec transpo en ligne):
1 2 3 4
| ctype curl date dom fileinfo filter gd hash iconv json libxml
mbstring mysqli mysqlnd openssl pcre PDO pdo_mysql pdo_pgsql pdo_sqlite
pgsql Phar posix random readline Reflection session SimpleXML
sodium SPL sqlite3 standard tokenizer xml xmlreader xmlwriter Zend OPcache zlib |
Toujours dans le conteneur de l'image httpd exec -it
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| docker-php-ext-install mysqli
docker-php-ext-enable mysqli
apache2ctl restart
docker-php-ext-install intl opcache pgsql pdo pdo_mysql pdo_pgsql gd mbstring zip
docker-php-ext-install intl
docker-php-ext-install intl
docker-php-ext-install opcache
docker-php-ext-install opcache
docker-php-ext-enable opcache
docker-php-ext-enable opcache
docker-php-ext-install intl
docker-php-ext-enable intl
docker-php-ext-install pgsql
docker-php-ext-enable pgsql
/usr/local/bin/docker-php-ext-enable gd mysqli
/usr/local/bin/docker-php-ext-enable pdo pdo_mysql
/usr/local/bin/docker-php-ext-enable pgsql
docker-php-ext-install pdo
docker-php-ext-enable pdo
docker-php-ext-install pdo_mysql
docker-php-ext-enable pdo_mysql
docker-php-ext-install pdo_pgsql
docker-php-ext-enable pdo_mysql
docker-php-ext-install gd
docker-php-ext-enable gd
/usr/local/bin/docker-php-ext-enable gd
docker-php-ext-enable gd
docker-php-ext-install mbstring
docker-php-ext-enable mbstring
docker-php-ext-install zip
docker-php-ext-enable pdo_pgsql
docker-php-ext-enable zip |
Les modules gd et pgsql ne se sont pas install�s alors il faut maj le conteneur
1 2 3 4 5 6 7 8 9 10 11
| apt update
docker-php-ext-install gd
docker-php-ext-enable gd
docker-php-ext-install pgsql
docker-php-ext-enable pgsql
docker-php-ext-install pgsql
docker-php-ext-install pdo_pgsql
ou
docker-php-ext-configure pgsql -with-pgsql=/usr/local/pgsql && docker-php-ext-install pgsql pdo_pgsql
apt-get install -y libpq-dev && docker-php-ext-configure pgsql -with-pgsql=/usr/local/pgsql && docker-php-ext-install pdo pdo_pgsql |
pour voir les modules install�s
php -m
ou php-info avec http://localhost:8080/index_s2.php
si c'est bon on peut sortir du shell bin/bash du conteneur maintenant avec exit ou continuer ...
et on peut enregistrer le conteneur dans une nouvelle image
d'abord, r�cup�rer l'id du conteneur en 1�re colonne ou le nom alias de la cde run
enregistrement avec l'id
podman commit f580f66abe50 localhost/httpd-php:8.2
enreg avec l'alias
podman commit web_server localhost/httpd-php:8.2
on arr�te les conteneurs actifs
podman stop -a && podman rm -a
📍️si l'image a bcp �t� modifi�e ou pour d�placer sur une autre machine il est possible d'enregistrer l'image modifi�e dans une archive ou d'enregistrer n'importe quelle image pour �viter podman pull...il est �galement possible d'enregistrer plusieurs images dans la m�me archive, il faut juste s�parer les images par un espace
par exemple dans le r�pertoire courant pour l'image docker.io/library/mariadb:latest
podman save --output image_mariadb_12_0.tar docker.io/library/mariadb:latest
on peut supprimer l'image pour par exemple �conomiser de l'espace disque
podman rmi docker.io/library/mariadb:latest
et plus tard recharger l'image depuis le r�pertoire d'enregistrement
podman load --input image_mariadb_12_0.tar
test de la nouvelle image
podman run -d --name serveur_web -p 8080:80 localhost/httpd-php:8.2
dans le navigateur
http://localhost:8080/
🟢il est possible de supprimer la premi�re image pour �conomiser de l'espace disque avec la commande "podman rmi"
cette commande map un r�pertoire web avec le serveur web php de podman
podman run -d --name php-dev -v /media/DOSSIER_WEB_ORDI_HOTE:/var/www/html:Z localhost/httpd-php:8.2
normalement les fichiers web s'affichent dans le navigateur
avec podman run pour lancer un serveur lamp
1 2 3 4 5 6 7
| podman pod create --name db0 --publish 8080:80 &&
podman run -d --name php8-dev --pod db0 -v /media/DOSSIER_WEB_ORDI_HOTE:/var/www/html:Z httpd-php:8.2 &&
podman pod create --name db1 --publish 8000:80 --publish 3306:3306 && podman run --name mysql-dev --pod db1 -v /media/DOSSIER_BDD_HOTE:/var/lib/mysql:Z -e MYSQL_ROOT_PASSWORD="mdp" -e MYSQL_USER="utilisateur_bdd" -e MYSQL_PASSWORD="mdpbdd" -d mysql:8 &&
podman run --name pma --pod db1 -d -e PMA_HOST=127.0.0.1 -e PMA_PORT=3306 phpmyadmin:latest &&
echo -e '\n' && podman pod ps &&
echo -e '\n' && podman ps &&
echo -e '\n' |
phpmyadmin sur port 8000
http://127.0.0.1:8000
mais avec podman-compose le r�seau fonctionne mieux
il faut installer podman-compose et cr�er des fichier yml
pour installer podman compose
sur debian
1 2 3
|
sudo apt update
sudo apt install podman-compose |
ci-dessous le fichier podman-compose.yml �quivalent � podman run mais fonctionne mieux au niveau du r�seau, acc�s possible simultan�ment au web, bdd et pma
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| version: '3.8'
services:
php-apache-environment:
image: httpd-php:8.2
container_name: httpd-php8
volumes:
- /media/DOSSIER_WEB_ORDI_HOTE:/var/www/html
ports:
- 8080:80
db:
image: mysql:8
container_name: db-mysql8
environment:
MYSQL_ROOT_PASSWORD: mdp
MYSQL_DATABASE: demo
MYSQL_USER: utilisateur_bdd
MYSQL_PASSWORD: mdpbdd
restart: unless-stopped
volumes:
- /media/DOSSIER_BDD_HOTE:/var/lib/mysql
ports:
- "3306:3306"
phpmyadmin:
image: phpmyadmin:5.2.2
container_name: pma
environment:
PMA_HOST: db
MYSQL_ROOT_PASSWORD: rootpassword
ports:
- "8000:80" |
dans le r�pertoire du fichier yml podman-compose.yml , d�marrer avec
et �teindre avec
Il est aussi possible d'utiliser podman-desktop mais en ligne de cde on peut voir pas mal de chose d'un coup
Pascal
info2gestion📍️
Partager