obtém a raiz do documento apache usando o shell script

4

Estou criando um RPM e, no estágio anterior, quero determinar o document root do apache para que eu possa copiar os arquivos do aplicativo da web lá.

Primeiro, eu verifico se o apache está instalado. Se o apache estiver instalado, o script procurará a localização do arquivo httpd.conf, pois contém o parâmetro raiz do documento. Mas eu não sei como lidar com o retorno do comando find / -name httpd.conf . Eu sou apenas novo em shell scripts e RPM. Gostaria também de saber se isso é possível. O objetivo é ter o RPM para que ele possa ser implantado em qualquer sistema, sem muita intervenção manual. Abaixo está o código que eu estava planejando. Ainda não está funcionando

if [ "$(expr substr $(httpd -v) 17 6)" == "Apache"]; then
    echo "Apache is installed";
    find / -name httpd.conf
    //need to handle the return of find and store to a location var to be used on the next line
    grep -i 'DocumentRoot' $location/httpd.conf
    //need to store the return document root to a var
el
    echo "Apache is not installed";
fi
    
por Pelang 20.03.2015 / 09:42

3 respostas

2

Sua tarefa é mais difícil do que você pensa, pois pode haver vários arquivos .conf que incluem outros.

Você pode obter algumas informações sobre a saída de

httpd -S ou apachectl -S ou apache2ctl -S (depende da distribuição)

Isso imprime os nomes dos vhosts atualmente definidos junto com as informações sobre onde eles são definidos, por exemplo,

VirtualHost configuration:
wildcard NameVirtualHosts and _default_ servers:
_default_:443          a.example.com (/etc/httpd/conf.d/ssl.conf:74)
*:80                   is a NameVirtualHost
         default server b.example.com (/etc/httpd/conf/httpd.conf:1010)
         port 80 namevhost b.example.com (/etc/httpd/conf/httpd.conf:1010)

Isso nos diz que os vhosts estão definidos em /etc/httpd/conf.d/ssl.conf e /etc/httpd/conf/httpd.conf

    
por 20.03.2015 / 09:57
2

Não existe o apache's document root , os arquivos de configuração podem conter várias raízes para vários sites.

Além disso, você pode interromper uma configuração existente apenas copiando seus dados, especialmente quando o padrão apache2 tiver sido modificado, portanto, você deve ter muito cuidado com o local e o que copiar.

Se você quiser continuar com esse esquema, use a2query -s para ver quais sites estão disponíveis e, com base nisso, localize alguns sites nos quais você colocará seus documentos. Se a2query não estiver disponível, você provavelmente não terá o apache2 instalado.

Se você copiar as coisas em uma das raízes do documento, coloque tudo sob um nome de diretório específico sob a raiz do documento e verifique se esse diretório não existe antes de escrever qualquer coisa lá.

Você pode querer investigar outros pacotes que fornecem documentação baseada em HTML inserida na configuração do apache existente. Eu não conheço nenhum que faça, mas você pode.

Se a configuração padrão do apache2 nos sistemas em que seu RPM será instalado suportar um mecanismo para acessar "páginas do usuário", você poderá criar um novo usuário para o pacote e colocar a documentação nele. É claro que o administrador pode ter desativado esse mecanismo, mas, se não, isso não interfere na configuração. Para isso, você também não precisa encontrar em qual raiz do documento gravar (e se o usuário tiver nginx ou qualquer outro servidor instalado, você pode ter a sorte de usar o mesmo mecanismo de páginas de usuário).

    
por 20.03.2015 / 10:23
0
  1. Principal DocumentRoot é apenas um local das páginas da Web, muitos (provavelmente a maioria) dos administradores do Apache usam VirtualHosts para hospedagem.

Veja, por exemplo: link

ou: link

  1. Procurando por um arquivo todo o sistema a partir da raiz ( / ) é uma má idéia, pois levaria muito tempo, especialmente se o servidor tiver outros recursos montados (o pior cenário é a montagem em rede, em conexão lenta, com muitos arquivos).

Provavelmente, você precisa segmentar distribuições específicas para os locais de httpd.conf (ou apache2.conf , mas mesmo assim não há garantia de que algum administrador não esteja usando algum local não padrão para configuração.

    
por 20.03.2015 / 09:54