Recherchez et suivez l'évolution des prix sur 140 000 produits

Installer LAMP ubuntu – Avec gestion des virtualhosts

0

Avant propos

Cet article cible particulièrement les développeur qui travaille sur linux et qui souhaite facilement ajouter un site en local en ne tapant qu’une ligne de commande. J’insiste sur le fait que le script est destiné à une utilisation locale, pour se faciliter la vie dans la création et le développement de nouveaux projets.

Le script sera a adapté à vos besoins, ainsi qu’à votre configuration, il faudra pour cela connaître quelques bases en bash et le tour sera joué.

Je vais dans un premier temps expliquer comment est configuré et organisé mon environnement de travail, car c’est important pour comprendre la logique du script, et ça permettra aussi de l’adapter à ce que vous avez besoins.

Le serveur web installé sur ma machine est donc un LAMP, à savoir Linux, Apache, Mysql et PHP.
J’essaye d’avoir une architecture logique dans l’arborescence de mes dossiers projets web, en tout cas logique pour moi, peut-être que certain d’entre vous trouverons celle-ci bien compliqué.
Donc j’ai un dossier « P » dans mon dossier « home ». Avec dedans un dossier par lettre « A », « B », la lettre correspondant simplement à la première lettre du site. Par exemple « amazon.fr » sera rangé dans « A » et google.fr dans « G ».
Chaque site est dans un dossier à son nom sans les « www ». Enfin dans chaque dossier de site j’ai un dossier DUMP contenant une sauvegarde de la base de données, un dossier WWW qui sera le dossier racine du site avec toute l’arborescence du site et enfin un dossiers SOURCES avec les fichiers source graphique (.psd, .ai).
En image ça donne ça :

arbo

En partant de cette arbo de travail je souhaitais pouvoir ajouter un site en ligne en ne tapant qu’une ligne de commande.
Après avoir renseigné l’url de mon site le script doit :

  • Créer automatiquement les dossiers de l’arborescence.
    Ou
    Récupérer automatiquement le dépôt git de mon site ce qui créera la même arborescence.
  • Créer un Vhost sur apache au nom du site
  • Créer automatiquement une base de données et un utilisateurs MySQL au nom du site
  • Créer un fichier de bienvenue PHP et un fichier de sauvegarde des identifiants MYSQL
  • Modifier le fichier hosts pour le rendre accessible en local
  • Rebooter apache
  • Le site sera à ce moment là disponible et on pourra y accéder en tapant son url. Si vous laissez la dernière ligne du script firefox l’ouvrira directement.

Voici le script, j’ai essayé de le commenter un maximum.
Il s’agit évidement d’une base que je vous invite à essayer de comprendre et le modifier à votre sauce pour qu’il colle le plus possible à vos besoins.

Mise en oeuvre

Généralement je mets tous mes script BASH au même endroit, dans un dossier nommé logiquement BASH à la racine de mon dossier perso « ~/BASH ». Je vais me répéter c’est une base adapté à ma logique, adaptez donc à vos besoins.

#!/bin/bash

PATH_PROJECT=~/P/
## Récupération du premier paramètre
URI_SITE=$1
## Récupération du second paramètre
GIT=$2

MYSQL_DBB="sites-"${URI_SITE:0:8}
WORK_FOLDER="WWW"
DUMP_FOLDER="_DUMP_"
DATE=`date +%Y-%m-%d`
NAS_FOLDER=$DATE"_"$URI_SITE"_AlbanL"
CONTENT_NOTES="##Accès MYSQL\n\nHOST:localhost\n\nUSER:"$MYSQL_DBB"\n\nPWD:123456\n\nBDD:"$MYSQL_DBB
DEPOT_GIT="git@votre-depot-git.tld:identifiant/"$URI_SITE".git"

## Login root de votre MySql
USER_MYSQL="root"
PWD_MYSQL="monpasswordroot"

## Récupération de la première lettre du site
FIRST_LETTER=${URI_SITE:0:1}

## Transformation de la lettre en majuscule
declare -u  FIRST_LETTER
FIRST_LETTER=$FIRST_LETTER

FOLDER_PATH=$PATH_PROJECT$FIRST_LETTER
## Tester cette lettre pour voir si il existe déjà un dossier avec ce nom
if [ ! -e $FOLDER_PATH ]; then
	mkdir $FOLDER_PATH
        echo  -e "$FOLDER_PATH a été créé !\n"
        chmod 0755 $FOLDER_PATH
else
	echo -e "$FOLDER_PATH éxiste déjà !\n"
fi


echo "-= Deuxième Param $GIT  =-"

if [ $GIT = "git" ]; then

echo "-= Recupération du depot git =-"

##Récupération du dépot
cd $FOLDER_PATH
git clone $DEPOT_GIT 
cd ~/

else

## Si il ne s'agit pas d'un dépot git alors création normal des dossiers
if [ ! -e $FOLDER_PATH"/"$URI_SITE ]; then
        mkdir $FOLDER_PATH"/"$URI_SITE
        echo  -e $FOLDER_PATH"/"$URI_SITE" a été créé !\n"
else
        echo -e $FOLDER_PATH"/"$URI_SITE" éxiste déjà !\n"
fi


fi


## Test avant de créer le dossier de travail
if [ ! -e $FOLDER_PATH"/"$URI_SITE"/"$WORK_FOLDER ]; then
        mkdir $FOLDER_PATH"/"$URI_SITE"/"$WORK_FOLDER
        echo  -e $FOLDER_PATH"/"$URI_SITE"/"$WORK_FOLDER" a été créé !\n"
else
        echo -e $FOLDER_PATH"/"$URI_SITE"/"$WORK_FOLDER" éxiste déjà !\n"
fi


## Test pour voir si le dossier DUMP existe
if [ ! -e $FOLDER_PATH"/"$URI_SITE"/"$DUMP_FOLDER ]; then
        mkdir $FOLDER_PATH"/"$URI_SITE"/"$DUMP_FOLDER
        echo  -e $FOLDER_PATH"/"$URI_SITE"/"$DUMP_FOLDER" a été créé !\n"
        chmod 0755 $FOLDER_PATH"/"$URI_SITE"/"$DUMP_FOLDER
	echo -e $CONTENT_NOTES > $FOLDER_PATH"/"$URI_SITE"/"$DUMP_FOLDER"/access.txt"
else
        echo -e $FOLDER_PATH"/"$URI_SITE"/"$DUMP_FOLDER" éxiste déjà !\n"
fi

## Copier le fichier index.php
if [ $GIT != "git" ]; then
echo "-= Copier le fichier index de bienvenue =-"
cp ~/BASH/index.php $FOLDER_PATH"/"$URI_SITE"/"$WORK_FOLDER"/index.php"
fi

## Connexion à la base de données + création des tables et de l’utilisateur + droits sur la BDD
echo "-= Création de la base de données =-"
touch ~/BASH/script.sql && echo "CREATE DATABASE \`$MYSQL_DBB\`;" > ~/BASH/script.sql
mysql --user=$USER_MYSQL --password=$PWD_MYSQL < ~/BASH/script.sql
rm -rf ~/BASH/script.sql

touch ~/BASH/script.sql && echo "CREATE USER \`$MYSQL_DBB\`;" > ~/BASH/script.sql
mysql --user=$USER_MYSQL --password=$PWD_MYSQL < ~/BASH/script.sql
rm -rf ~/BASH/script.sql

GRANT="GRANT ALL ON \`$MYSQL_DBB\`.* to '$MYSQL_DBB'@'localhost' identified by '123456';"

touch ~/BASH/script.sql && echo $GRANT > ~/BASH/script.sql
mysql --user=$USER_MYSQL --password=$PWD_MYSQL < ~/BASH/script.sql
rm -rf ~/BASH/script.sql

## Ajouter le vhosts
echo "-= Ajouter le virtual host de $URI_SITE =-"
VHOST="<VirtualHost *:80>
        DocumentRoot $FOLDER_PATH/$URI_SITE/$WORK_FOLDER/
        ServerName $URI_SITE
	ServerAlias www.$URI_SITE
        <Directory $FOLDER_PATH/$URI_SITE/$WORK_FOLDER/>
                Options +Indexes +FollowSymLinks +MultiViews +Includes
                AllowOverride All
                Order allow,deny
                allow from all
        </Directory>
</VirtualHost>"

sudo bash -c "echo \"$VHOST\" > /etc/apache2/sites-available/$URI_SITE.conf"

 
# Ajouter dans le fichier hosts
echo "-= $URI_SITE ajouté au fichier hosts =-"
sudo bash -c "echo \"127.0.0.1    www.$URI_SITE\" >> /etc/hosts"

 
# Enable dans apache
sudo a2ensite $URI_SITE
echo "-= Restart Apache =-"
# Un petit reload d'apache
sudo service apache2 restart

echo "Le site est accessible sur : http://www.$URI_SITE"

#ouverture du site sur firefox
firefox "http://www."$URI_SITE

 

Création du fichier

nano ~/BASH/local_site.sh

Copier / Coller dans nano le contenu du script présenté ci-dessus

Enregistrez avec CTRL + X et validez

rendre le fichier exécutable

chmod +x ~/BASH/local_site.sh

On va maintenant ajouter un alias pour nous simplifier encore la vie.

nano ~/.bash_aliases

Ajouter la ligne suivante à la fin du fichier

alias addsite= ‘~/BASH/local_site.sh’

Enregistrer avec CTRL + X

validation de l’alias en tapant la ligne suivante

source ~/bash_aliases

L’installation est maintenant terminée et vous pouvez ajouter un site en tapant la ligne de commande suivante

addsite site-de-test.com

A la fin le script s’ouvrira dans firefox,

Partager.

A propos de l'auteur

Créateur du site, passionné par la domotique, le développement Web, Les gadgets Chinois et par plus ou moins tout ce qui existe en fait. Le site a été créé autour de l'impression 3D et de la domotique, mais d'autres briques s'ajoutent eu fil du temps. Car dès que j'ai une nouvelle passion, j'essaye de la faire partager. Vous pouvez aussi découvrir mon blog dédié à la pâtisserie.

Laisser un commentaire