Quais arquivos devo configurar para configuração limpa do Apache [duplicado]

1

Eu não sou novo no Apache, mas também não sou especialista (por qualquer meio). Eu executei versões sveral de configurações do servidor WAMP e XAMP. A maioria das minhas configurações do Apache é simples. Eu normalmente executo um arquivo de configuração principal padrão ( httpd.conf ou apache.conf ) e um ou dois incluem (com uma porta diferente, por exemplo) e alguns arquivos host virtuais específicos do site.

Recentemente, configurei um servidor para usar HTTPS. Eu comprei certificado e o configurei. Não foi tão ruim, mas me fez pensar. Cada configuração do Apache que eu configuro parece ser um pouco diferente. Não aplico melhores práticas; apenas bits e partes construídos a partir de uma instalação padrão usando apenas essas alterações para fazer meu aplicativo ser executado.

Isso agora está me incomodando. Eu executo o Apache 2.2 atualmente e gostaria de adotar uma convenção para mim com a qual eu possa manter a consistência, uma que eu poderia implantar mais facilmente em mais servidores de uma forma mais rápida.

Então, minha pergunta é: quais arquivos devo usar e como eles devem interagir? Por exemplo, acho que a maioria das pessoas concorda que carregar sua configuração principal do Apache com ajustes é uma má ideia. Então você deve despir para o mínimo e implementar múltiplos includes? Como você configura corretamente o diretório sites-available ( sites-enabled preenchido com links simbólicos)? Como há muitas maneiras de fazer as coisas e como o Apache permite que as diretivas sejam usadas em vários lugares com o mesmo efeito, descubro que bits e partes se espalham por todos esses arquivos, incluindo o uso de algo como mod_rewrite em .htaccess file (que estou começando a acreditar que é uma má ideia, a menos que você esteja em hospedagem compartilhada, onde é a única maneira).

Para SSL, você configura um arquivo default-ssl ou project-ssl . Quantos hosts virtuais executo em um servidor?

Eu entendo que minha pergunta é um tanto subjetiva. Provavelmente não há uma resposta objetiva. Mas meu objetivo é chegar o mais perto possível de uma resposta objetiva.

Depois, há WSGI. Se você implantar sites do Django, isso complica ainda mais as coisas. Devo usar /home/user/project/project/wsgi.py ou /var/www/project/index.wsgi ? Como esses arquivos interagem com a configuração do Apache?

Aqui está uma lista de arquivos com os quais me preocupo:

/etc/apache2/apache.conf
/etc/apache2/httpd.conf
/etc/apache2/ports.conf
/etc/apache2/envvars (mostly self explanatory)
/etc/apache2/conf.d/project.conf
/etc/apache2/conf.d/security
/etc/apache2/sites-available/default
/etc/apache2/sites-available/default-ssl
/etc/apache2/sites-available/project
/etc/apache2/sites-available/project-ssl

Por que algumas instalações do Apache têm uma configuração principal do Apache com módulos incluídos e outros têm mods-available e mods-enabled ?

Como eu disse acima, parece haver muita sobreposição, então não estou surpreso que este seja um assunto difícil de dominar.

Alternativamente, se alguém souber uma boa referência que passe por isso, eu estaria interessado em vê-lo. Eu tenho um par de livros Apache mais velhos e eles simplesmente não dividem. Eles assumem que você é iniciante completo e que você deixa o padrão sozinho. Os documentos do Apache são muito bons e eu vou a eles com frequência, mas uma fonte abrangente para o que estou procurando parece não existir (ou, eu não encontrei os melhores termos de pesquisa para encontrá-lo).

    
por nicorellius 05.02.2014 / 20:35

2 respostas

1

Eu gosto da configuração a seguir. Funciona bem para mim e para a minha situação e para a maior parte do trabalho que fiz. Atualmente, não uso site / ativado por site. Eu também não gosto de usar arquivos .htaccess se possível .. Meu principal objetivo é manter toda a configuração de um site o mais próximo possível do resto da configuração dos sites. Dessa forma, se eu configurar outro servidor da mesma maneira, posso simplesmente inserir o arquivo vhost e terminar.

link

link

AddType application/x-x509-ca-cert .crt 
AddType application/x-pkcs7-crl    .crl
SSLPassPhraseDialog  builtin
SSLSessionCache        "shmcb:/var/run/ssl_scache(512000)"
SSLSessionCacheTimeout  300
SSLMutex  "file:/var/run/ssl_mutex"

link

Listen 443
NameVirtualHost *:443
<VirtualHost *:443>
ServerAdmin [email protected]
ServerName test.org
SSLEngine on
SSLCertificateFile /etc/ssh/test.org.crt
SSLCertificateKeyFile /etc/ssh/test.key
SSLCertificateChainFile /etc/ssh/test.crt
ErrorLog "/var/log/test.org-error_log
ProxyPreserveHost on
ProxyPass / http://127.0.0.1:2368/ retry=0
</VirtualHost>          

<VirtualHost *:443>
ServerAdmin [email protected]
DocumentRoot /usr/local/www/tinyrss/data             
ServerName test2.domaintest.org
SSLEngine on
SSLCertificateFile /etc/ssh/test2.crt
SSLCertificateKeyFile /etc/ssh/test2.key
ErrorLog "/var/log/test2.domaintest.org-error_log"
</VirtualHost>
    
por 05.02.2014 / 21:12
1

A referência óbvia seria, obviamente, o manual .

  • Simplificando: o nome / localização do arquivo de configuração principal do apache é um tempo de compilação opção, normalmente um arquivo chamado httpd.conf .
  • O nome / local desse local padrão para o arquivo de configuração pode ser anulada pela opção de linha de comando -f se você assim desejar.
  • O arquivo de configuração contém 1 diretiva por linha.
  • O arquivo de configuração do apache é analisado de cima para baixo

  • Você pode colocar todas as diretivas usadas para configurar o apache naquele único arquivo.

  • Você pode usar as diretivas Include ou IncludeOptional no principal httpd.conf para incluir diretivas de outros arquivos.

    O arquivo incluído é analisado no local da diretiva Include e é analisado em ordem de cima para baixo. No final do include, o apache retornará a configuração principal do httpd.conf e a próxima diretiva serão analisadas.

    Caso a diretiva Include contenha um curinga, o campo Incluído os arquivos serão analisados em ordem lexicográfica.

O único arquivo de configuração ou aninhamento usando includes permite que você atinja o mesmo estado final. O que quer que funcione melhor para você.

Compare o arquivo de configuração único:

#httpd.conf
Directive 1
Directive 2
Directive 3 
Directive 4

para um http.conf principal

#httpd.conf
Directive 1
Include other.conf 
Directive 4

e o arquivo incluído:

#other.conf
Directive 2
Directive 3 

Ambos resultam exatamente na mesma configuração, não há "melhor" a esse respeito.

Se você mantiver uma única configuração manualmente, um único arquivo poderá funcionar melhor. Você pode facilmente lê-lo de cima para baixo e isso torna improvável que você se surpreenda com a ordenação de diretivas tornando sua vida difícil.

Se você tiver um sistema de gerenciamento de configuração que facilita a remoção de arquivos inteiros de implantação, mas tem dificuldades com a alteração de partes de um arquivo de configuração, usar um Include dir/*.conf pode fazer muito mais sentido.

Um único arquivo, Inclusão explícita ou curinga Inclui, principalmente, uma questão de preferência pessoal e / ou de fazer o melhor uso de suas ferramentas.

O site-enabled disponível para sites parece uma convenção Debian / Ubuntu.

A última seção é a diretiva AllowOverride que permite anular localmente as configurações feita no (s) arquivo (s) de configuração do Apache acima, usando o arquivo .htaccess . Isso proporciona flexibilidade, pois você não precisa reiniciar o Apache para que as alterações na configuração entrem em vigor, mas gerará uma sobrecarga extra. Para cada solicitação da Web, todos os diretórios entre o DocumentRoot e o arquivo solicitado precisarão ser verificados quanto à presença de um potencial. arquivo .htaccess.

    
por 05.02.2014 / 21:53