+ Responder ao Tópico



  1. #1
    esales
    Visitante

    Padrão Inicialização do Apache no boot do servidor.

    Pessoal, não consigo colocar o apache de forma automática no boot da minha máquina de desenvolvimento.

    O apache esta instalado e funcionando. Se eu executar /usr/local/apache2/bin/apachectl start (Blz) e /usr/local/apache2/bin/apachectl stop (Blz também).
    Então, criei o seguinte script no diretório /etc/rc.d/init.d/, com o nome httpd,
    #==============================================
    #!/bin/sh
    #
    # httpd este script inicia e finaliza o o servidor apache. O argumento 'start' ou 'stop'
    # para iniciar e finalizar o processo do servidor de forma receptiva.
    #
    # Localizado em /etc/rc.d/init.d/
    #

    APACHECTL=/usr/local/apache2/bin/apachectl

    [ -f $APACHECTL ] || exit 0

    case "$1" in
    start)
    #======================================
    #Iniciar o apache
    #======================================
    echo -n "Iniciando o Apache Httpd: "
    $APACHECTL start
    touch /var/lock/subsys/httpd
    echo
    ;;
    stop)
    #======================================
    #Parar o apache
    #======================================
    echo -n "Parando o Apache Httpd"
    $APACHECTL stop
    echo "Concluido! Servidor parado."
    rm -f /var/lock/subsys/httpd
    echo
    ;;
    *)
    echo "O uso deste script é: httpd { start | stop }"
    esac
    exit
    #=====================================================================================

    Então crie um link simbólico ln -s /etc/rc.d/init.d/httpd /etc/rc.d/rc3.d/S99httpd e outro ln -s /etc/rc.d/init.d/httpd /etc/rc.d/rc3.d/K99httpd.
    Isso vai criar lá em rc3.d dois links simbólicos, um para quando o sitema iniciar S99httpd (Start) e outro para quando o sistema terminar K99httpd (Kill).

    Blz, não é, inclusive testei os links e ambos funcionam na mão, então qual o problema???

    Não funciona quando reinicio o computer. Sei que existe aquele administrador de serviços do Fedora, mas eu não queria usá-lo, pois vou instalar o Slackware e gostaria de saber uma forma geral, como está.


    Alguém tem o toque final para me dar????

    []'s

  2. #2
    gmlinux
    Visitante

    Padrão Inicialização do Apache no boot do servidor.

    Se você tem intenção de usar o comando ntsysv ou chkconfig (em sistemas sysv) precisa de algumas informações extras no cabeçalho do script (pega algum outro do init.d como exemplo).
    Se não, pode criar um link manualmente, de um dos diretórios rc$runlevel.d para seu script, onde $runlevel é o número do runlevel em execução.

  3. #3
    esales
    Visitante

    Padrão Inicialização do Apache no boot do servidor.

    gmlinux, Bom dia !!! E obrigado por responder.


    [quote]
    Citação Postado originalmente por gmlinux
    Se você tem intenção de usar o comando ntsysv ou chkconfig (em sistemas sysv) precisa de algumas informações extras no cabeçalho do script (pega algum outro do init.d como exemplo).
    Olha, aqui eu não soube traduzir "sistemas sysv". Mas posso copiar de outro script, gostaria de saber antes de copiar o que é e para quê serve... ops:

    Se não, pode criar um link manualmente, de um dos diretórios rc$runlevel.d para seu script, onde $runlevel é o número do runlevel em execução.
    Mas eu achei que foi isto que fiz quando disse:
    Código :
    Então, criei o seguinte script no diretório /etc/rc.d/init.d/, com o nome httpd...

    E...

    Então crie um link simbólico
    Código :
    ln -s /etc/rc.d/init.d/httpd /etc/rc.d/rc3.d/S99httpd
    e outro
    Código :
    ln -s /etc/rc.d/init.d/httpd /etc/rc.d/rc3.d/K99httpd
    .

    Parece-me que criei o link em lugar errado é isso???

    Brigado pela paciência com o novato!!!! :good:

  4. #4
    vinimaciel
    Visitante

    Padrão Re: Inicialização do Apache no boot do servidor.

    Duas dicas:

    1ª - Coloca no rc.local o comando "/usr/local/apache2/bin/apachectl start" que assim que a maquina terminar as inicializacoes do ntsysv vai executar os comandos desse arquivo.


    2ª - coloca no ntsysv com os comandos:

    cd /etc/rc.d/init.d/
    chmod 755 /etc/rc.d/init.d/httpd
    chkconfig --add httpd





    Vinicius Maciel Simchak
    [email protected]

  5. #5
    esales
    Visitante

    Padrão Inicialização do Apache no boot do servidor.

    Vinicius, obrigado..

    Mas o que é e como funciona este ntsysv??? Eu não sei. :toim:

    Abração :good:

  6. #6
    vinimaciel
    Visitante

    Padrão Inicialização do Apache no boot do servidor.

    A melhor explicacao esta em:

    man ntsysv




    Abracao,

    Vinicius Maciel Simchak
    [email protected]
    MSN: [email protected]

  7. #7
    esales
    Visitante

    Padrão Inicialização do Apache no boot do servidor.

    BLZ!!! :roll:

    Vou ver, com certeza!!! :good:
    []'s

  8. #8
    vinimaciel
    Visitante

    Padrão Inicialização do Apache no boot do servidor.

    Ahhh...

    Vi que esta faltando as librarys do init.d no teu script de inicializacao....
    Eu utilizo esse:


    #!/bin/bash
    #
    # Startup script for the Apache Web Server
    #
    # chkconfig: - 85 15
    # description: Apache is a World Wide Web server. It is used to serve \
    # HTML files and CGI.
    # processname: httpd
    # pidfile: /var/run/httpd.pid
    # config: /etc/httpd/conf/access.conf
    # config: /etc/httpd/conf/httpd.conf
    # config: /etc/httpd/conf/srm.conf

    # Source function library.
    . /etc/rc.d/init.d/functions

    # This will prevent initlog from swallowing up a pass-phrase prompt if
    # mod_ssl needs a pass-phrase from the user.
    INITLOG_ARGS=""

    # Path to the apachectl script, server binary, and short-form for messages.
    apachectl=/usr/local/sbin/apachectl
    httpd=/usr/local/sbin/httpd
    ulimit -n 2048
    prog=httpd
    RETVAL=0

    # Find the installed modules and convert their names into arguments httpd
    # can use.
    moduleargs() {
    moduledir=/usr/local/libexec/apache
    moduleargs=`
    /usr/bin/find ${moduledir} -type f -perm -0100 -name "*.so" | env -i tr '[:lower:]' '[:upper:]'| awk '{\
    gsub(/.*\//,"");\
    gsub(/^MOD_/,"");\
    gsub(/^LIB/,"");\
    gsub(/\.SO$/,"");\
    print "-DHAVE_" $0}'`
    echo ${moduleargs}
    }

    # The semantics of these two functions differ from the way apachectl does
    # things -- attempting to start while running is a failure, and shutdown
    # when not running is also a failure. So we just do it the way init scripts
    # are expected to behave here.
    start() {
    echo -n $"Starting $prog: "
    daemon $httpd -DSSL `moduleargs` $OPTIONS
    RETVAL=$?
    echo
    [ $RETVAL = 0 ] && touch /var/lock/subsys/httpd
    return $RETVAL
    }
    stop() {
    echo -n $"Stopping $prog: "
    killproc $httpd
    RETVAL=$?
    echo
    [ $RETVAL = 0 ] && rm -f /var/lock/subsys/httpd /var/run/httpd.pid
    }
    reload() {
    echo -n $"Reloading $prog: "
    killproc $httpd -HUP
    RETVAL=$?
    echo
    }

    # See how we were called.
    case "$1" in
    start)
    start
    ;;
    stop)
    stop
    ;;
    status)
    status $httpd
    RETVAL=$?
    ;;
    restart)
    stop
    start
    ;;
    condrestart)
    if [ -f /var/run/httpd.pid ] ; then
    stop
    start
    fi
    ;;
    reload)
    reload
    ;;
    graceful|help|configtest)
    $apachectl $@
    RETVAL=$?
    ;;
    *)
    echo $"Usage: $prog {start|stop|restart|condrestart|reload|status|fullstatus|graceful|help|configtest}"
    exit 1
    esac

    exit $RETVAL




    Abracao,

  9. #9
    gmlinux
    Visitante

    Padrão Inicialização do Apache no boot do servidor.

    SYSV e BSD são os principais padrões de unix do mercado.
    Os scripts de inicialização do redhat, por exemplo, são padrão sysv, do debian, bsd.
    Quando um link possui o nome iniciando por S, ele é executado com argumento start, se o nome começa com K, ele é executado com argumento stop.
    Seu script precisa reconhecer estes argumentos ($1).
    O programa ntsysv e o chkconfig gerenciam estes links simbólicos, mais os scripts precisam possuir informações especiais no cabeçalho.

  10. #10
    esales
    Visitante

    Padrão Até que enfim, Obrigado está funcionando !!!!!

    Pessoal, preciso agradecer a todos. Já está funcionando direitinho.

    O script do vinimaciel, próprio para funcionar em inicializações e finalizações foi usado. A dica do gmlinux sobre os padrões Unix (BSD e Sysv) abriram a cabeça.

    Juntei tudo e está funcionando. Seria algo assim:

    1 - Criamos o script em /etc/rc.d/init.d/;
    2 - Criamos os links nível 3,5,6 para este arquivo. Três e Cinco para ambiente corporativo e seis para shutdown;
    3 - Executamos o ntsysv e escolhemos o nome que demos ao script, habilitando-o, basta clicar em OK e pronto;

    OBS: no caso do Fedora é o ntsysv que faz o script funcionar, me parece que em sistemas BSD o que vai funcionar é o chkconfig, assim:

    Código :
    cd /etc/rc.d/init.d/ 
    chmod 755 /etc/rc.d/init.d/httpd 
    chkconfig --add httpd

    Conforme o Vinimaciel indicou. O grande lance foi eu entender os runlevels e pronto a ficha caiu. Já coloquei, inclusive, o PostgreSQL no mesmo esquema, claro que com script diferente, ou seja, o que muda é o script.

    Colegas, estou em dívida... Fica um abraço....

    Abraços