Cada configuração é diferente. Para mim, tenho muitos usuários em um servidor que hospeda sites. Para você, você provavelmente não precisará criar mais do que apenas um usuário no sistema. No entanto, se você gerenciar vários sites neste servidor, essa configuração o ajudará a gerenciar, configurar e depurar cada domínio de uma maneira mais fácil do que uma instalação LAMP padrão. Para que isso aconteça, utilizo vários dispositivos do Apache para contornar erros de permissão.
Primeiro, esta é a estrutura do documento que eu uso:
/home/[USER]/domains/[DOMAIN]/html
/home/[USER]/domains/[DOMAIN]/logs
Cada usuário tem sua própria conta com uma pasta de domínios (que eu adicionei para /etc/skel
que seja criada toda vez. Cada domínio tem sua própria pasta na domains
pasta com uma html
pasta (eu tenho meus motivos para isso, principalmente para que os domínios possam ter arquivos da Web externos do domínio público). Sinta-se à vontade para modificar essa estrutura como achar melhor, lembre-se de realizar essas alterações ao longo deste post.
Em segundo lugar, eu hospedo muitos sites PHP, então uso o suPHP na minha configuração. Por padrão, o pacote de arquivamento padrão não tem o sinalizador de compilação adequado ativado, resultando em uma versão menos segura do suPHP. Criei meu próprio pacote suPHP, que uso nos meus servidores, instruções de instalação abaixo. O suPHP permite definir como os scripts PHP do usuário devem ser executados (entre outras coisas, incluindo: php.ini personalizado para cada site, etc.). Também habilito o suExec para Apache - removendo ainda mais a necessidade de ter qualquer propriedade do usuário www-data (um usuário que eu desprezo).
Primeiro, verifique se você possui o Apache e todos os outros serviços instalados no seu servidor. Verifique se eles estão trabalhando pelo menos. Depois disso, recomendo instalar o suphp-common e o módulo libapache2-mod-suphp necessário (Mais informações: O que são PPAs e como os uso? ). Depois, após a instalação, ative o suPHP e o suexec usandoa2enmod
sudo a2enmod suphp
sudo a2enmod suexec
sudo a2dismod php5
sudo /etc/init.d/apache restart
Em seguida, virá o arquivo de configuração. Criei várias ferramentas que geram automaticamente os arquivos de configuração sempre que adiciono um novo site; no entanto, aqui está o modelo básico que eu uso:
<VirtualHost *:80>
ServerAdmin [EMAIL]
ServerName [DOMAIN]
ServerAlias www.[DOMAIN] [DOMAIN]
DocumentRoot /home/[USER]/domains/[DOMAIN]/html
<Directory /home/[USER]/domains/[DOMAIN]>
Options Indexes FollowSymLinks MultiViews
AllowOverride all
</Directory>
ErrorLog /home/[USER]/domains/[DOMAIN]/logs/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog /home/[USER]/domains/[DOMAIN]/logs/access.log combined
SuexecUserGroup [USER] [USER]
suPHP_UserGroup [USER] [USER]
suPHP_ConfigPath /home/[USER]/etc
</VirtualHost>
Isso configura o log para esse domínio, a raiz do documento e todas as outras necessidades básicas para o domínio operar. Coloco esses arquivos /etc/apache2/sites-available/
normalmente nomeados [USER]-[DOMAIN]
e os habilito / desabilito da seguinte a2ensite
forma:
sudo a2ensite [USER]-[DOMAIN]
sudo a2dissite [USER]-[DOMAIN]
Após cada modificação nos arquivos de configuração, o Apache precisará ser recarregado com
sudo /etc/init.d/apache reload
Embora possa parecer muito configurar a quantidade de flexibilidade adquirida, na minha opinião, supera em muito o tempo de configuração. Embora você precise apenas de um servidor da web de usuário único, no futuro, se quiser algo além de um servidor da web de usuário único, será necessário executar ações adicionais (ou simplesmente descartar a segurança todos juntos) para fazer isso.