Creació i configuració dels VirtualHosts en Apache 2.2 i 2.4

Apache HTTP Server

Apache

El terme VirtualHost es refereix a la pràctica de córrer més d'un lloc web (com poden ser: inforoigpv.sytes.net, roig.sytes.net, materra.sytes.net, servidorsroig.sytes.net, exemple.com, companyia.exemple.com, exemple.org, etc.) en una sola màquina. Les màquines virtuals poden ser " basades en IP ", el que significa que vosté té una adreça IP diferent per a cada lloc web, o" Mòdul Rewrite (mod_rewrite) ", el que significa que té diversos noms que s'executen en cada adreça IP, o sot a la mateixa IP publica.

El fet que s'estan executant en el mateix servidor físic, no és evident per a l'usuari final.

Si tenim la intenció de muntar un multi domini, els VirtualHosts d'Apache és la solució.

Creació i configuració, basada en el Nom

Per crear els VirtualHost d'Apache, hi ha un directori anomenat sites-available, i allí és on crearem els VirtualHost. Accedim al directori ...

~# cd /etc/apache2/sites-available/

Per crear el VirtualHost, copiarem l'arxiu per defecte 'default' per la versió 2.2 d'Apache, o '00-default.conf' si esteu fent ús de la versió 2.4 d'Apache, i com a nom posaré l'adreça del domini:

~# cp default nom_del _domini o ~# cp 00-default.conf nom_del _domini.

Nota ... A la versió 2.4 d'Apache, és necessari que aquests fitxers acaben amb l'extensió '.conf' (cp default servidorsroig.sytes.net.conf, o bé editar l'arxiu /etc/apache2/apache2.conf i canviar:
# Include the virtual host configurations:
IncludeOptional sites-enabled/*.conf
per
# Include the virtual host configurations:
IncludeOptional sites-enabled/

 

Al meu cas:

A l'Apache 2.2    A l'Apache 2.4

~# cp default servidorsroig.sytes.net

 

~# cp default servidorsroig.sytes.net.conf

 

 A continuació editarem l'arxiu creat amb Vi, Vim, Nano, Gedit ..., o via FTTP.

 

 A l'Apache 2.2 - Original
    A l'Apache 2.4 - Original

~# nano servidorsroig.sytes.net

<VirtualHost *:80>
        ServerAdmin webmaster@localhost

        DocumentRoot /var/www
        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /var/www/>
                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
</VirtualHost>

 

~# nano servidorsroig.sytes.net.conf

<VirtualHost *:80>
        # The ServerName directive sets the request scheme, hostname and port that
        # the server uses to identify itself. This is used when creating
        # redirection URLs. In the context of virtual hosts, the ServerName
        # specifies what hostname must appear in the request's Host: header to
        # match this virtual host. For the default virtual host (this file) this
        # value is not decisive as it is used as a last resort host regardless.
        # However, you must set it for any further virtual host explicitly.
        #ServerName www.example.com

        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html

        # Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
        # error, crit, alert, emerg.
        # It is also possible to configure the loglevel for particular
        # modules, e.g.
        #LogLevel info ssl:warn

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

        # For most configuration files from conf-available/, which are
        # enabled or disabled at a global level, it is possible to
        # include a line for only one particular virtual host. For example the
        # following line enables the CGI configuration for this host only
        # after it has been globally disabled with "a2disconf".
        #Include conf-available/serve-cgi-bin.conf
</VirtualHost>

 

 

 Seguint l'anterior exemple i atenent a les meues necessitats deixaré així, poden informar-se de les directives modificades una mica més avall.

 

 A l'Apache 2.2 - Modificat
    A l'Apache 2.4 - Modificat

~# nano servidorsroig.sytes.net

<VirtualHost *:8080>
        ServerAdmin Aquesta adreça de correu-e està protegida dels robots de spam.Necessites Javascript habilitat per veure-la.
        ServerName servidorsroig.sytes.net
        ServerAlias servidorsroig.sytes.net

        DocumentRoot /var/www/servidorsroig.sytes.net
        <Directory />
                Options FollowSymLinks
                AllowOverride All
        </Directory>
        <Directory /var/www/servidorsroig.sytes.net/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                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
</VirtualHost>

 

 

~# nano servidorsroig.sytes.net.conf

<VirtualHost *:8080>
        ServerAdmin Aquesta adreça de correu-e està protegida dels robots de spam.Necessites Javascript habilitat per veure-la.
        ServerName servidorsroig.sytes.net
        ServerAlias servidorsroig.sytes.net       
        DocumentRoot /var/www/servidorsroig.sytes.net
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

        <Directory /var/www/servidorsroig/>
                Require all granted
                AllowOverride All
        </Directory>

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

El següent comandament, creara i activarà un enllaç en sites-enabled al lloc que li hem indicat, és a dir que activa el VirtualHost que acabem de crear, es tracta de l'ordre a2ensite (a2ensite el_virtualhost_creat):

A l'Apache 2.2    A l'Apache 2.4

~# a2ensite servidorsroig.sytes.net

 

~# a2ensite servidorsroig.sytes.net.conf

 

Reiniciem el servidor Apache, o el fem rellegir la nova configuració amb alguna de les ordres següents:

~# /etc/init.d/apache2 restart

o bé

~# /etc/init.d/apache2 reload

També podem utilitzar la següent seqüència, per si l'Apache es queda una mica sort:

~# /etc/init.d/apache2 reload

~# /etc/init.d/apache2 stop

~# /etc/init.d/apache2 start


Comprovació de les sintaxis, per comprovar els errors en la sintaxi dels fitxers de configuració podem executar:


# Fedora, RHEL, CentOS, OSX
httpd -S

# Debian, Ubuntu
apache2ctl -S

# MacOS
apachectl -S

 

Directives modificades als VirtualHosts

<VirtualHost *:80> per <VirtualHost *:8080>

Amb aquesta instrucció, li estem dient que aquest lloc web dirigit per aquest virtualhosts, només escoltarà les peticions que entren pel port 8080 del nostre router.

AllowOverride None per AllowOverride All

Per això s'usa el mod_rewrite que és un mòdul d'Apache que permet modificar el que apareix a la barra de direcció (es necessita tindre activat aquest mòdul per poder utilitzar diverses aplicacions com WordPress, Joomla, Drupal ...), si és que volem tindre aquestes boniques URL. Mòdul Rewrite (mod_rewrite) URL amigables.

ServerAdmin webmaster@localhost per ServerAdmin webmaster@servidorsroig.sytes.net

El ServerAdmin estableix la direcció de contacte que el servidor inclou en els missatges d'error que retorna al client.

Afegim ServerName servidorsroig.sytes.net

Nom d'amfitrió i número de port que el servidor utilitza per identificar-se. La directiva ServerName especifica el nom d'amfitrió i el port que utilitza el servidor per identificar-se.

Afegim ServerAlias servidorsroig.sytes.net

La directiva ServerAlias estableix els noms alternatius per a un host, per al seu ús amb els hosts virtuals basats en noms.

DocumentRoot /var/www per DocumentRoot /var/www/servidorsroig.sytes.net

Directori que forma l'arbre principal, document visible des de la web.

Directory /var/www/ per Directory /var/www/servidorsroig.sytes.net/

Per què les directives queden declarades al directori del nostre lloc.

Require all granted 

En Apache 2.2. el control d'accés es realitza mitjançant les directives Order, Allow, Deny, and Satisfy.
En Apache 2.4, el control d'accés es realitza mitjançant el mòdul mod_authz_host, que utilitza altres directives, tot i que el mòdul mod_access_compat permet utilitzar les directives antigues.

Per això en apache 2.2, per exemple quan l'usuari vol permetre l'accés a un directori s'han d'utilitzar les directives: Order allow, deny i Allow from all. El fitxer apache2.conf contindrà unes directives generals que restringia l'accés general als directoris utilitzant les directives Order i Deny.
No obstant això, la versió 2.4 d'Apache, utilitza la directiva 'Require'. El fitxer apache2.conf conté unes directives generals que restringeixen l'accés general als directoris utilitzant la directiva 'Require' (Require all denied). Per això, quan l'usuari vol permetre l'accés a un directori, s'ha d'utilitzar la directiva 'Require all granted'.

 

 

  Font: http://www.apache.org/
 

Salutacions

 

 

Apache Server

SALUT I LLIBERTAT