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?
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
.