Comment faire un serveur virtuel


Voici un petit tuto rappel qui explique comment ajouter un sous domaine sur un serveur par exemple un vps. Nous avons déjà au préalable configuré un domaine (toto.com) sur ce serveur. La configuration des sous domaines pointe bien sur ce serveur

On va créer un sous domaine truc.toto.com. Les sources vont être dans /home/user/sites/truc.toto.com

Etape 1. Configuration apache. On va créer un fichier du nom de truc.toto.com.conf qu'on va mettres dans le répertoire /etc/apache2/sites-available

Voici l'exemple

<VirtualHost *:80>
  DocumentRoot       /home/user/sites/truc.toto.com
   ServerName         truc.toto.con
   <Directory //home/user/sites/truc.toto.com>
   AllowOverride      All
   Allow from all
    Require all granted
   </Directory>
</VirtualHost>

On copie ce fichier dans apache.
explication Ligne 2 vous l'avez compris : on défini le répertoire des sources.
ligne suivante on donne le nom du site. Les lignes suivante définissent les permissions.

Etape 2. Activation
Voici les lignes de commandes
 a2ensite truc.toto.com
et bien sûr il faut relancer apache pour que cela soit pris en compte
service apache2 reload

Voilà c'est fini. Vous pouvez contrôler tout ça en envoyant un petit fichier texte index.html avec le nom du site et aller avec un navigateur afficher le site. Vous devriez voir cette page.



Comment activer le mode UserDir sous Apache

Le mode UserDir est une fonctionnalité bien pratique car elle permet de donner la possibilité pour chaque utilisateur de placer ses sources dans un répertoire public_html pour développer un site web et de tester sur l'adresse
http://localhost/~user

Voici un tuto valable pour Ubuntu 16.04 pour les autres versions cela ne devrait pas être trés différent.

1 : Avoir un serveur php qui tourne en local. Plus de détail sur cela dans l'articleInstallation d'un serveur php

2 : Activer le mode userdir avec la commande suivante

sudo a2enmod userdir

3 : Modifier le fichier de configuration de php
/etc/apache2/mods-available/php7.0.conf (pour php 5 il doit avoir un autre fichier pour cela)

Commenter les lignes vers la fin du fichier comme l'exemple ci-dessous


# Running PHP scripts in user directories is disabled by default
#
# To re-enable PHP in user directories comment the following lines
# (from <IfModule ...> to </IfModule>.) Do NOT set it to On as it
# prevents .htaccess files from disabling it.
##<IfModule mod_userdir.c>
##    <Directory /home/*/public_html>
##        php_admin_flag engine Off
##    </Directory>
##</IfModule>
4 : Relancer apache
sudo service apache2 restart
Voilà Si vous mettez un fichier php avec par exemple le code suivant
<?php
   phpinfo();
?>

Dans un répertoire public_html de votre home, vous pouvez tester facilement si ça marche.

Un grand merci à 1f0r de m'avoir aidé.

Installation d'un serveur php sur Ubuntu 16.04

Une mise à jour de Ubuntu 14.04 vers 16.04 s'est bien passée sauf que le serveur php ne fonctionne pas comme avant. Voici une procédure pour tout réinstaller depuis le début.
Donc la première étape a été de tout désinstaller les paquet apache php et mysql.

Puis on lance la ligne de commande
sudo apt-get install apache2 php mysql-server libapache2-mod-php php-mysql
A ce stage on test avec un navigateur avec l'adresse localhost
Maintenant pour tester php on va faire un petit fichier texte avec ce code

<?php
   phpinfo();
?>
on va enregistrer dans le répertoire /var/www/html avec le nom phpinfo.php
et on lance un navigateur
http://localhost/phpinfo.php
On devrait voir l'écran phpinfo donnant des information sur la verison php si  c'est le cas tout va bien.
 
Une petite configuration pour permettre à un utilisateur de mettre les sources dans son propre répertoire
sudo a2enmod userdir
sudo service apache2 restart
Quand on va sur l'adresse http://localhost/~user
On voit bien les fichiers présents dans le répertoire public_html mais le fichier phpinfo.php affiche une page blanche.

Conclusion, il doit avoir un problème avec le module apache userdir et php. Si quelqu'un a une solution je suis preneur d'une piste. L'idée était de mettre ses fichiers php dans le home et non dans /var/www/public_html

Cela fonctionnait trés bien jusqu'à présent. On va essayer de faire un serveur virtuel.

Finalement je m'en suis sortis avec un lien symbolique

cd /var/www/public_html
sudo ln -s /home/user/public_html user


et en faisant localhost/user j'arrive bien à avoir les sources php qui s'executent.

Aprés quelques temps j'ai fini par trouver la solution. Elle est décrite dans l'article suivant Comment activer le mode userdir