Chaque configuration est différente. Pour moi, j'ai beaucoup d'utilisateurs sur un serveur qui héberge chacun des sites Web, pour vous, vous n'aurez probablement pas besoin de créer plus d'un utilisateur sur le système. Cependant, si vous gérez plusieurs sites Web sur ce serveur, cette configuration vous aidera à gérer, configurer et déboguer chaque domaine d'une manière plus facile qu'une configuration LAMP standard. Pour que cela se produise, j'utilise plusieurs appareils Apache pour contourner les erreurs d'autorisation.
Tout d'abord, voici la structure du document que j'utilise:
/home/[USER]/domains/[DOMAIN]/html
/home/[USER]/domains/[DOMAIN]/logs
Chaque utilisateur a son propre compte avec un dossier de domaines (auquel j'ai ajouté pour /etc/skel
qu'il soit créé à chaque fois. Chaque domaine a son propre dossier dans le domains
dossier avec un html
dossier (j'ai mes raisons pour cela, principalement afin que les domaines puissent avoir des fichiers Web à l'extérieur N'hésitez pas à modifier cette structure comme bon vous semble, n'oubliez pas de faire ces changements tout au long de ce post.
Deuxièmement, j'héberge beaucoup de sites PHP donc j'utilise suPHP dans ma configuration. Par défaut, le paquet d'archives standard n'a pas le bon indicateur de compilation activé, ce qui entraîne une version moins sécurisée de suPHP. J'ai créé mon propre package suPHP que j'utilise sur mes serveurs, instructions d'installation ci-dessous. suPHP vous permet de définir les scripts PHP utilisateur à exécuter (entre autres: php.ini personnalisé pour chaque site, etc.). J'active également suExec pour Apache - supprimant ainsi la nécessité d'avoir la propriété de l'utilisateur www-data (un utilisateur que je méprise).
Assurez-vous d'abord que Apache et tous les autres services sont installés sur votre serveur. Assurez-vous qu'ils fonctionnent au moins. Après cela, je recommande d'installer suphp-common et le module libapache2-mod-suphp requis (Plus d'informations: Que sont les PPA et comment les utiliser? ). Ensuite, après ces installations, activez suPHP et suexec en utilisanta2enmod
sudo a2enmod suphp
sudo a2enmod suexec
sudo a2dismod php5
sudo /etc/init.d/apache restart
Vient ensuite le fichier de configuration. J'ai créé divers outils qui génèrent automatiquement les fichiers de configuration chaque fois que j'ajoute un nouveau site; cependant, voici le modèle de base que j'utilise:
<VirtualHost *:80>
ServerAdmin [EMAIL]
ServerName [DOMAIN]
ServerAlias www.[DOMAIN] [DOMAIN]
DocumentRoot /home/[USER]/domains/[DOMAIN]/html
<Directory /home/[USER]/domains/[DOMAIN]>
Options Indexes FollowSymLinks MultiViews
AllowOverride all
</Directory>
ErrorLog /home/[USER]/domains/[DOMAIN]/logs/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog /home/[USER]/domains/[DOMAIN]/logs/access.log combined
SuexecUserGroup [USER] [USER]
suPHP_UserGroup [USER] [USER]
suPHP_ConfigPath /home/[USER]/etc
</VirtualHost>
Cela configure la journalisation pour ce domaine, la racine du document et toutes les autres nécessités de base pour que le domaine fonctionne. Je place ces fichiers dans /etc/apache2/sites-available/
généralement nommés [USER]-[DOMAIN]
et les active / désactive avec a2ensite
comme ceci:
sudo a2ensite [USER]-[DOMAIN]
sudo a2dissite [USER]-[DOMAIN]
Après chaque modification des fichiers de configuration, Apache devra être rechargé avec
sudo /etc/init.d/apache reload
Bien que cela puisse sembler beaucoup pour configurer la quantité de flexibilité gagnée, à mon avis, l'emporte de loin sur le temps de configuration. Bien que vous n'ayez besoin que d'un serveur Web mono-utilisateur, à l'avenir, si vous avez toujours voulu autre chose qu'un serveur Web mono-utilisateur, vous devrez effectuer d'autres actions (ou simplement supprimer la sécurité tous ensemble) pour ce faire.