Cada configuração é diferente. Para mim eu tenho muitos usuários em um servidor que cada um hospeda websites, 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 nesse servidor, essa configuração ajudará você a gerenciar, configurar e depurar cada domínio de maneira mais fácil do que uma configuração padrão do LAMP. Para que isso aconteça eu utilizo vários dispositivos do Apache para contornar erros de permissão.
Primeiro, esta é a estrutura do documento que 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 adicionei a /etc/skel
para que seja criada todas as vezes. Cada domínio tem sua própria pasta na pasta domains
com uma pasta html
razões para isso, principalmente para que os domínios possam ter arquivos da web fora do domínio público.) Sinta-se à vontade para modificar essa estrutura como achar melhor, apenas lembre-se de realizar essas alterações ao longo deste post.
Em segundo lugar, eu hospedo muitos sites PHP, então eu uso o suPHP na minha configuração. Por padrão, o pacote padrão não possui o sinalizador de compilação adequado, resultando em uma versão menos segura do suPHP. Eu fiz o meu próprio pacote suPHP que eu uso em meus servidores, instruções de instalação abaixo. suPHP permite que você defina quais scripts PHP de usuário devem ser executados como (entre outras coisas, incluindo: php.ini customizado para cada site, etc). Eu também habilito suExec para Apache - removendo ainda mais a necessidade de ter qualquer propriedade para o usuário www-data (um usuário que eu desprezo).
Primeiro, assegure-se de ter o Apache e todos os outros serviços instalados em seu servidor. Certifique-se de que eles estão pelo menos trabalhando. Depois disso, eu recomendo instalar o suphp-common eo módulo libapache2-mod-suphp necessário (Mais informações: O que são os PPAs e como usá-los? ). Então, depois dessas instalações, ative suPHP e suexec usando a2enmod
sudo a2enmod suphp
sudo a2enmod suexec
sudo a2dismod php5
sudo /etc/init.d/apache restart
Em seguida, vem o arquivo de configuração. Eu fiz várias ferramentas que geram automaticamente os arquivos de configuração toda vez que eu 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 registro para esse domínio, a raiz do documento e todas as outras necessidades básicas para o domínio operar. Eu coloco esses arquivos em /etc/apache2/sites-available/
normalmente chamado [USER]-[DOMAIN]
e ative / desative-os com a2ensite
da seguinte 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 para configurar a quantidade de flexibilidade adquirida, na minha opinião, supera em muito o tempo de configuração. Embora você só precise de um único servidor da Web, no futuro, se você quisesse algo diferente de um único servidor da Web, seria necessário executar outras ações (ou apenas descartar a segurança em conjunto) para fazer isso.