Comment faire pour exécuter plusieurs sites sur un apache instance
Passé des heures à tourner en rond à la suite de chaque guide que je peux trouver sur le net.
Je veux avoir deux sites en cours d'exécution sur un seul apache exemple, quelque chose comme ça -
192.168.2.8/site1
et
192.168.2.8/site2
J'ai été tourner en rond, mais pour le moment j'ai deux fichiers de conf dans des "sites-available (liés à des sites-enabled)" qui ressemble à ceci-
<VirtualHost *:2000>
ServerAdmin [email protected]
ServerName site1
ServerAlias site1
# Indexes + Directory Root.
DirectoryIndex index.html
DocumentRoot /home/user/site1/
# CGI Directory
ScriptAlias /cgi-bin//home/user/site1/cgi-bin/
Options +ExecCGI
# Logfiles
ErrorLog /home/user/site1/logs/error.log
CustomLog /home/user/site1/logs/access.log combined
</VirtualHost>
et
<VirtualHost *:3000>
ServerAdmin [email protected]
ServerName site2
ServerAlias site2
# Indexes + Directory Root.
DirectoryIndex index.html
DocumentRoot /home/user/site2/
# CGI Directory
ScriptAlias /cgi-bin//home/user/site2/cgi-bin/
Options +ExecCGI
# Logfiles
ErrorLog /home/user/site2/logs/error.log
CustomLog /home/user/site2/logs/access.log combined
</VirtualHost>
http.conf ressemble à ceci-
NameVirtualHost *:2000
NameVirtualHost *:3000
Pour le moment, je reçois cette erreur-
[error] VirtualHost *:80 — mixing * ports and non-* ports with a NameVirtualHostaddress is not supported, proceeding with undefined results
Ports.conf ressemble à ceci – (bien que pas de guides ont mentionné la nécessité de modifier ce)
NameVirtualHost *:80
Listen 80
<IfModule mod_ssl.c>
# If you add NameVirtualHost *:443 here, you will also have to change
# the VirtualHost statement in /etc/apache2/sites-available/default-ssl
# to <VirtualHost *:443>
# Server Name Indication for SSL named virtual hosts is currently not
# supported by MSIE on Windows XP.
Listen 443
</IfModule>
<IfModule mod_gnutls.c>
Listen 443
</IfModule>
Quelqu'un peut-il donner quelques instructions simples pour obtenir cette course? Chaque guide que j'ai trouvé a dit de le faire d'une manière différente, et chacun d'eux mène à des erreurs différentes. Je suis évidemment faire quelque chose de mal mais n'ont pas trouvé d'explication claire de ce que cela pourrait être.
Veux juste un site accessible sur le port 2000 et l'autre accessible sur le port 3000 (ou que ce soit, juste pris ces ports pour le test).
Je suis sur Ubuntu server 12.04...
=============
MODIFIER
Suivie d'une autre "guide"...
Maintenant, j'ai mis cela dans sites-available:
<VirtualHost *:80>
DocumentRoot "/home/user/site1/"
ServerName 192.168.2.10/site1
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "/home/user/site2/"
ServerName 192.168.2.10/site2
</VirtualHost>
Ont mis cela dans apache2.conf:
ServerName site1
ServerName site2
Ont ajouté ceci à des ports.conf:
Listen 192.168.2.10:80
==============
MODIFIER
Il fonctionne maintenant, j'ai mis ça dans un fichier de conf dans sites-enabled:
<VirtualHost *:81>
DocumentRoot "/home/user/site1/"
ServerName site1
</VirtualHost>
<VirtualHost *:82>
DocumentRoot "/home/user/site2/"
ServerName site2
</VirtualHost>
J'ai ceci dans les ports.conf:
Listen *:80
Listen *:81
Listen *:82
J'ai ceci dans apache2.conf:
ServerName site1
ServerName site2
Je n'ai pas trouver dans tous les guides, je viens de travailler pendant toute une journée d'essais et d'erreurs, donc je ne sais pas si c'est une bonne solution. Mais c'est au moins de travail de la façon dont je le veux maintenant.
- Il me semble que vous devez spécifier les noms d'hôte virtuel dans NameVirtualHost.
- Cheers, j'ai essayé beaucoup de choses le long de ces lignes, pouvez-vous être plus précis sur ce que je devrais essayer de mettre là-dedans?
- Après une journée entière à essayer d'obtenir ce travail, j'ai enfin tombé sur la réponse lol. Je me sens mentalement vidé, je vais au lit. Je doute que ma famé apache hack solution serait de l'intérêt de personne, mais je vais le modifier dans la fin de ma question.
- Mais si quelqu'un peut fournir de plus amples informations ou une explication à propos de cela, je vais le marquer comme réponse...
- je ne pourrais pas utiliser le même sous-structure de dossier que le site en direct en quelque sorte. Dans Apache, le haut niveau (menu des sites) index.php fichier <a>s de l'individu, les index et les fichiers étaient assis dans des sous-dossiers. sites chargés mais les sites individuels des indices (php) se référant à leur css ou js dans des sous-dossiers, ce qui n'a pas fonctionné. J'avais besoin de mettre ces dossiers à droite au niveau de la racine, où les "sites " menu" index.php est assis. Bousille mon contenu, structure, mais il fonctionne. Maintenant j'ai besoin de faire attention à ne pas avoir les mêmes noms de dossier ou d'un fichier similaire noms pour mes projets. Une meilleure solution serait appréciée.
Vous devez vous connecter pour publier un commentaire.
Votre question est un mélange de quelques concepts différents. Vous avez commencé en disant que vous avez voulu exécuter sites sur le même serveur en utilisant le même domaine, mais dans des dossiers différents. Qui ne nécessite pas d'installation particulière. Une fois que vous obtenez le seul domaine en cours d'exécution, il vous suffit de créer des dossiers en vertu de cette docroot.
Basée sur le reste de votre question, ce que vous voulez vraiment faire est d'exécuter différents sites sur le même serveur avec leurs propres noms de domaine.
Le meilleur de la documentation que vous trouverez sur le sujet est le hôte virtuel de la documentation dans le manuel apache.
Il existe deux types de serveurs virtuels: basé sur le nom et l'IP. Nom-fonction vous permet d'utiliser une adresse IP unique, tandis que les IP nécessite une adresse IP différente pour chaque site. Basé sur votre description ci-dessus, vous souhaitez utiliser des serveurs virtuels par nom.
L'erreur initiale que vous aviez était dû au fait que vous avez été en utilisant les différents ports de la
NameVirtualHost
ligne. Si vous voulez vraiment avoir des sites ont servi de ports autre que 80, vous aurez besoin d'avoir unNameVirtualHost
entrée pour chaque port.En supposant que vous êtes à partir de zéro, c'est beaucoup plus simple que cela puisse paraître.
La première chose que vous devez faire est de dire à apache que vous allez utiliser des serveurs virtuels par nom.
Maintenant que apache sait ce que vous voulez faire, vous pouvez configurer votre serveur virtuel définitions:
Notez que vous pouvez exécuter autant de sites que vous le souhaitez sur le même port. Le
ServerName
être différent est suffisant de dire à Apache qui vhost à utiliser. Aussi, leServerName
directive est toujours le domaine/nom d'hôte et ne devrait jamais inclure un chemin d'accès.Si vous décidez d'exécuter des sites sur un port autre que le port 80, vous devez toujours inclure le numéro de port dans l'URL lors de l'accès au site. Ainsi, au lieu d'aller à l' http://example.com vous devez aller à http://example.com:81
Oui avec Virtual Host, vous pouvez avoir autant de programmes parallèles comme vous le souhaitez:
Ouvrir
Redémarrer apache
service httpd restart
Vous pouvez maintenant consulter Site1 :
Site2 :
Site3 :
Si le chemin n'est pas codé en dur dans le script, alors votre site web doit fonctionner de manière transparente.