Execute o shell script do Apache conf ou no (re) start do Apache

1

Eu tenho um aplicativo da web complexo que contém muitos aliases dinâmicos. Eu criei um shellscript que atualiza o (s) arquivo (s) .conf com esses aliases. É possível chamar este shellscript dentro do conf Apache? Então, algo como:

RunScript /etc/myapp/updateconf.sh
Include /etc/myapp/*.conf

Ou, como alternativa, há uma boa maneira de adicionar esse script como um gancho ao script /etc/init.d/apache2 ou /etc/init.d/httpd? Eu estou procurando uma solução que funcione tanto no CentOS quanto no Ubuntu. Se eu estiver me aproximando totalmente do caminho errado, qualquer outra sugestão será bem-vinda.

    
por Jeroen 20.08.2011 / 15:27

2 respostas

1

Claro, você pode chamá-lo antes de iniciar o Apache no script de inicialização, algo assim:

start() {
        echo -n $"Starting $prog: "
        check13 || exit 1
        . /etc/myapp/updateconf.sh
        LANG=$HTTPD_LANG daemon --pidfile=${pidfile} $httpd $OPTIONS
        RETVAL=$?
        echo
        [ $RETVAL = 0 ] && touch ${lockfile}
        return $RETVAL
}
    
por 20.08.2011 / 15:53
1

Se a configuração precisar ser atualizada regularmente, eu ficaria tentado a fazer isso por meio de um cron job e usar a opção graceful para reiniciar o apache. Se você quiser fazer isso de hora em hora / dia / semana / mês, então você pode colocar um script no diretório /etc/cron.* relevante e ele será executado para você.

#!/bin/bash

/etc/myapp/updateconf.sh && /sbin/service httpd graceful 
                            # change to /usr/sbin/service apache2 graceful 
                            # for ubuntu

funcionaria.

Se você precisar fazer isso quando o sistema for iniciado, edite /etc/crontab e adicione uma @reboot entry

@reboot   root    /etc/myapp/updateconf.sh && /sbin/service httpd graceful

Se o apache ainda não tiver iniciado, ele não será iniciado pela opção "graciosa", mas seus arquivos de configuração serão atualizados para que o apache seja iniciado. Se o apache estiver em execução, ele será reiniciado.

    
por 20.08.2011 / 18:19