Como hacer funcionar Apache cuando tienes una dirección IP dinámica, por ejemplo, una conexión PPP.
He investigado como utilizar dominios virtuales en Apache con una
dirección IP dinámica, y estoy tan orgulloso de la solución que he
encontrado, que voy a compartirla contigo :)
(Nota, esto necesita la última versión de Apache (1.3.12) para
funcionar
Copia el fichero /usr/local/apache/conf/httpd.conf en
/usr/local/apache/conf/httpd.conf.template y añade esto al final:
(NO cambies "
REPLACE_THIS_WITH_DYNIP
", ya que debe aparecer tal
y como está :)
[PARTE DE httpd.conf.template ]
NameVirtualHost
REPLACE_THIS_WITH_DYNIP
<VirtualHost
REPLACE_THIS_WITH_DYNIP
>
ServerName
www.domain1.com∞ DocumentRoot "/wwwroot/domain1"
ErrorLog /var/log/http-domain1-error_log
CustomLog /var/log/http-domain1-access_log common
</VirtualHost>
<VirtualHost
REPLACE_THIS_WITH_DYNIP
>
ServerName
www.domain2.com∞ DocumentRoot "/wwwroot/domain2"
ErrorLog /var/log/http-domain2-error_log
CustomLog /var/log/http-domain2-access_log common
</VirtualHost>
[PARTE DE httpd.conf.template ]
Ahora, la parte ingeniosa..
Si lo ejecutas desde /etc/ppp/ip-up, usa:
cat /usr/apache/conf/httpd.conf.template | sed -e "s/
REPLACE_THIS_WITH_D
YNIP
/$4/g" > /usr/apache/conf/httpd.conf
/usr/local/apache/bin/apachectl restart
Si no, usa:
MYIP=$(/sbin/ifconfig|grep -1 ppp0|cut -s -d ' ' -f12|grep addr|cut -d ':'
f2)
cat /usr/apache/conf/httpd.conf.template | sed -e "s/
REPLACE_THIS_WITH_D
YNIP
/$MYIP/g" > /usr/apache/conf/httpd.conf
/usr/local/apache/bin/apachectl restart