web-dev-qa-db-fra.com

édition de fichiers hôtes Apache vhosts et ubuntu?

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
5
Hailwood

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 :)

8
vbert

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.

0
Nitish Dhar