Je viens d'installer Ubuntu (11.04).
J'ai installé Apache/mysql/php etc.
J'ai quelques sites assis dans
/var/www/site1
/var/www/site2
/var/www/site3
Je veux pouvoir accéder à ceux-ci à
http://site1.local
http://site2.local
http://site3.local
Donc, dans mon fichier hosts j'ai
127.0.0.1 site1.local
127.0.0.1 site2.local
127.0.0.1 site3.local
Ensuite, j'ai copié /etc/Apache2/sites-available/default
3 fois.
alors maintenant j'ai:
/etc/Apache2/sites-available/site1
/etc/Apache2/sites-available/site2
/etc/Apache2/sites-available/site3
Ils ressemblent tous à (avec les noms de sitex appropriés)
<VirtualHost site1.local>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/site1
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/site1/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog ${Apache_LOG_DIR}/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${Apache_LOG_DIR}/access.log combined
Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>
</VirtualHost>
Dans le terminal, j'appelle alors
Sudo a2ensite site1 site2 site3 && Sudo /etc/init.d/Apache2 reload
Ce qui semble fonctionner, sauf qu'un seul des vhosts fonctionne en même temps (y compris par défaut), qu'est-ce que je fais mal?
- Rechargement de la configuration du serveur Web Apache2
Apache2: impossible de déterminer de manière fiable le nom de domaine complet du serveur,
en utilisant 127.0.1.1 pour ServerName
[Ven 15 avr. 10:45:27 2011] [avertir] NameVirtualHost *: 80 n'a pas de VirtualHosts
Fichier: / etc/hosts
127.0.0.1 site1.local
127.0.0.1 site2.local
127.0.0.1 site3.local
Fichier: / etc/Apache2/Apache2.conf
[...]
NameVirtualHost *:80
[...]
Fichiers: / etc/Apache2/sites-available/site {i} .local.conf (au lieu de {i} insérer le numéro: 1 ou 2 ou 3)
<VirtualHost *:80>
ServerName site{i}.local
ServerAdmin webmaster@localhost
DocumentRoot /var/www/site{i}
[...]
</VirtualHost>
Dans le répertoire / etc/Apache2/sites-enabled / créez des liens symboliques:
@site{i}.local.conf
Redémarrez Apache et amusez-vous :)
Il existe un script qui rend cela simple pour vous - https://github.com/RoverWire/virtualhost
Ceci finit par faire la même chose que expliqué par les réponses données mais le fait en une seule commande, par exemple. -
Sudo virtualhost create mysite.local my_site
Il vous permet également de supprimer un hôte que vous avez créé.
Sudo virtualhost delete mysite.local my_site
Notez simplement que "mon_dir" suppose qu'il commence après/var/www
Donc, si votre dossier de site est dans/var/www/my_site
Vous devriez lancer ceci (chemin du répertoire de passe sans/var/www) -
Sudo virtualhost create mysite.local my_site
Vous pouvez également modifier le fichier de script et supprimer le chemin par défaut "/ var/www" afin de pouvoir passer un chemin absolu au répertoire du site.