La bonne façon de changer de répertoire ou d'exécuter à partir de plusieurs répertoires sous un port différent pour apache2 est la suivante:
Pour apache2, les fichiers de configuration sont situés sous /etc/apache2et n'utilisent pas un seul fichier de configuration comme dans les anciennes versions mais sont divisés en fichiers de configuration plus petits, /etc/apache2/apache2.confétant le fichier de configuration principal. Pour servir des fichiers d'un répertoire différent, nous avons besoin d'un nouveau fichier conf de virtualhost. Les fichiers conf de virtualhost se trouvent dans /etc/apache2/sites-available(ne modifiez pas les fichiers dans les sites activés). L'installation par défaut d'Apache utilise le fichier conf de virtualhost 000-default.conf.
Commencez par créer un nouveau fichier virtualhost en copiant le fichier virtualhost par défaut utilisé par l'installation par défaut d'apache (celui qui s'exécute sur localhost sur le port 80). Accédez au répertoire /etc/apache2/sites-available, puis effectuez une copie par sudo cp 000-default.conf example.com.conf, modifiez maintenant le fichier en sudo gedit example.com.conf:
<VirtualHost *:80>
ServerAdmin example@localhost
DocumentRoot /home/ubuntu/example.com
</VirtualHost>
J'ai supprimé les lignes non importantes du fichier ci-dessus par souci de concision. Voici DocumentRootle chemin d'accès au répertoire à partir duquel les fichiers du site Web doivent être servis tels que index.html.
Créez le répertoire à partir duquel vous souhaitez servir les fichiers, par exemple; mkdir example.comet changer le propriétaire et le groupe par défaut du répertoire, par exemple si votre nom d'utilisateur connecté est ubuntuchanger les autorisations comme sudo chown ubuntu:www-data example.com. Cela accorde un accès complet à l'utilisateur ubuntuet permet l'accès en lecture et en exécution au groupe www-data.
Maintenant éditez le fichier apache conf /etc/apache2/apache2.confen exécutant la commande sudo gedit apache2.confet trouvez la ligne <Directory /var/www/>et en dessous de la balise de fermeture </Directory>, ajoutez ce qui suit ci-dessous:
<Directory /home/ubuntu/example.com>
Options Indexes FollowSymLinks Includes ExecCGI
AllowOverride All
Require all granted
</Directory>
Il existe maintenant deux commandes pour activer ou désactiver les fichiers de configuration de virtualhost, qui sont a2ensiteet a2dissiterespectivement. Maintenant que notre example.com.conffichier utilise le même port ( 80) que celui utilisé par le fichier de configuration par défaut ( 000-default.conf), nous devons désactiver le fichier de configuration par défaut en émettant la commande sudo a2dissite 000-default.confet activer notre fichier de configuration virtualhost ensudo a2ensite example.com.conf
Maintenant, redémarrez ou rechargez le serveur avec la commande sudo service apache2 restart. Apache sert maintenant les fichiers du répertoire example.comsur localhostle port par défaut de 80.
La a2ensitecommande crée essentiellement un lien symbolique vers le fichier conf sous le répertoire activé par le site
Ne modifiez pas les fichiers au sein du directoy activé pour les sites (ou activé pour les *), comme indiqué dans cette réponse https://stackoverflow.com/a/41568701/2532763
Pour modifier le port et exécuter à partir de plusieurs répertoires sur différents ports:
Maintenant, si vous devez exécuter le répertoire sur un autre port, modifiez le numéro de port de 80 à 8080 en modifiant le fichier virtualhost comme suit:
<VirtualHost *:8080>
ServerAdmin user@localhost
DocumentRoot /home/ubuntu/work
</VirtualHost>
et l'édition /etc/apache2/ports.confet l'ajout Listen 8080juste en dessous de la ligneListen 80
Nous pouvons maintenant activer le fichier conf par défaut de virtualhost qui s'exécute sur le port 80, car le répertoire example.com utilise le port 8080, comme sudo a2ensite 000-default.conf
Maintenant, redémarrez ou rechargez le serveur avec la commande sudo service apache2 restart. Maintenant, les deux répertoires sont accessibles depuis localhostetlocalhost:8080