Волшебная лампа админа: пошаговое руководство по установке LAMP-сервераSergey Jaremchuk feat. Andrey Matveev У GNU/Linux преимуществ много, но именно возможность мгновенного преобразования бюджетного компа в полнофункциональный Web-сервер позволила этой операционке ворваться в домашние сети и на корпоративный рынок. Если ты планируешь развернуть web-сервис на базе архитектуры LAMP в интранет/интернет, то эта статья точно для тебя. Установка Ubuntu Server EditionЗа аббревиатурой LAMP скрывается конфигурация Linux, Apache, MySQL, PHP/Perl/Python (плюс, сюда часто добавляют Ruby On Rails). В статье остановим свой выбор на Ubuntu Server Edition 8.04.1 LTS. Почему именно он? Причин несколько. Во-первых, Ubuntu - один из самых дружелюбных дистрибутивов, и начинающему администратору с ним будет легче разобраться. Во-вторых, быстрота развертывания: весь процесс займет примерно 30 минут вместе с установкой сервера. В-третьих, ядро Ubuntu Server Edition (версии 2.6.24) специально оптимизировано для работы на сервере за счет использования:
Кроме того, поддержка LTS-версии заявлена на пять лет (до апреля 2013), а значит, все это время разработчики обязуются выпускать обновления. Такой увеличенный период технической поддержки полностью отвечает требованиям современного бизнеса. Большая часть сказанного будет действительна для Debian и некоторых других дистрибутивов, использующих APT. Сервер будем ставить в такой конфигурации:
Процесс установки системы происходит в псевдографической среде. Трудностей он обычно не вызывает, поэтому по этапам пробежимся лишь поверхностно. Чтобы все сообщения системы выводились на русском языке, в загрузочном меню нажимаем <F2>. После выбора региона и установки раскладки клавиатуры будет произведена автоматическая настройки сети с помощью DHCP. Если такого сервера нет, выбираем пункт «Настроить сеть вручную» и последовательно вводим параметры: IP-адрес, маску подсети, IP-адрес шлюза, адреса DNS-серверов (через пробел), имя компьютера и домена. Далее выбираем в списке часовой пояс, и наступает самый важный этап – разметка диска. Мастер предлагает четыре варианта: автоматическая разметка, LVM (обычный и шифрованный) и ручной труд. Каждый имеет свои плюсы и минусы; если есть сомнения, здесь же доступна справка, которая поможет тебе определиться с выбором. При автоматической разметке скрипт создает swap-раздел, равный 1.5 объема ОЗУ (с конца диска). Все остальное место форматируется как ext3 и монтируется как корневой раздел. Что ж, новичкам такая схема вполне подойдет. При ручной разметке для размещения журналов событий, файлов БД и данных веб-сервера лучше создать отдельные разделы /var/log, /var/mysql и /var/www, отформатированные в ReiserFS. Эта файловая система обеспечивает улучшенную производительность при работе с большим количеством маленьких файлов. Кстати, в Ubuntu есть одна особенность: каталог /var/run обязательно должен быть расположен в корневой файловой системе, иначе некоторые сервисы просто не смогут загрузиться. Если планируется разрешить пользователям создавать публичные веб-папки (об этом чуть ниже), то имеет смысл назначить раздел для /home. Под корень достаточно отвести 3-4 Гб. Затрудняешься определить, сколько требуется места под каждый раздел? Тогда стоит присмотреться к менеджеру логических томов LVM. Настройка сервераОдин из сетевых интерфейсов уже настроен во время установки. Если сервер имеет несколько сетевых карт, их необходимо сконфигурировать вручную. Открываем файл /etc/network/interfaces и правим:
Перезапускаем сеть:
Теперь в /etc/hosts прописываем соответствие имени узла и IP-адреса. Например:
Аналогично добавляем записи и для остальных узлов (в том числе и виртуальных), с которыми будем «общаться». После установки системы в /etc/hostname должно быть прописано имя узла. Если вывод команды «hostname» не соответствует должному, редактируем этот файл. В некоторых случаях AppArmor (программный инструмент упреждающей защиты, основанный на политиках безопасности, подробности ищи в статье «Бронированный тукс» в X_08_2007) слишком рьяно выполняет свои обязанности. Например, при установке ispCP (смотри статью «Незаменимый помощник хостера» в X_10_2008) AppArmor напрочь блокировал работу сервисов. При построении защищенного Web-сервера можно обойтись и без него. Поэтому если обнаружится какая-то проблема, останавливаем работу профилей безопасности:
Если после этого проблема решена, отключаем автозагрузку AppArmor или совсем его удаляем:
Обновляем список пакетов и затем – полностью – систему:
Если SSH-сервер во время инсталляции системы не устанавливался, делаем это сейчас. Заодно установим пакет «ntp», который обеспечит нам автоматическую синхронизацию времени:
Новичкам для правки файлов и навигации, возможно, удобнее будет использовать файловый менеджер Midnight Commander:
Теперь достаточно набрать «mc», и появится окно удобного файлового менеджера, подобного старому доброму нортону. Второй пакет необходим для локализации консоли, – иначе сообщения, выводимые на русском, будут не читаемы. В 8.04.1 ссылка для автоматической загрузки console-cyrillic отсутствует, поэтому следует каждый раз запускать его вручную, либо переконфигурировать пакет. Вводим:
Скрипт задаст несколько простых вопросов касательно переключателя раскладки, шрифта, кодировки (Unicode) и автоматической установки настроек при старте системы. Итак, «L» уже готов к работе, остался «AMP». Установка мускула, апача и PHPСтавим пакеты для MySQL:
В процессе установки должен появиться запрос на ввод пароля администратора базы данных. Если этого не произошло, устанавливаем пасс самостоятельно:
Пробуем подключиться к базе данных и получить список таблиц:
В настройках по умолчанию мускул будет отрабатывать только локальные подключения:
Проверяем, прослушивается ли порт 3306/tcp:
Из соображений безопасности этот порт можно отключить и использовать локальный сокет mysql.sock. Для этого добавим в секцию [mysqld] файла /etc/mysql/my.cnf директиву «skip-networking» и перезапустим сервер:
Установка веб-сервера Apache довольно проста:
Теперь настала очередь PHP5. Не забываем модуль для работы с мускулом:
Зависимости и остальные компоненты apt-get подхватывает самостоятельно. В большинстве случаев того, что есть, – достаточно. Хотя некоторые модули веб-сервера по умолчанию не подключаются. Список всех доступных модулей можно получить, введя:
Как вариант, просто смотрим листинг каталога /etc/apache2/mods-available. Чтобы сделать активным любой из модулей, следует создать символическую ссылку в подкаталог /etc/apache2/mods-enabled (что, собственно, и делает команда a2enmod). Давай посмотрим, что собой представляют файлы, отвечающие за поддержку PHP:
Если используется другой дистрибутив, или связка Apache + PHP5 собиралась вручную, обязательно проследи, чтобы в /etc/apache2/httpd.conf (apache2.conf) присутствовали эти строки. Модуль для работы PHP уже активирован:
Для некоторых задач, возможно, потребуются дополнительные модули PHP (полный список пакетов php5-*, доступных в репозитарии, можно получить, введя «sudo apt-cache search php5»):
Перезапускаем веб-сервер:
Набираем в браузере строку http://localhost, – в ответ мы должны увидеть надпись «It works!». Чтобы проверить работу PHP, создаем файл test.php и пробуем к нему обратиться:
В ответ должны получить таблицу с настройками PHP. Если это не так, следует просмотреть журналы веб-сервера, расположенные в каталоге /var/log/apache2. В них обычно выдаются информативные подсказки. При первом запуске веб-сервера в консоли выводится сообщение о том, что индеец не может определить доменное имя данного хоста: «apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName». Чтобы его убрать, следует установить значение переменной ServerName в apache2.conf. Хотя в Ubuntu эта настройка вынесена в отдельный файл /etc/apache2/conf.d/fqdn.
Поддержка MySQL в PHP обеспечивается наличием в каталоге /etc/php5/apache2/conf.d файлов mysql.ini и mysqli.ini. Каждый состоит всего из одной строки. В mysql.ini содержится запись «extension=mysql.so», а в mysqli.ini – «extension=mysqli.so». Если эти файлы в твоем дистрибутиве отсутствуют - не беда. Просто сними соответствующие комментарии в php.ini:
Вообще, параметров в php.ini довольно много. Советую уделить время их изучению. Настройка виртуальных хостовВеб-сервер Apache разрешает использовать несколько вариантов выделения пользователям места под собственный веб-сайт. Самый простой – это подкаталог в корне веб-сервера. Например, создаем каталог /var/www/site1. Теперь к нему можно обратиться как http://localhost/site1. Но это не всегда удобно, ведь каждый сайт обычно имеет свое уникальное доменное имя. Еще один вариант – разрешить пользователям, имеющим учетные записи в системе, самостоятельно создавать веб-ресурсы. Активировать такую функциональность можно при помощи параметра UserDir. Вариантов тут, как обычно, несколько – чаще всего под веб-сервис используют подкаталог public_html в домашней директории пользователя. Заносим в apache2.conf строку:
И подгружаем модуль userdir:
Эта команда соответствует добавлению в apache2.conf таких строк: Теперь любому пользователю достаточно создать в своем домашнем каталоге поддиректорию public_html ( И третий, самый популярный, вариант – виртуальные хосты. В этом случае все узлы, висящие на одном IP (и одном Apache), будут иметь свое имя, по которому веб-сервер и определит, из какого каталога следует отдавать файл. Управление виртуальными хостами в Apache организовано аналогично модулям, – в /etc/apache2/sites-available помещаем файл с описанием, а командой a2ensite с названием файла его включаем. Да, конечно, нам под силу описать все узлы в apache2.conf, но это не очень удобно. Просмотрев список ссылок в sites-enabled, можно быстро узнать, сколько сейчас виртуальных серверов активно, и при необходимости легко включить или отключить любой из них. В sites-available уже находится файл default, который описывает узел по умолчанию. Его можно использовать как шаблон (этот же узел будет отвечать, если к серверу обратиться по IP-адресу, а не по имени):
Смотрим, с правами какого пользователя работает веб-сервер (в Ubuntu эти данные вынесены в отдельный файл):
Создаем каталог, в котором будут находиться файлы сервера, устанавливаем его владельцем учетную запись www-data и включаем новый сайт:
При необходимости заносим данные об имени компьютера в /etc/hosts, перезапускаем веб-сервер и пробуем зайти на server.com. ЗаключениеМы получили полностью работоспособный веб-сервер с поддержкой PHP и MySQL, который можно использовать для хостинга, биллинга, форума или при разработке скриптов. Схему можно расширять: настроить поддержку SSL и квот, задействовать ModSecurity для защиты веб-приложений как от известных, так и еще неизвестных атак, установить Webalizer или AWStats для сбора и визуализации статистики. Тем, у кого мало опыта работы с MySQL, не помешает веб-интерфейс phpMyAdmin. Неплохо зарекомендовал себя и Webmin, позволяющий управлять всеми компонентами LAMP при помощи локализованного веб-интерфейса. Основные конфигурационные файлы LAMP в Ubuntu
DVDНа прилагаемом к журналу диске ты найдешь весь софт, упоминаемый в статье, а также видеоролик, где показано, как развернуть архитектуру LAMP. INFOЯдро Ubuntu Server Edition специально оптимизировано для работы на сервере за счет Tickless, No Preemption, Deadline I/O, PAE и 100Hz. О повышении безопасности веб-сервера читай в статье «Возьми индейца под защиту», опубликованной в ][_10_2007. WWW
|