web-dev-qa-db-fra.com

Problème de modification de la racine du document dans Ubuntu 16.04

Je suis récemment passé de Windows à Ubuntu 16.04 et j'essaie de configurer un environnement de développement Web. J'ai installé avec succès Apache, mysql et php, et html et php (créé un script de test via Sudo nano) est rendu parfaitement à partir de /var/www.

Ensuite, j'ai essayé de créer un nouveau fichier avec un texte sublime dans le répertoire /var/www juste pour comprendre que l'enregistrement du fichier donnait une erreur d'accès refusé. Cela m’a amené à un nouvel article sur les autorisations, etc., et j’ai réalisé que ce n’est probablement pas une bonne idée de modifier les autorisations de ce répertoire.

J'ai consulté des articles sur la manière de déplacer la racine du document Apache ailleurs. Ensuite, j'ai créé un nouveau répertoire projets/web sous /home/user et modifié le DocumentRoot dans /etc/Apache2/sites-available/000-default.conf (J'utilise Apache 2.4.18). J'ai apporté les modifications nécessaires dans le /etc/Apache2/Apache2.conf pour modifier également le chemin <Directory>. Apache redémarré et la DocuemntRoot a été modifiée, mais elle ne restitue aucun php. Même phpmyadmin qui travaillait auparavant via URL http: // localhost/phpmyadmin ne fonctionne plus.

  • changé dans /etc/Apache2/sites-available/000-default.conf:
    DocumentRoot /var/www/html
    à
    DocumentRoot /home/{user}/projects/web

  • Modifié dans /etc/Apache2/Apache2.conf:
    <Directory /var/www/> Options Indexes FollowSymLinks AllowOverride None Require all granted </Directory>
    à
    <Directory /home/{user}/projects/web/> Options Indexes FollowSymLinks AllowOverride None Require all granted</Directory>

Quelqu'un peut-il m'aider, comment puis-je modifier DocumentRoot et continuer à faire fonctionner php et phpmyadmin?

1
A. Munir

corrige d'abord les Apaches2 cassés

Vous avez apparemment cassé Apache2. Vous devez utiliser les paramètres d'hôte par défaut et créer un hôte virtuel pour le répertoire racine personnalisé à modifier. Supprimez ou renommez les fichiers de configuration que vous avez modifiés et restaurez les fichiers d'origine.

Utilisez le fichier 000-default.conf par défaut comme modèle. Copiez-le sous le nom de votre hôte virtuel et apportez des modifications à votre fichier personnalisé.

Vous pouvez renommer les fichiers en procédant comme suit:

$ cd /etc/Apache2/sites-available
$ Sudo mv 000-default.conf mysite.conf
$ cd /etc/Apache2
$ Sudo mv Apache2.conf Apache2.conf.test

Restaurez maintenant les fichiers par défaut avec cette ligne de commande:

$ Sudo apt -o Dpkg::Options::="--force-confmiss" install --reinstall Apache2

Créez maintenant votre hôte virtuel, "mysite.com". Vous pouvez remplacer le /home/web/mysite par n’importe quel répertoire. Dans votre cas, vous pouvez utiliser /home/{user}/projects/web.

$ cd /etc/Apache2/sites-available
$ Sudo cp 000-default.conf mysite.conf
$ Sudo mkdir -p /home/web/mysite/www
$ Sudo mkdir -p /home/web/mysite/log

Si l'hôte mysite.com n'existe pas, créez-le localement avec:

$ gksudo gedit /etc/hosts

Ajoutez-le au fichier hosts:

127.0.0.1  mysite.com

Maintenant, éditez votre fichier mysite.conf pour qu'il pointe vers votre choix racine du document.

$ pksudo gedit /etc/Apache2/sites-available/mysite.conf

Apportez les modifications suivantes à ce fichier. C'est la différence entre le fichier 000-default.conf et votre fichier mysite.conf nouvellement créé. La différence est mise en évidence dans le type gras.

 & ltVirtualHost *: 80> 
 # La directive ServerName définit le schéma de requête, le nom d'hôte et le port que 
 # le serveur utilise pour s'identifier. Ceci est utilisé lors de la création d'URL de redirection 
 #. Dans le contexte des hôtes virtuels, ServerName 
 # Spécifie le nom d'hôte qui doit apparaître dans l'en-tête Host: de la demande afin que 
 # Corresponde à cet hôte virtuel. Pour l'hôte virtuel par défaut (ce fichier), cette valeur 
 # N'est pas déterminante, car elle est utilisée comme hôte de dernier recours malgré tout. 
 # Cependant, vous devez la définir explicitement pour tout autre hôte virtuel. 
 NomServeur mysite.com 
 
 Webmaster ServerAdmin @ localhost 
 DocumentRoot/home/web/mysite/www& ltDirectory />
 Options + FollowSymLinks + ExecCGI + Inclut 
 Exiger que tous les droits soient accordés 
 </ Directory>
 
 
 # Niveaux de connexion disponibles: trace8, ..., trace1, débogage, informations, notification, avertir, 
 # Erreur, crit, alerte, émergent. 
 # Il est également possible de configurer le niveau de journalisation pour certains modules 
 #, Par exemple 
 #LogLevel info ssl: avertir 
 
 ErrorLog /home/web/mysite/log/error.logCustomLog /home/web/mysite//access.log combiné
 
 # Pour la plupart des fichiers de configuration de conf-available /, activés ou désactivés par [.____. # # Au niveau mondial, il est possible d'inclure une ligne avec 
 # pour un seul hôte virtuel particulier. Par exemple, la ligne 
 # Suivante active la configuration CGI pour cet hôte uniquement 
 # Après sa désactivation globale avec "a2disconf". 
 #Include conf-available/serve-cgi -bin.conf 
 </ VirtualHost> 
 
 # vim: syntaxe = Apache ts = 4 sw = 4 sts = 4 sr noet 

Activez maintenant le nouveau site avec:

$ Sudo a2ensite mysite.conf

Lorsque vous modifiez les fichiers de configuration Apache, redémarrez le service avec:

$ Sudo systemctl restart Apache2

Écrire des autorisations dans le répertoire et les fichiers du VirtualHost:

Vous pouvez utiliser les commandes chown et chgrp pour changer le propriétaire des fichiers et des dossiers de /home/web/mysite/www. S'ils appartiennent à votre ID utilisateur, vous aurez un accès en lecture et en écriture aux fichiers et aux dossiers.

Vous pouvez également créer un groupe spécifique et ajouter des utilisateurs au groupe spécifique afin que les utilisateurs de ce groupe aient un accès en lecture/écriture aux fichiers et aux dossiers.

L'utilisation de cette dernière considération peut constituer une meilleure alternative de sécurité que de donner aux autres utilisateurs un accès aux fichiers et dossiers de votre espace /home.

1
L. D. James