web-dev-qa-db-fra.com

Comment puis-je créer un dossier public_HTML dans Ubuntu?

Question simple, mais pour une raison quelconque, je n'ai pas pu trouver la réponse exacte sur Google:

J'ai une nouvelle installation d'Ubuntu sur Slicehost et je voudrais créer un répertoire public dans mon répertoire personnel pour un site Web simple contenant un tas de fichiers HTML statiques. Comment puis-je faire cela? Est-ce juste une question de frappe mkdir public_html et définir les autorisations, ou existe-t-il un moyen plus propre? (Je me souviens que dans le passé, j'ai eu des problèmes où chaque fois que je copiais un fichier dans mon répertoire public_html, je devais définir manuellement ses autorisations, ce qui était assez frustrant.)

25
RexE

En supposant que vous avez déjà installé Apache, procédez comme suit:

Sudo a2enmod userdir
Sudo service Apache2 reload

La première commande active le mod userdir Apache, qui fait exactement ce que vous voulez. Le second recharge les configurations Apache pour qu'il commence à utiliser la nouvelle configuration.

Pour installer Apache2:

Sudo apt-get install Apache2

Bien sûr, vous devrez également vous assurer que les autorisations sur votre dossier public_html permettent à l'utilisateur www-data de voir les fichiers qui s'y trouvent - 755 fonctionne généralement bien. Pour faire ça:

mkdir ~/public_html
chmod -R 755 ~/public_html

Cela va récursivement (-R) passer par votre public_html et définir les autorisations à 755 (propriétaire rwx, et à la fois le groupe et les autres r-x, r-x).

33
rz.

Les autres réponses sont sur la bonne voie avec mod_userdir, mais son utilisation donnera à votre site Web l'URL de base http://www.yourdomain.com/~username/ - par exemple, un fichier /home/username/public_html/index.html serait accessible en tant que http://www.yourdomain.com/~username/index.html. Si vous souhaitez que vos fichiers soient accessibles sous la racine du domaine, comme http://www.yourdomain.com/index.html par exemple, alors vous devrez mettre la directive

DocumentRoot /home/username/public_html

dans le fichier de configuration Apache.

Soit dit en passant, ce type de question convient mieux aux forums Slicehost.

10
David Z

Vous devez utiliser mod_userdir pour Apache, sinon vous devez configurer des liens symboliques à partir de /var/www/ ou partout.

Votre problème d'autorisations est dû au fait qu'Apache n'a pas accès en lecture à vos fichiers. Vous devez autoriser l'accès en lecture à www-data (ou quel que soit l'utilisateur; spécifique à la distribution).

2
strager