Кожна установка різна. Для мене на сервері багато користувачів, на яких розміщуються веб-сайти, для вас, ймовірно, не потрібно буде створювати більше одного користувача в системі. Однак якщо ви керуєте декількома веб-сайтами на цьому сервері, ця налаштування допоможе вам керувати, налаштовувати та налагоджувати кожен домен способом простіше, ніж стандартні установки LAMP. Для того, щоб це сталося, я використовую кілька пристроїв Apache, щоб уникнути помилок дозволу.
По-перше, це структура документа, яку я використовую:
/home/[USER]/domains/[DOMAIN]/html
/home/[USER]/domains/[DOMAIN]/logs
Кожен користувач має свій власний обліковий запис із папкою доменів (яку я додав, щоб /etc/skel
вона створювалася щоразу. Кожен домен має власну папку в domains
папці з html
папкою (у мене є свої причини цього, насамперед, щоб домени могли мати веб-файли поза публічної сфери). Не соромтесь змінювати цю структуру, як вважаєте за потрібне, просто не забудьте пронести ці зміни протягом усієї публікації.
По-друге, я розміщую багато сайтів PHP, тому я використовую suPHP у своїй конфігурації. За замовчуванням у стандартному пакеті архівів не включений відповідний прапор компіляції, що призводить до менш безпечної версії suPHP. Я створив власний пакет suPHP, який використовую на своїх серверах, інструкції з установки нижче. suPHP дозволяє визначити, як слід виконувати сценарії PHP користувачів (серед іншого, зокрема: користувацькі php.ini для кожного сайту тощо). Я також включаю suExec для Apache - додатково знімаю необхідність володіти користувачем www-data (користувачем, якого я зневажаю).
Спочатку переконайтеся, що на вашому сервері встановлено Apache та всі інші сервіси. Переконайтеся, що вони принаймні працюють. Після цього я рекомендую встановити suphp-common та необхідний модуль libapache2-mod-suphp (Докладніше: Що таке PPA та як я ними користуюся? ). Потім після встановлення активуйте suPHP та suexec, використовуючиa2enmod
sudo a2enmod suphp
sudo a2enmod suexec
sudo a2dismod php5
sudo /etc/init.d/apache restart
Далі з'явиться файл конфігурації. Я створив різні інструменти, які автоматично генерують файли конфігурації кожного разу, коли я додаю новий сайт; проте ось основний шаблон, який я використовую:
<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>
Це налаштовує журнал для цього домену, корінь документа та всі інші основні потреби для роботи домену. Я розміщую ці файли в /etc/apache2/sites-available/
типово названих [USER]-[DOMAIN]
і включаю / відключаю їх a2ensite
так:
sudo a2ensite [USER]-[DOMAIN]
sudo a2dissite [USER]-[DOMAIN]
Після кожної модифікації файлів конфігурації Apache потрібно буде перезавантажити
sudo /etc/init.d/apache reload
Хоча це може здатися великим для встановлення обсягу набутої гнучкості, на мою думку, значно переважає час налаштування. Хоча вам потрібен лише один веб-сервер користувача, у майбутньому, якщо ви коли-небудь хотіли що-небудь, крім одного веб-сервера одного користувача, вам потрібно буде виконати подальші дії (або просто скинути безпеку всі разом) для цього.