Une place pour une véritable innovation. Partagez vos propres utilitaires créés avec la communauté Manjaro.
Questions et discussions sur la programmation et le codage.
#1Messageil y a 4 ans
Manjaro n'est pas adapté pour faire du développement web coté serveur
Une méthode "simple" est d'utiliser docker : nous pouvons choisir notre version de php ou de mysql ce qui permet une compatibilité beaucoup plus grande avec notre hébergeur.
Je vous propose un petit script a adapter pour créer son petit serveur lamp rapidement
Il va utiliser docker-compose, ce qui permet une grande souplesse d'utilisation
dockerweb.sh (ps: ne pas le lancer avec sudo !)
#!/usr/bin/bash
DIR="$HOME/dockers/"
project="${1:-project}"
#phpver="${2:-'7.2'}"
[ -e "${DIR}/${project}" ] || {
mkdir -v -p "${DIR}/${project}/www"
mkdir -v -p "${DIR}/${project}/mysql"
[ -e "${DIR}/${project}/www/index.php" ] || echo -e "<?php\n phpinfo();" > "${DIR}/${project}/www/index.php"
}
cd "${DIR}/${project}"
pwd
pkg=($(pacman -Qq docker-compose 2>/dev/null));
if [[ "${pkg[0]}" != "docker-compose" ]]; then
echo "installation de docker compose..."
sudo pacman -Si docker-compose
sudo usermod -aG docker $USER
fi
echo "démarrage de docker..."
sudo systemctl start docker
gen_config() # file_name
{
echo "Génération du fichier de configuration $1"
cat << "EOF" > "$1"
version: '3.7'
services:
web:
#container_name: webserver
image: webdevops/php-apache:7.2
#https://dockerfile.readthedocs.io/en/latest/content/DockerImages/dockerfiles/php-apache.html#
ports:
- "80:80"
volumes:
- ./www:/app
links:
- sql9:sql9
domainname: phpbb.local
environment:
PHP_MEMORY_LIMIT: 640M
PHP_DISPLAY_ERRORS: 1
PHP_MAX_EXECUTION_TIME: 600
APPLICATION_GID: 1000
extra_hosts:
- "web.local:127.0.0.1"
sql9:
image: mysql:5.5
volumes:
- ./mysql:/var/lib/mysql
ports:
- "3306:3306"
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: root
MYSQL_USER: demo
MYSQL_PASSWORD: demo
myadmin:
image: phpmyadmin/phpmyadmin
ports:
- "8080:80"
links:
- sql9:sql9
environment:
PMA_HOST: sql9
PMA_USER: root
PMA_PASSWORD: root
EOF
}
if [ ! -e "${DIR}/${project}/www/docker-compose.yml" ]; then
gen_config "docker-compose.yml"
fi
echo "phpmyadmin à : http://localhost:8080/ (login:root pass: root)"
echo "site web à http://localhost/"
docker-compose up
Que va faire ce script ?
Si un projet n'existe pas encore il va le créer dans notre HOME avec cette arborescence
~/dockers
└── project1
├── docker-compose.yml
├── mysql
└── www
└── index.php
Ensuite il va lancer LAMP avec une commande "docker-compose up" - la première fois, il va créer l'image, cela devrait prendre quelques minutes. Mais les prochaines fois, le serveur est lancé en quelques secondes.
Donc ce script n'a rien de magique ou d'obligatoire , il crée une arborescence et uniquement un fichier de configuration ; opération tout à fait faisable manuellement.
----
L'accés à phpmyadmin est : http://localhost:8080/
L'accès au site web est http://localhost
----
Avec docker, pour lancer à nouveau le serveur, on se déplace dans le répertoire du projet (cd ~/dockers/projet1/
) et on lance la commande docker-compose up
Toute la "magie" est dans le fichier docker-compose.yml
, il est possible de le modifier pour adapter sa configuration #2Messageil y a 4 ansBon, j'ai quand même une erreur que je n'arrive pas è résoudre.
éDIT : j'ai installé docker
et docker-compose
. Bien que j'ai lu dans le script que celui-ci avait les commandes pour les installer, il m'avait renvoyé une première erreur comme quoi docker n'était pas installé ni lancé.
Je l'ai donc installé puisj'ai lancé le service. Le script m'a renvoyé une seconde erreur, me disant que docker
avait besoin de docker-compose
, je l'ai donc installé aussi.
Puis, j'ai obtenu cette dernière erreur, mais là, je suis bloqué...
Apache2
était démarré, je l'ai donc stoppé et malgré cela, j'ai ce retour du script :
[bruno@bruno Scripts]$ ./dockerweb.sh
/home/bruno/dockers/project
démarrage de docker...
Génération du fichier de configuration docker-compose.yml
phpmyadmin à : http://localhost:8080/ (login:root pass: root)
site web à http://localhost/
ERROR: Couldn't connect to Docker daemon at http+docker://localhost - is it running?
If it's at a non-standard location, specify the URL with the DOCKER_HOST environment variable.
Une idée ? Système : Manjaro XFCE LTS
CPU : 6 x Intel(R) Core(TM) i5-8400 CPU @ 2.80GHz
Carte graphique : NVIDIA Corporation GP107 [GeForce GTX 1050] (rev a1)
Cartes son : Audio device: Intel Corporation Cannon Lake PCH cAVS (rev 10)
Audio device: NVIDIA Corporation GP107GL High Definition Audio Controller (rev a1)
#3Messageil y a 4 ans1) il faut installer uniquement le paquet docker-compose
, le paquet docker
est une dépendance donc installé automatiquement avec.
Pour lancer la commande docker-compose, il faut que le service systemd docker soit lancé
2) d’après ton erreur, je suppose que ton port 80 est déjà occupé :
- tu as sans doute déjà un apache (ou autre) qui tourne sur ta machine
si tu désires avoir les 2 serveurs web sur ta machine alors il faut changer de port dans le fichier de configuration docker-compose.yml Manjaro STABLE - Linux lts - fish - Kde5 - icore N100 - 16Go RAM - ssd - efi
#mount /dev/archlinux /mnt/manjaro
#4Messageil y a 4 ansBon,
J'ai stoppé le service httpd.
Dans ton script, j'ai modifié les ports pour tout mettre sur le 81. (je ne sais quel autre ports utiliser )
Voici le script modifié. Dis-moi, s'il te plaît si j'ai commis une erreur car même avec celui-ci, le script me renvoie la même erreur :
#!/usr/bin/bash
DIR="$HOME/dockers/"
project="${1:-project}"
#phpver="${2:-'7.2'}"
[ -e "${DIR}/${project}" ] || {
mkdir -v -p "${DIR}/${project}/www"
mkdir -v -p "${DIR}/${project}/mysql"
[ -e "${DIR}/${project}/www/index.php" ] || echo -e "<?php\n phpinfo();" > "${DIR}/${project}/www/index.php"
}
cd "${DIR}/${project}"
pwd
pkg=($(pacman -Qq docker-compose 2>/dev/null));
if [[ "${pkg[0]}" != "docker-compose" ]]; then
echo "installation de docker compose..."
sudo pacman -Si docker-compose
sudo usermod -aG docker $USER
fi
echo "démarrage de docker..."
sudo systemctl start docker
gen_config() # file_name
{
echo "Génération du fichier de configuration $1"
cat << "EOF" > "$1"
version: '3.7'
services:
web:
#container_name: webserver
image: webdevops/php-apache:7.2
#https://dockerfile.readthedocs.io/en/latest/content/DockerImages/dockerfiles/php-apache.html#
ports:
- "81:81"
volumes:
- ./www:/app
links:
- sql9:sql9
domainname: phpbb.local
environment:
PHP_MEMORY_LIMIT: 640M
PHP_DISPLAY_ERRORS: 1
PHP_MAX_EXECUTION_TIME: 600
APPLICATION_GID: 1000
extra_hosts:
- "web.local:127.0.0.1"
sql9:
image: mysql:5.5
volumes:
- ./mysql:/var/lib/mysql
ports:
- "3306:3306"
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: root
MYSQL_USER: demo
MYSQL_PASSWORD: demo
myadmin:
image: phpmyadmin/phpmyadmin
ports:
- "8181:81"
links:
- sql9:sql9
environment:
PMA_HOST: sql9
PMA_USER: root
PMA_PASSWORD: root
EOF
}
if [ ! -e "${DIR}/${project}/www/docker-compose.yml" ]; then
gen_config "docker-compose.yml"
fi
echo "phpmyadmin à : http://localhost:9090/ (login:root pass: root)"
echo "site web à http://localhost/"
docker-compose up
J'ai modifié le fichier docker-compose.yml
pour le diriger vers 127.0.0.1:81
version: '3.7'
services:
web:
#container_name: webserver
image: webdevops/php-apache:7.2
#https://dockerfile.readthedocs.io/en/latest/content/DockerImages/dockerfiles/php-apache.html#
ports:
- "81:81"
volumes:
- ./www:/app
links:
- sql9:sql9
domainname: phpbb.local
environment:
PHP_MEMORY_LIMIT: 640M
PHP_DISPLAY_ERRORS: 1
PHP_MAX_EXECUTION_TIME: 600
APPLICATION_GID: 1000
extra_hosts:
- "web.local:127.0.0.1"
sql9:
image: mysql:5.5
volumes:
- ./mysql:/var/lib/mysql
ports:
- "3306:3306"
environment:
MYSQL_ROOT_PASSWORD: obelix6603
MYSQL_DATABASE: root
MYSQL_USER: bruno
MYSQL_PASSWORD: obelix6603
myadmin:
image: phpmyadmin/phpmyadmin
ports:
- "8181:81"
links:
- sql9:sql9
environment:
PMA_HOST: sql9
PMA_USER: root
PMA_PASSWORD: root
J'ai commis des errurs ? Système : Manjaro XFCE LTS
CPU : 6 x Intel(R) Core(TM) i5-8400 CPU @ 2.80GHz
Carte graphique : NVIDIA Corporation GP107 [GeForce GTX 1050] (rev a1)
Cartes son : Audio device: Intel Corporation Cannon Lake PCH cAVS (rev 10)
Audio device: NVIDIA Corporation GP107GL High Definition Audio Controller (rev a1)
#5Messageil y a 4 ansobelix1502 a écrit : ↑il y a 4 ans
J'ai stoppé le service httpd.
Pourquoi faire compliqué ?
Si tu as fermé apache, tu n'as PAS à rediriger les ports !
De plus ce que tu écris est faut :
image: phpmyadmin/phpmyadmin
ports:
- "8181:81"
Tu rediriges le port dans docker 81 ver le port 8181 de ta machine
De plus le port phpmyadmin/nginx dans docker est 80 non 81 : quel mélange
image: webdevops/php-apache:7.2
ports:
- "81:81"
Tu rediriges le port dans docker 81 ver le port 81 de ta machine (qui est déjà utilisé par phpmyadmin !!!!!)
De plus le port apache dans docker est 80 non 81 : quel mélange
apache et phpmyadmin utilisent tous les 2 le port 80 dans le conteneur docker !
Il est possible de rediriger le port 80 des conteneurs docker vers un port de notre machine hôte avec :
- "port_de_ma_machine:80"
doc: https://docs.docker.com/compose/compose ... t-syntax-1
Comme dit dans le message précédent, on ne change les ports "machine" (80 et 8080) qui si nous avons déjà des services sur notre machine qui les utilise déjàManjaro STABLE - Linux lts - fish - Kde5 - icore N100 - 16Go RAM - ssd - efi
#mount /dev/archlinux /mnt/manjaro
#6Messageil y a 4 ansOn avance.
Tout va bien jusqu'ici :
ERROR: for project_sql9_1 Cannot start service sql9: driver failed programming external connectivity on endpoint project_sql9_1 (f8f2c82870be3aec818262463bb049eb93d91b5c86b1fa538d285288b727f731): Error starting userland proxy: listen tcp 0.0.0.0:3306: bind: address already in use
ERROR: for sql9 Cannot start service sql9: driver failed programming external connectivity on endpoint project_sql9_1 (f8f2c82870be3aec818262463bb049eb93d91b5c86b1fa538d285288b727f731): Error starting userland proxy: listen tcp 0.0.0.0:3306: bind: address already in use
ERROR: Encountered errors while bringing up the project.
Alors là je ne comprends pluis, j'ai stoppé tous les ervives auparant... Système : Manjaro XFCE LTS
CPU : 6 x Intel(R) Core(TM) i5-8400 CPU @ 2.80GHz
Carte graphique : NVIDIA Corporation GP107 [GeForce GTX 1050] (rev a1)
Cartes son : Audio device: Intel Corporation Cannon Lake PCH cAVS (rev 10)
Audio device: NVIDIA Corporation GP107GL High Definition Audio Controller (rev a1)
#7Messageil y a 4 ansl'erreur n'est pas claire ?
obelix1502 a écrit : ↑il y a 4 ans
ERROR: for sql9 Cannot start service sql9: ... Error starting userland proxy: listen tcp 0.0.0.0 : 3306: bind: address already in use
Alors là je ne comprends pluis, j'ai stoppé tous les ervives auparant...
Pourtant il dit le contraire, il ne peut monter le service mysql sur ta machine hôte car le port 3306 est occupé Manjaro STABLE - Linux lts - fish - Kde5 - icore N100 - 16Go RAM - ssd - efi
#mount /dev/archlinux /mnt/manjaro