Saltar al contenido

Cómo ejecutar varios sitios en una instancia de apache

Solución:

Tu pregunta es mezclar algunos conceptos diferentes. Comenzó diciendo que quería ejecutar sitios en el mismo servidor usando el mismo dominio, pero en carpetas diferentes. Eso no requiere ninguna configuración especial. Una vez que tenga el dominio único en ejecución, simplemente cree carpetas debajo de ese docroot.

Según el resto de su pregunta, lo que realmente desea hacer es ejecutar varios sitios en el mismo servidor con sus propios nombres de dominio.

La mejor documentación que encontrará sobre el tema es la documentación del host virtual en el manual de apache.

Hay dos tipos de hosts virtuales: basados ​​en nombres y basados ​​en IP. El basado en nombre le permite usar una única dirección IP, mientras que el basado en IP requiere una IP diferente para cada sitio. Según su descripción anterior, desea utilizar hosts virtuales basados ​​en nombres.

El error inicial que recibía se debía al hecho de que estaba utilizando puertos diferentes a los NameVirtualHost línea. Si realmente desea que los sitios sirvan desde puertos distintos del 80, necesitará un NameVirtualHost entrada para cada puerto.

Suponiendo que está comenzando desde cero, esto es mucho más simple de lo que parece.

Si está usando 2.3 o una versión anterior, lo primero que debe hacer es decirle a Apache que va a usar hosts virtuales basados ​​en nombres.

NameVirtualHost *:80

Si está utilizando 2.4 o posterior, no agregue una línea NameVirtualHost. La versión 2.4 de Apache desaprobó el NameVirtualHost directiva, y se eliminará en una versión futura.

Ahora sus definiciones de vhost:

<VirtualHost *:80>
    DocumentRoot "/home/user/site1/"
    ServerName site1
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot "/home/user/site2/"
    ServerName site2
</VirtualHost>

Puede ejecutar tantos sitios como desee en el mismo puerto. los ServerName ser diferente es suficiente para decirle a Apache qué vhost usar. También el ServerName La directiva es siempre el dominio / nombre de host y nunca debe incluir una ruta.

Si decide ejecutar sitios en un puerto que no sea 80, siempre deberá incluir el número de puerto en la URL cuando acceda al sitio. Entonces, en lugar de ir a http://example.com, tendría que ir a http://example.com:81

Sí, con Virtual Host puede tener tantos programas paralelos como desee:

Abierto

/etc/httpd/conf/httpd.conf

Listen 81
Listen 82
Listen 83

<VirtualHost *:81>
    ServerAdmin [email protected]
    DocumentRoot /var/www/site1/html
    ServerName site1.com
    ErrorLog logs/site1-error_log
    CustomLog logs/site1-access_log common
    ScriptAlias /cgi-bin/ "/var/www/site1/cgi-bin/"
</VirtualHost>

<VirtualHost *:82>
    ServerAdmin [email protected]
    DocumentRoot /var/www/site2/html
    ServerName site2.com
    ErrorLog logs/site2-error_log
    CustomLog logs/site2-access_log common
    ScriptAlias /cgi-bin/ "/var/www/site2/cgi-bin/"
</VirtualHost>

<VirtualHost *:83>
    ServerAdmin [email protected]
    DocumentRoot /var/www/site3/html
    ServerName site3.com
    ErrorLog logs/site3-error_log
    CustomLog logs/site3-access_log common
    ScriptAlias /cgi-bin/ "/var/www/site3/cgi-bin/"
</VirtualHost>

Reiniciar apache

service httpd restart

Ahora puede referir Site1:

http://<ip-address>:81/ 
http://<ip-address>:81/cgi-bin/

Sitio2:

http://<ip-address>:82/
http://<ip-address>:82/cgi-bin/

Sitio3:

http://<ip-address>:83/ 
http://<ip-address>:83/cgi-bin/

Si la ruta no está codificada en ningún script, sus sitios web deberían funcionar sin problemas.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *