Każda konfiguracja jest inna. Dla mnie mam wielu użytkowników na serwerze, z których każdy hostuje strony internetowe, dla ciebie prawdopodobnie nie będziesz musiał utworzyć więcej niż jednego użytkownika w systemie. Jeśli jednak zarządzasz wieloma witrynami na tym serwerze, ta konfiguracja pomoże ci zarządzać, konfigurować i debugować każdą domenę w sposób łatwiejszy niż standardowa konfiguracja LAMP. Aby tak się stało, używam kilku urządzeń Apache do ominięcia błędów uprawnień.
Po pierwsze, korzystam ze struktury dokumentu:
/home/[USER]/domains/[DOMAIN]/html
/home/[USER]/domains/[DOMAIN]/logs
Każdy użytkownik ma własne konto z folderem domen (do którego dodałem, aby /etc/skel
tworzyło się za każdym razem. Każda domena ma swój własny folder w domains
folderze z html
folderem (mam swoje powody, przede wszystkim dlatego, że domeny mogą mieć pliki sieciowe poza sfery publicznej). Zmodyfikuj tę strukturę według własnego uznania, pamiętaj tylko o wprowadzeniu tych zmian w tym poście.
Po drugie, hostuję wiele stron PHP, więc używam suPHP w mojej konfiguracji. Domyślnie standardowy pakiet archiwum nie ma włączonej właściwej flagi kompilacji, co skutkuje mniej bezpieczną wersją suPHP. Zrobiłem własny pakiet suPHP, którego używam na moich serwerach, instrukcje instalacji poniżej. suPHP pozwala zdefiniować, jakie skrypty użytkownika PHP powinny być wykonywane (między innymi: niestandardowe php.ini dla każdej strony itp.). Włączam również suExec dla Apache - co jeszcze bardziej eliminuje potrzebę posiadania własności przez użytkownika danych www (użytkownika, którym gardzę).
Najpierw upewnij się, że masz Apache i wszystkie inne usługi zainstalowane na serwerze. Upewnij się, że przynajmniej działają. Następnie zalecam zainstalowanie suphp-common i wymaganego modułu libapache2-mod-suphp (Więcej informacji: Co to są PPA i jak ich używać? ). Następnie, po instalacji, aktywuj suPHP i suexec przy użyciua2enmod
sudo a2enmod suphp
sudo a2enmod suexec
sudo a2dismod php5
sudo /etc/init.d/apache restart
Następnie pojawi się plik konfiguracyjny. Stworzyłem różne narzędzia, które automatycznie generują pliki konfiguracyjne za każdym razem, gdy dodam nową stronę; jednak oto podstawowy szablon, którego używam:
<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>
Spowoduje to skonfigurowanie rejestrowania dla tej domeny, katalogu głównego dokumentu i wszystkich innych podstawowych potrzeb do działania domeny. Umieszczam te pliki w /etc/apache2/sites-available/
typowo nazwanych [USER]-[DOMAIN]
i włączam / wyłączam je w następujący a2ensite
sposób:
sudo a2ensite [USER]-[DOMAIN]
sudo a2dissite [USER]-[DOMAIN]
Po każdej modyfikacji plików konfiguracyjnych należy ponownie załadować Apache
sudo /etc/init.d/apache reload
Chociaż konfiguracja może wydawać się bardzo trudna, moim zdaniem znacznie większa elastyczność. Chociaż potrzebujesz tylko jednego serwera WWW, w przyszłości, jeśli kiedykolwiek chciałbyś czegoś innego niż serwer WWW jednego użytkownika, musisz wykonać dalsze działania (lub po prostu porzucić zabezpieczenia razem), aby to zrobić.