Crear Host virtual con php en Apache httpd nun Archlinux
Neste post farei funcionar un Host virtual apache en Archlinux, o cal será para uso local e estará alonxado nun directorio local para realizalas nosas probas con él.
Instalación
Hai que instalalo apache:
# pacman -S apache
Configuración
Por defecto o demo httpd non se habilitará en arch, esto se pode facer con:
# systemctl enable httpd && systemctl start httpd
Cómo queremos un servidor para probas evitaremonos perder recursos e tempo habilitándolo.
Para o seu uso mellor usaremos “start” en lugar de habilitalo para sempre:
# systemctl start httpd
Con isto xa teriamos o demo httpd executándose e servindo os arquivos aloxados en “/srv/http/” que sería o directorio por defecto do apache en Archlinux.
Os arquivos de configuración pódense atopar en:
/etc/httpd/conf/
O arquivo de configuración base é:
/etc/httpd/conf/httpd.conf
Se queremos que só sirva peticións ao noso equipo modificamos o parámetro “Listen 80” e lle poñemos:
# ...
Listen 127.0.0.1:80
# ...
Creando un host virtual
Para comezar hai que crealo directorio que conterá os arquivos de configuración dos vhost, que será “disabled” e outro que conterá os enlaces simbólicos a estos arquivos que será “enabled”.
Os dóus directorios irán en:
/etc/httpd/conf/vhosts/
O bó de facelo cun directorio enabled e outro disabled, é que non se perderán as configuracións cada vez que queiramos deshabilitar un host, posto que só teriamos que eliminar o enlace simbólico, conservando o arquivo de configuración por se o precisamos nun futuro.
Así é cómo se crean os directorios necesarios:
# mkdir -pv /etc/httpd/conf/vhosts/enabled/ /etc/httpd/conf/vhosts/disabled/
mkdir: created directory "/etc/httpd/conf/vhosts"
mkdir: created directory "/etc/httpd/conf/vhosts/enabled/"
mkdir: created directory "/etc/httpd/conf/vhosts/disabled/"
Agora hai que incluila directiva “Include” a /etc/httpd/conf/httpd.conf:
# ...
###### Incluindo arquivos de configuración de hosts virtuais #####
Include conf/vhosts/enabled/*.conf
##################################################################
# ...
Con este asterisco indícolle que inclua tódolos arquivos nese directorio, se vos fixades as rutas son relativas a raíz do servidor definida na directiva “ServerRoot”.
Creando o arquivo da configuración do vhost
Agora temos que facer un arquivo de configuración exclusivo do novo vhost.
Para elo o creamos en /etc/httpd/conf/vhosts/disabled/:
# vi /etc/httpd/conf/vhosts/disabled/host_probas1.conf
E darlle o seguinte contido:
<VirtualHost 127.0.0.1:80>
ServerAdmin probas
DocumentRoot <directorio_raiz_do_vhost> #(podemos poñer /srv/http/<NOME_DOMINIO> )
ServerName <nome_dominio>
ServerAlias *.<nome_dominio>
<Directory "<directorio_raiz_do_vhost>">
AllowOverride All # Con "All" permite que apache cargue configuracións dos .htaccess, con "none" o impide.
Require all granted
</Directory>
</VirtualHost>
Deberemos asignalos permisos de lectura e execución ao directorio raíd do vhost ao usuario ou grupo “http”, ten que ter acceso de lectura e execución en tódolos directorios que compoñen a ruta a raíz do vhost, ou non podrá acceder a él e nos devolverá o erro 403.
O máis “recomendable” sería crear un enlace simbólico en /srv/http/ ao directorio onde teñámola raíz da nosa web, a ruta ao directorio /srv/http xa ven con permisos “rx” para outros, por iso “deixa pasar” a apache httpd ata o enlace.
Creámolo directorio onde queiramos:
# mkdir -vp /<RUTA>/<A>/<RAIZ>/<VHOST>/<RAIZ_VHOST>/
Enlazamos este directorio no directorio /srv/http:
# ln -sv /<RUTA>/<A>/<RAIZ>/<VHOST>/<RAIZ_VHOST>/ /srv/http/<NOME_DOMINIO>
Ollo, lembrate de que o enlace sexa un arquivo non un directorio ( vamos que ao final de “
<NOME_DOMINIO>” non poñamos “/” ).
# setfacl --test -Rm u:http:rx /srv/http/<NOME_DOMINIO>
Hai que poñela R antes da m, se pon para aplicar os permisos recursivamente polo cal é algo opcional e redundante se o directorio está valeiro.
O “-test” serve para ver que permisos quedarían, se estamos conformes coa saida que amosa, volvémolo a executar sen o “-test”.
Hai que ter en conta, que se non damos permisos de acceso ao directorio orixinal, Apache devolverá o erro 403 por que non podrá acceder ao directorio orixinal ao que apunta o enlace.
Entón o que podemos facer é asignarlle os permisos rx a tódolos directorios anteriores ao directorio raíz da web:
# setfacl -m u:http:rx /<ruta>/<ao>/<directorio>/<raiz>/<da>/<web>
Ir eliminando da ruta os subdirectorios para aplicarlle os permisos aos directorios superiores.
Redirixindo as consultas ao servidor local
Cómo é un servidor de probas para uso local, en lugar depoñernos a configurar DNS, etc…
Editamos /etc/hosts e engadimolas seguintes liñas:
# ...
### LOCAIS
127.0.0.1 <nome>.<dominio> <nome_host>
127.0.0.1 www.<nome>.<dominio> <nome_host>
# ...
O de poñelo nome de host é opcional, máis sirve como medida de seguridade para saber de que equipo se espera a información.
Instalando PHP
Cómo xa temos montado o noso servidor, seguramente nos interese utilizar php.
Para instalar php en Archlinux:
# pacman -S php
Engadir a /etc/http/conf/httpd.conf a siguiente liña:
Include conf/extra/php5_module.conf
Logo configuralo editando o php.ini:
# vi /etc/php/php.ini
Para axustala zona horaria que reflexará o servidor, mudamos o seguinte parámetro:
date.timezone = Europe/Madrid
Para poder usar php nas nosas webs, se pode seguir as instruccións da Archwiki Apache_HTTP_Server#Extensions”, onde nos recomendan usar o módulo mod_mpm_prefork.
Tamén hai que engadir na definición dos hosts virtuáis a seguinte directiva para poder executalos php incrustados nos arquivos .html ou .htmd:
# ...
<Directory "/srv/http/<nome_vhost>/">
#...
AddType application/x-httpd-php .html .htm
#...
</Directory>
# ...
Con isto xa teríamos o noso Apache funcionando con un vhost configurado capaz de executar scripts php, tanto dende arquivos .php como incrustado en arquivos .html e .htm.
Info de interés
Para consultalos logs de apache baixo systemd, podemos usar:
# journalctl -u httpd.service