Ogni installazione è diversa. Per me ho molti utenti su un server che ospita ogni sito Web, per te probabilmente non dovrai creare più di un solo utente sul sistema. Tuttavia, se gestisci più siti Web su questo server, questa configurazione ti aiuterà a gestire, configurare ed eseguire il debug di ciascun dominio in modo più semplice di una configurazione LAMP standard. Affinché ciò accada, utilizzo diversi dispositivi di Apache per aggirare gli errori di autorizzazione.
Innanzitutto, questa è la struttura del documento che utilizzo:
/home/[USER]/domains/[DOMAIN]/html
/home/[USER]/domains/[DOMAIN]/logs
Ogni utente ha il proprio account con una cartella dei domini (che ho aggiunto in /etc/skel
modo che venga creato ogni volta. Ogni dominio ha la propria cartella nella domains
cartella con una html
cartella (ho i miei motivi per questo, principalmente in modo che i domini possano avere file Web all'esterno del dominio pubblico). Sentiti libero di modificare questa struttura come ritieni opportuno, ricorda di apportare tali modifiche in questo post.
In secondo luogo, ospito molti siti PHP, quindi uso suPHP nella mia configurazione. Per impostazione predefinita, il pacchetto di archivio standard non ha il flag di compilazione abilitato che risulta in una versione meno sicura di suPHP. Ho creato il mio pacchetto suPHP che utilizzo sui miei server, le istruzioni di installazione di seguito. suPHP consente di definire quali script PHP utente devono essere eseguiti (tra le altre cose, tra cui: php.ini personalizzato per ciascun sito, ecc.). Abilito anche suExec per Apache, eliminando ulteriormente la necessità di avere la proprietà dell'utente www-data (un utente che disprezzo).
Per prima cosa assicurati di avere Apache e tutti gli altri servizi installati sul tuo server. Assicurati che funzionino almeno. Successivamente, consiglio di installare suphp-common e il modulo libapache2-mod-suphp richiesto (Ulteriori informazioni: cosa sono i PPA e come li uso? ). Quindi, dopo l'installazione, attiva suPHP e suexec usandoa2enmod
sudo a2enmod suphp
sudo a2enmod suexec
sudo a2dismod php5
sudo /etc/init.d/apache restart
Successivamente verrà il file di configurazione. Ho creato vari strumenti che generano automaticamente i file di configurazione ogni volta che aggiungo un nuovo sito; tuttavia, ecco il modello di base che 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>
Questo imposta la registrazione per quel dominio, la radice del documento e tutte le altre necessità di base per far funzionare il dominio. Posiziono questi file in /etc/apache2/sites-available/
genere denominati [USER]-[DOMAIN]
e li abilito / disabilito in questo a2ensite
modo:
sudo a2ensite [USER]-[DOMAIN]
sudo a2dissite [USER]-[DOMAIN]
Dopo ogni modifica ai file di configurazione, Apache dovrà essere ricaricato
sudo /etc/init.d/apache reload
Sebbene possa sembrare molto impostare la quantità di flessibilità acquisita, a mio avviso, supera di gran lunga i tempi di installazione. Anche se hai bisogno di un solo server web per utente singolo, in futuro se avessi mai desiderato qualcosa di diverso da un server web per singolo utente, per farlo dovresti eseguire ulteriori azioni (o semplicemente abbandonare la sicurezza).