Содержание
Из чего сделан LAMP-сервер? Правильно: из Linux, Apache, MySQL и 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.
Если есть вопросы, дополнения или замечания — пишите комментарии, разберемся.