Настройка LAMP-сервера на вашем VPS

Из чего сделан LAMP-сервер? Правильно: из LinuxApacheMySQL и PHP. Ниже остановимся подробно на каждом из пунктов. Первым по списку идет…

Linux

В интернетах пишут, что лучший линукс для серверов — это Debian. Я поддерживаю это утверждение.

Если выбираете образ для вашего нового VPS, то рекомендую остановиться именно на Debian, и желательно на минимальной установке.

В этой статье все команды и пути рассчитаны на Debian (в крайнем случае на Ubuntu, но Ubuntu для сервера никому не советую).

Еще один совет при настройке VPS: избавьтесь сразу от ненужной хрени. Например, образы Debian у fastvps.ru идут с предустановленными Samba и Bind DNS server, которые вряд ли вам понадобятся, а драгоценную память потребляют.

Если у вас нет VPS, а вы просто хотите поиграться-покрасноглазить, то создайте виртуальную машинку (например при помощи VMWare player) и сделайте Debian netinst. Все что нужно на первом этапе — это root-доступ и установленный OpenSSH server.

Итак, у вас есть линукс. Подключаемся к нему по SSH и логинимся как root.

Немножко приготовлений:

apt-get install mc nano

и переходим к…

Apache

Прежде чем чего-то делать, обрисую канву.

Сервер/VPS надо настроить так, чтобы на нем можно было без проблем разместить несколько сайтов для разных пользователей. Даже если сейчас вам нужен только один сайт, в будущем это может измениться, и желательно сконфигурировать все правильно с самого начала.

Будем иметь в виду, что на сервере можно завести много unix-пользователей, а каждый из пользователей может владеть несколькими доменами. Именно так настроены сервера у провайдеров виртуального хостинга.

Очень важный момент: пользователи должны быть изолированы. Второй важный момент: не должно быть никакого неудобства с правами доступа. Обоим моментам удовлетворяет Apache с MPM-моделью ITK (apache2-mpm-itk). Я открыл для себя его совсем недавно, и был очень обрадован факту его существования на белом свете.

Ставим:

apt-get install apache2-mpm-itk

После установки вбейте IP-адрес сервера в строку браузера. Должно появиться «It works!»

Рассуждения о default site

Когда вы обращаетесь к серверу таким образом (по IP из браузера), то открывается так называемый default site. У него может не быть доменного имени, но для удобства вы можете его и задать (так сервер, на котором сегодня бежит мой блог, привязан к домену vps1.amartynov.ru)

Моя рекомендация: используйте default-сайт для служебных целей. Ниже в этой статье я буду использовать default-сайт для установки на него phpMyAdmin.

И еще, подумайте, не завести ли для default-сайта отдельного пользователя.

Сценарий первый: вы хотите разместить на VPS один или несколько своих сайтов плюс держите в уме возможность размещения дополнительных сайтов для ваших друзей/учеников/клиентов. Тут логично держать default-сайт и ваши сайты под одним юзером. Вы ж хозяин, как-никак.

Сценарий второй: вы приобрели VPS, чтобы размещать на нем проекты своих клиентов. В этом случае будет лучше, если default-сайт будет бежать под отдельным пользователем, не имеющим отношения к клиентским сайтам.

Завершаем базовую настройку Апача.

Включим наиболее востребованные модули:

a2enmod rewrite include

Удалим «заводской» default-site:

unlink /etc/apache2/sites-available/default
unlink /etc/apache2/sites-available/default-ssl
unlink /etc/apache2/sites-enabled/*

В файле /etc/apache2/apache2.conf поправим (или добавим, если нет такого блока):

<IfModule mpm_itk_module>
    StartServers          1
    MinSpareServers       1
    MaxSpareServers       5
    MaxClients           10
    MaxRequestsPerChild   0
</IfModule>

Значения MPM-параметров тут подобраны под слабенький VPS. В гугле можно найти рекомендации по выбору этих чисел («apache mpm tuning» и подобное).

Перезапускаем Апач:

/etc/init.d/apache2 restart

Теперь нам нужен…

Рецепт добавления нового сайта

Задача: разместить на сервере домен domain1.com для пользователя user1.

Если такого пользователя еще нет, то добавляем его:

adduser user1

Создаем web-директорию для сайта:

login user1
mkdir -p domain1.com/www
echo Hello > domain1.com/www/index.html
exit

Заводим конфиг сайта:

touch /etc/apache2/sites-available/user1-domain1.com

Внутрь помещаем:

<VirtualHost *:80>
    AssignUserID user1 user1

    ServerName domain1.com
    ServerAlias www.domain1.com # + other aliases

    DocumentRoot /home/user1/domain1.com/www

    <Directory /home/user1/domain1.com/www>
        Options FollowSymLinks
        AllowOverride All
        Allow from all
    </Directory>
</VirtualHost>

Включаем сайт:

a2ensite user1-domain1.com

Заставляем Апач подцепить изменения:

/etc/init.d/apache2 reload

Замечания по default-сайту

  • Для default-сайта имя конфига должно быть просто «default» (утилита a2ensiteобрабатывает это имя по-особому).
  • Логично задать ServerName localhost
  • Настройку default-сайта не откладывайте, он понадобится нам по ходу дела.

Apache настроен. Самое время прикрутить к нему…

PHP

Даем команду:

apt-get install libapache2-mod-php5 php5-gd php5-intl php5-mcrypt php5-curl php5-xsl php5-sqlite php5-mysql

Устанавливать ли opcode cacher (например, php-apc) — решайте сами и учитывайте возможные проблемы с расходом памяти и безопасностью.

Рассказываем Апачу о внесенных изменениях:

/etc/init.d/apache2 reload

MySQL server

Последний пункт основной программы нашего концерта — это установка MySQL-сервера.

Некоторые хостеры дают бесплатные базы на своих серверах, если вы заказываете у них VPS. Первым делом проверьте такую возможность. Это позволит сэкономить ресурсы вашего VPS.

Если такой возможности нет или если вы хотите все контролировать сами, тогда ставим сервер:

apt-get install mysql-server

Всю остальную настройку проще делать с помощью phpMyAdmin. Его можно было бы установить Debian-пакетом, но я этого делать не рекомендую по нескольким причинам:

  • пакет добавляет в Apache два глобальных алиаса, а это означает, что phpMyAdmin и еще одна вспомогательная папка будут торчать из всех размещенных на сервере сайтов;
  • пакет устанавливается в /usr с правами root, что создает проблемы при экспорте и импорте дампов;
  • пакет содержит сравнительно несвежую версию.

Поэтому скачайте phpMyAdmin поновее с официального источника и установите в ваш default-сайт:

login userForDefaultSite
wget http://downloads.sourceforge.net/project/phpmyadmin/phpMyAdmin/3.5.2/phpMyAdmin-3.5.2-all-languages.tar.gz
tar xzf ./phpMy<TAB>
mv ./phpMy<em><TAB> default-site/www/phpmyadmin
exit

Теперь по адресу вы можете создавать MySQL-пользователей и базы.

Но какой же сервер обойдется без доступа по FTP?

FTP-сервер

apt-get install vsftpd

После установки редактируем конфиг /etc/vsftpd.conf:

anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
chroot_local_user=YES
force_dot_files=YES

Применяем изменения:

/etc/init.d/vsftpd restart

Ротация логов

Теперь на вашем сервере крутится куча служб, и каждая из них пишет в логи. К счастью, в Debian Linux из коробки предусмотрено автоматическое управление логами с помощью утилиты logrotate.

Единственное улучшение, которое я могу рекомендовать — это участить ротацию логов Apache.

В файл /etc/logrotate.d/apache2 внесите следующие изменения:

daily
rotate 31

Это означает, что логи будут архивироваться ежедневно и храниться в объеме за последний месяц.

На этом всё!

Уважаемые читатели,  вашему вниманию я представил достаточно прямолинейное руководство по настройке классического web-сервера на базе Debian Linux.

Если есть вопросы, дополнения или замечания — пишите комментарии, разберемся.