Comment changer le répertoire racine d'un serveur apache? [fermé]

241

Quelqu'un sait-il comment changer la racine du document du serveur Apache? Je veux essentiellement localhostvenir du /users/spencer/projectsrépertoire au lieu de /var/www.

Éditer

J'ai fini par comprendre. Certains ont suggéré que je change le httpd.conffichier, mais j'ai fini par trouver un fichier /etc/apache2/sites-available/defaultet changé le répertoire racine de /var/wwwà /home/myusername/projects_folderet cela a fonctionné.

Spencer Cooley
la source
Stack Overflow est un site pour les questions de programmation et de développement. Cette question semble être hors sujet car elle ne concerne pas la programmation ou le développement. Voir Quels sujets puis-je poser ici dans le centre d'aide. Peut-être que Server Fault ou Webmaster Stack Exchange seraient un meilleur endroit pour demander.
2018

Réponses:

209

Vous devez modifier le DocumentRootparamètre dans votre httpd.conffichier. Il y a de fortes chances que ce soit sous quelque chose comme/etc/apache2/conf/httpd.conf

Utilisez votre éditeur préféré (je recommande Vim ) et recherchez le DocumentRootet changez-le en /users/spencer/projects. Regardez également un peu plus bas pour un paramètre qui ressemble à ceci:

<Directory "/var/www">

Vous voudrez également changer ce qui est dans les guillemets dans votre nouveau répertoire. Cela donne à Apache l'accès à la lecture à partir de ce répertoire lorsqu'un utilisateur fait une demande qui l'appelle.

Redémarrez maintenant votre service apache ( httpd -k restart) et vous devriez être prêt à partir.

Edit : les fichiers de configuration du site Apache2 sont désormais généralement conservés /etc/apache2/sites-available/ (Debian, Ubuntu, etc.).

RDL
la source
6
J'ai ouvert /etc/apache2/httpd.conf, mais le fichier était vide. Je l'ouvre avec gedit.
Spencer Cooley
3
Le fichier peut se trouver dans /etc/httpd/conf/httpd.conf, selon votre version de Linux.
Chris Henry
3
le fichier httpd.conf est vide mais j'ai trouvé un fichier dans etc / apache2 / sites-available / default et y ai changé le répertoire racine. J'aurais probablement dû mentionner que ce n'est pas sur un serveur réel. Je mets en place un environnement de développement local. Je ne sais pas si cela fait une différence
Spencer Cooley
3
Serait-il possible d'activer à la fois / var / www et / home / myusername / projects_folder en même temps? Et comment dois-je configurer? Merci.
Paul Lo
3
La "réponse" est vraiment obsolète. La bonne réponse selon les documents Ubuntu 18.x est soit de changer le répertoire racine d'Apache ou de déplacer le projet vers / var / www / html. Pour changer le répertoire racine d'Apache, exécutez: cd / etc / apache2 / sites-available. Ouvrez ensuite le fichier 000-default.conf à l'aide de la commande: nano 000-default.conf. Modifiez l'option DocumentRoot: DocumentRoot / chemin / vers / mon / projet. (voir askubuntu.com/questions/337874/… )
sea26.2
263

Veuillez noter que cela ne s'applique qu'à Ubuntu 14.04 LTS et aux versions plus récentes.

Dans mon Ubuntu 14.04 LTS, la racine du document était définie sur /var/www/html. Il a été configuré dans le fichier suivant:

/etc/apache2/sites-available/000-default.conf

Alors fais juste un

sudo nano /etc/apache2/sites-available/000-default.conf

et changez la ligne suivante en ce que vous voulez:

DocumentRoot /var/www/html

Faites également un

sudo nano /etc/apache2/apache2.conf

et trouve ça

<Directory /var/www/html/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>

et passez /var/www/htmlà votre répertoire préféré

et enregistrez-le.

Après avoir enregistré vos modifications, redémarrez simplement le serveur Web apache2 et vous aurez terminé :)

sudo service apache2 restart


Si vous préférez un éditeur de texte graphique, vous pouvez simplement le remplacer sudo nanopar a gksu gedit.

katze_sonne
la source
1
@Paul Lo: Je n'ai pas essayé cela sur Ubuntu 13.10, seulement sur Ubuntu 14.04; Comme je suis à peu près sûr que la première fois que j'ai configuré apache (qui était sur Ubuntu 12.04), il n'y avait pas de tel répertoire. Donc oui, je suppose que cela n'est disponible que sur Ubuntu 14.04 LTS et plus récent. Cependant, vous pouvez consulter les autres réponses. Les votes positifs suggèrent qu'ils ont aidé d'autres personnes, peut-être qu'ils travaillent également avec Ubuntu 13.10.
mozzbozz
1
Cependant, merci d'avoir demandé, je viens de modifier ces informations dans la réponse afin que personne d'autre ne se retrouve dans le piège d'essayer cela avec les anciennes versions d'Ubuntu (y)
mozzbozz
3
@mozzbozzm, vous avez raison. Seulement 14.04. Vraiment un choix étrange, ayant maintenant soudainement var/www/htmlcomme racine par défaut. Sont - ils réellement essaient de perdre du temps des peuples? :)
davidkonrad
4
Je reçois une erreur interdite You don't have permission to access / on this server.lorsque je clique sur localhost: 80 dans mon navigateur. Dois-je changer de port?
Costa
3
@Costa J'ai résolu le problème en ajoutant <Directory path_to_directory> Options Indexes FollowSymLinks AllowOverride None Require all granted </Directory> dans /etc/apache2/apache2.conf
Keenan Gebze
42

J'ai dû éditer /etc/apache2/sites-available/default. Les lignes sont les mêmes que celles mentionnées par RDL.

pseudo
la source
3
Une modification suggérée par @pabloab avait ceci à dire: "Apache 2.4 et supérieur nécessite .confà la fin, et par défaut avoir un 000-préfixe as". Le résultat est /etc/apache2/sites-available/000-default.conf. Je n'ai pas testé cela, mais cela peut aider certaines personnes.
Nick
^^ cela l'a corrigé. Où est-il documenté que j'ai besoin de .conf à la fin de mes fichiers disponibles sur les sites?!? J'ai environ 20 hôtes virtuels qui ont été désactivés et hors ligne après une mise à jour, et après quelques heures, le trouver et renommer les fichiers disponibles sur mon site l'ont corrigé pour moi.
James Perih
23

C'est pour Ubunutu 14.04:

Dans le fichier, /etc/apache2/apache2.confil doit être comme ci-dessous sans le nom du répertoire:

<Directory /home/username>
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>

et dans le fichier, /etc/apache2/sites-available/000-default.confvous devez inclure le nom du répertoire personnalisé, à savoir www:

DocumentRoot /home/username/www

Si ce n'est pas comme ci-dessus, il vous donnera une erreur lors du chargement du serveur: Forbidden You don't have permission to access / on this server

androsfat
la source
Merci mon pote :) Cela a fonctionné pour moi dans Ubuntu 16.04
Magesh Kumaar
2
Il a également fonctionné sur Debian 8
androsfat
15

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

lordvcs
la source
4

Je travaillais avec LAMP et pour changer le dossier racine du document, j'ai modifié le fichier par défaut qui se trouve dans le dossier / etc / apache2 / sites-available . Si vous voulez faire la même chose, modifiez comme suit

DocumentRoot /home/username/new_root_folder
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory /home/username/new_root_folder>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
    </Directory>

Après cela, si vous tapez localhost dans le navigateur, il chargera le contenu * / home / username / new_root_folder * .

Shashidhara
la source
4

Si vous ne pouviez pas trouver http.confet suivre le chemin de Nick.

Redémarrez Apache à l'aide de sudo service apache2 restart

Nitine
la source
4

Pour apache2 sur Linux Mint 17.3 Cinnamon 64 bits, les travaux suivants:

  1. Dans /etc/apache2/sites-available/ouvrir le 000-default.conffichier, et modifier le document racine du chemin absolu de votre répertoire.

    sudo vim /etc/apache2/sites-available/000-default.conf

  2. En /etc/apache2/ouvert httpd.conf, et ajoutez une <Directory>balise référençant votre répertoire et contenant exactement les mêmes paramètres que la balise pour var/www.

    sudo vim /etc/apache2/apache2.conf

    Sur ma machine, cela ressemblait à ceci:


<Directory /home/my_user_name/php/>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
</Directory>

Remarque: Dans la première étape, vous souhaiterez probablement modifier la racine du document dans le default-ssl.conffichier également à des fins SSL. Mais pour autant que je sache, cela n'est pas nécessaire pour faire fonctionner un environnement de développement général.

stackato
la source
2

Dans la version apache 2.4.18 (Ubuntu).

1. allez dans ce fichier /etc/apache2/apache2.conf recherchez <Directory /var/www/>et remplacez dans votre répertoire ......

2. allez dans /etc/apache2/sites-available/000-default.conf recherchez DocumentRoot /var/www/htmlet remplacez votre DocumentRoot ....

habibun
la source
J'ai fait les deux choses. Il affiche toujours Interdit Vous n'avez pas la permission d'accéder à / sur ce serveur.
Programmeur
vérifiez votre autorisation de dossier si elle ne se trouve pas dans votre répertoire personnel.
habibun
2

Dans le cas où vous utilisez Ubuntu 16.04. Veuillez mettre à jour le fichier 000-default.conf dans le répertoire / etc / apache2 / sites-available.

ici -> ServerAdmin webmaster @ localhost DocumentRoot / var / www / html / YourFolder

Shashank Saxena
la source
1

J'avais fait le /var/wwwpour être un lien logiciel vers le répertoire requis (par exemple. /users/username/projects) Et les choses allaient bien après cela.

Cependant, naturellement, l'original /var/wwwdoit être supprimé - ou renommé.

maan81
la source
0

Si quelqu'un a installé LAMPdans le /optdossier, ce /etc/apache2n'est pas ce que vous recherchez.

Recherchez le httpd.conffichier dans /opt/lampp/etc/httpd.conf.

Modifiez la ligne dans ce dossier et enregistrez-la depuis le terminal.

Yogesh Gupta
la source
0

Dans RedHat 7.0: /etc/httpd/conf/httpd.conf

ehacinom
la source
0

Si vous utilisez Linux Mint (opinion personnelle, de toutes les distributions, celle-ci me fait plaisir), suivez ceci:

1- Allez dans / etc / apache2 / sites-available et éditez 000-default.conf 2- Recherchez DocumentRoot, par exemple DocumentRoot / var / www / html que vous changez dans votre répertoire respectif; 3- Ouvrez le terminal et tapez: sudo service apache2 restart

EDITED ----- Je me rends compte que dans Mint vous allez pour /etc/apache2/apache.conf, remplacez / var / www sur votre chemin respectif, puis redémarrez le serveur (étape 3).

C'est tout.

Marcelo Agimóvel
la source
0

S'applique à Ubuntu 14.04 et versions ultérieures. Assurez-vous de sauvegarder les fichiers suivants avant d'apporter des modifications.

1.Ouvrez /etc/apache2/apache2.confet recherchez la <Directory /var/www/>directive et remplacez le chemin par /home/<USERNAME>/public_html. Vous pouvez utiliser * au lieu de.

2.Ouvrez /etc/apache2/sites-available/000-default.confet remplacez DocumentRootla propriété value de /var/www/htmlà /home/<USERNAME>/public_html. Aussi <Directory /var/www/html>à <Directory /home/<USERNAME>/public_html.

3.Ouvrez /etc/mods-available/php7.1.conf. Rechercher et commenter le code suivant

<IfModule mod_userdir.c>
    <Directory /home/*/public_html>
        php_admin_flag engine Off
    </Directory>
</IfModule>

N'activez pas le php_admin_flag engine OFFdrapeau car la raison est mentionnée dans le commentaire ci-dessus Code de directive. La version php peut également être 5.0, 7.0 ou tout ce que vous avez installé.

Créez un public_htmlrépertoire dans home/<USERNAME>.

Redémarrez le service apache en exécutant la commande sudo service apache2 restart.

Testez en exécutant un exemple de script sur le serveur.

user1184294
la source
-3

Si vous (comme moi) trouvez ce post via Google:

Je l'ai trouvé sur /etc/apache2/sites-available/000-default.conf

Borkee
la source
4
veuillez décrire votre réponse détaillée avec du code intégré plutôt que de pointer vers un fichier externe.
Christian MICHON