Como configurar a raiz do documento do Apache?

3

Estou no processo para migrar para um novo servidor da web e gostaria de ter uma arquitetura de arquivos limpa e segura para o apache e meu aplicativo da web.

O servidor irá servir um único aplicativo php / mysql. Este aplicativo recebe arquivos de FTP e webservices e gera arquivos de registros.

O sistema operacional do servidor é o CentOS 5.4.

A raiz do documento padrão do Apache é /var/www/html .

Devo colocar meu diretório de aplicativos da web em:

  • /var/www/html/myWebApp ?
  • /www/myWebApp ?
  • /home/www/myWebApp ?
  • Algum outro lugar?

O diretório do aplicativo deve pertencer ao usuário root ou apache ou a outro usuário?

Obrigado pela sua ajuda.

    
por benjisail 17.02.2010 / 13:43

3 respostas

4

Supondo que você tenha o SELinux habilitado, nem todas as opções funcionarão devido ao SELinux negar o acesso a pastas não padronizadas pelo processo httpd.

O IIRC, o método preferido para adicionar manualmente aplicativos da Web no CentOS (por exemplo, uma instalação do mediawiki) é instalá-los em /var/www/<myappname> e criar um Alias no arquivo /etc/httpd/conf/httpd.conf que aponte para o seu app (normalmente, meu padrão é semelhante ao alias existente para a pasta /var/www/icons ).

A propriedade típica de arquivo para qualquer coisa abaixo de /var/www no CentOS é root .

    
por 17.02.2010 / 15:37
3

Cabe a você, pessoalmente, optar pelo DocumentRoot do CentOS em /var/www/html/myWebApp , pois mantém uma estrutura limpa, extensível e óbvia para futuros mantenedores, etc.

Você mesmo pode possuir os arquivos do aplicativo, mas eles devem ser legíveis (mas não possuídos - a menos que o aplicativo precise sobrescrevê-los / editá-los) pelo usuário e pelo grupo em que o apache está configurado para execução. Isso geralmente é nobody:nobody - e esse usuário deve ser desprivilegiado (ou seja, só consegue ler os arquivos na raiz do documento, nada mais).

Mais informações aqui .

edit: Para check-out do SVN, você pode deixar os arquivos de propriedade do usuário do SVN ( SVN ou root suponho - desde que seja diferente do usuário que o apache está executando) e as permissões devem ser 644 (-rw-r--r--) - acredito que seja o que o SVN usará por padrão, se não chmod o diretório no gancho post-commit.

... e para determinar se você tem um problema no SELinux, tente desativá-lo e reteste. Se isso funcionar, reúna os logs e modifique a política HTTPD (possivelmente apenas habilitando httpd_disable_trans ). Ou use o método Ophidian :

    
por 17.02.2010 / 13:59
1

(este deve ser um comentário para Ophidian, mas não vai caber no espaço permitido para um comentário, então estou postando como resposta)

Você pode fazê-lo sob o selinux, definindo os diretórios / arquivos que deseja usar com os contextos / tipos apropriados.

Para descobrir o contexto correto, o método mais fácil é examinar um diretório já rotulado corretamente. Por exemplo,

[root @ somehost ~] # ls -ldZ / var / www / html drwxr-xr-x root system_u: object_r: httpd_sys_content_t / var / www / html

Em seguida, defina o tipo de se linux correto em seu novo diretório de conteúdo. Por exemplo. se você quiser usar / home / myapp como sua raiz do doc: chcon -t httpd_sys_content_t / home / myapp

O chcon só persiste até a próxima reclassificação do sistema de arquivos. Não se esqueça de usar o semancon fcontext se você fizer isso para que os novos contextos persistam através de novas rotinas de sistema de arquivos!

semanage fcontext -em httpd_sys_content_t / home / myapp

    
por 17.02.2010 / 21:14