Como configurar o Apache (sites disponíveis vs httpd.conf)

27

Eu tenho tentado seguir alguns tutoriais básicos explicando como colocar o Apache em funcionamento (no ubuntu, executando na Amazon). Quase sempre fiquei em branco, porque todos os tutoriais me disseram para configurar o httpd.conf (para adicionar o DocumentRoot, etc.).

Eu já deparei com um tutorial que me dizia para adicionar configurações de site ao diretório de sites disponíveis (em / etc / apache) e depois vincular a ele a partir de sites habilitados. Configurar desta maneira parece funcionar.

Mas agora estou confuso - como devo configurar o Apache? A maioria dos tutoriais ainda parece dizer que eu deveria estar usando o httpd.conf. Qual devo usar? Qual é a diferença? Por que todos os tutoriais estão "errados" (se estiverem)?

Edan Maor
fonte

Respostas:

35

O sites-availablemétodo é geralmente considerado o "Modo Debian":

  • configuração "principal" em /etc/apache2/apache2.conf
  • configuração de "usuário" em /etc/apache2/httpd.conf
  • fantasmas em /etc/apache2/sites-availablearquivos (um por arquivo, normalmente)
    • convém numerá-los, por exemplo, 00-domain.com, 01-otherdomain.com
  • portas ( Listendiretivas) em/etc/apache2/ports.conf
  • mods em /etc/apache2/mods-available

Você pode manipulá-los com links simbólicos ou com a a2série de comandos:

a2ensite/a2dissite <site_config_filename>
a2enmod/a2dismod <module_name>

Dependendo da preferência pessoal, você pode reiniciar o Apache usando apachectl, /etc/init.d/apache2 (start|stop|reload|restart)ouservice apache2 (start|stop|reload|restart)

Um exemplo em que você usaria em httpd.confvez de uma entrada vhost seria uma regra de redirecionamento ou reescrita global, por exemplo. Outros petiscos - geralmente, você deve deixar em apache2.confpaz e certifique-se de configurar um esquema de nomenclatura consistente para vhosts no sites-availablediretório.

Sam Halicke
fonte
Ótimo resumo! Muito mais claro e conciso do que o que eu estava trabalhando. +1.
Steven segunda-feira
2
Os sites disponíveis fornecem boa modularização da configuração. Ele permite que você se concentre na configuração de um único site facilmente. Também facilita a comparação de sites em um servidor ou a movimentação ou replicação de sites entre servidores.
BillThor
+1. Quando você precisar manter essas configurações, vá para 'sites ativados' em vez de 'sites disponíveis' e acesse-os diretamente a partir daí. Dessa forma, você sempre poderá determinar e acessar as configurações de site usadas atualmente.
Ross
9

O local e a organização dos arquivos de configuração são configuráveis ​​e podem ser alterados entre os principais releases ou entre distribuições.

O Apache Wiki possui um guia prático para os nomes e locais dos arquivos de configuração.

Como os arquivos de configuração podem conter includediretivas, partes da configuração podem ser separadas em arquivos menores. Como um arquivo de configuração padrão do Apache contém muitos comentários e muitos itens padrão, faz algum sentido separar as partes com maior probabilidade de alteração.

O nome do arquivo de configuração principal pode ser alterado no momento da compilação e, nas versões recentes, foi alterado de httpd.confparaapache2.conf

Ao longo dos anos, também houve alguma evolução na organização dos arquivos de configuração incluídos.

Por exemplo, eu instalei o Apache2 em um sistema baseado no Ubuntu usando apt-get install apache2- aqui estão os arquivos incluídos

/etc/apache2$ ls
apache2.conf  envvars     mods-available  ports.conf       sites-enabled
conf.d        httpd.conf  mods-enabled    sites-available

/etc/apache2$ grep ^Include apache2.conf
Include /etc/apache2/mods-enabled/*.load
Include /etc/apache2/mods-enabled/*.conf
Include /etc/apache2/httpd.conf
Include /etc/apache2/ports.conf
Include /etc/apache2/conf.d/
Include /etc/apache2/sites-enabled/ 

/etc/apache2$ ls -l sites-enabled
total 0
lrwxrwxrwx 1 root root 26 Dec 26 12:30 000-default -> ../sites-available/default

Portanto, as poucas definições de configuração nas quais você provavelmente está mais interessado estão agora /etc/apache2/sites-available/default.

Eu posso ver que isso é consistente com a documentação do Ubuntu para Apache, que eu recomendo que você leia primeiro. Se você tiver outra documentação para versões mais antigas do Apache (ou outras distribuições), poderá adaptar essas informações para se ajustarem à organização das coisas no Ubuntu.

RedGrittyBrick
fonte
-2

O Apache no linux pode ser instalado por dois tipos. um é pelo apt-get e outro arquivo tar e extrato para download ... Assim, no processo do apt-get, os sites são servidos na pasta / etc / apache2 / sites-enabled, pois cada site que serve ao mundo externo é configurado nessa pasta por Exemplo de arquivo .conf 000-default.conf é um site padrão ativado para mostrar os trabalhos do apache.

portanto, criando qualquer arquivo .conf em sites habilitados e direcionando-o para o local do conteúdo. assim, o site é veiculado.

Portanto, para adicionar um novo site estático, um novo arquivo .conf deve ser criado na pasta habilitada para sites com o nome de exemplo example.conf. e tem que adicionar as linhas abaixo

Webmaster ServerAdmin @ localhost DocumentRoot / var / www / html ErrorLog $ {APACHE_LOG_DIR} /error.log CustomLog $ {APACHE_LOG_DIR} /access.log combinado

Onde, *: 80 indica "aberto ao mundo pela porta 80" DocumentRoot / var / www / html indica "caminho do conteúdo do site"

Basutkar. Karthik
fonte
Isso errado e enganoso. Você cria seus arquivos em sites disponíveis para que ferramentas (recomendadas) como o a2ensite possam funcionar. Normalmente, você vincula esses arquivos conf usando o a2ensite em sites habilitados. O apt-get não tem nada a ver com a configuração de seus sites.
HörmannHH 02/09