Волшебная лампа админа
ПОШАГОВОЕ РУКОВОДСТВО ПО УСТАНОВКЕ LAMP-СЕРВЕРА
У GNU/Linux преимуществ много, но именно возможность мгновенного преобразования бюджетного компа в полнофункциональный Web-сервер позволила этой операционке ворваться в домашние сети и на корпоративный рынок. Если ты планируешь развернуть web-сервис на базе архитектуры LAMPв интранет/интернет, то эта статья точно для тебя.
УСТАНОВКА UBUNTU SERVER EDITION
За аббревиатурой LAMP скрывается конфигурация Linux. Apache, MySQL.
PHP/Perl/Python (плюс, сюда часто добавляют Ruby On Rails]. В статье остановим свой выбор на Ubuntu Server Edition 8.0Д.1 LTS. Почему именно он? Причин несколько. Во-первых, Ubuntu — один из самых дружелюбных дистрибутивов, и начинающему администратору с ним будет легче разобраться. Во-вторых, быстрота развертывания: весь процесс займет примерно 30 минут вместе с установкой сервера В-третьих, ядро Ubuntu Server Edition (версии 2.6.24) специально оптимизировано для работы на сервере за счетиспользования:
• Tickless (этот режим приводит к уменьшению энергопотребления и тепловыделения);
• No Preemption (время отклика для интерактивных задач не уменьшается);
• Deadline I/O (планировщик, минимизирующий задержки ввода/вывода и обеспечивающий поведение, близкое к реальному времени);
• РАЕ (поддержка аппаратной технологии, с помощью которой программы на 32-разрядных серверах с процессорами IA-32 могут адресовать физическую память свыше к Гб);
• 100Hz (таймерное прерывание).
Кроме того, поддержка LTS-версии заявлена на пять лет (до апреля 2013), а значит, все это время разработчики обязуются выпускать обновления. Такой увеличенный период технической поддержки полностью отвечает требованиям современного бизнеса. Большая часть сказанного будет действительна для Debian и некоторых других дистрибутивов, использующих APT. Сервер будем ставить в такой конфигурации:
• Apache 2 — веб-сервер.
• MySQL5 — сервер баз данных;
• РНР5 —PHPCGI.
Процесс установки системы происходит в псевдографической среде. Трудностей он обычно не вызывает, поэтому по этапам пробежимся лишь поверхностно. Чтобы всесообщения системы выводились на русском языке, взагрузочном меню нажимаем <F2>. После выбора региона и установки раскладки клавиатуры будет произведена автоматическая настройка Сети с помощью DHCP. Если такого сервера нет, выбираем пункт «Настроить сеть вручную» и последовательно вводим параметры: IP-адрес, маску подсети, IP-адрес шлюза, адреса DNS-серверов (через пробел), имя компьютера и домена. Далее выбираем в списке часовой пояс, и наступает самый важный этап — разметка диска. Мастер предлагаетчеты ре варианта: автоматическая разметка, LVM (обычный и шифрованный) и ручной труд. Каждый имеет свои плюсы и минусы; если есть сомнения, здесь же доступна справка, которая поможет тебе определиться с выбором. При автоматической разметке скрипт создает swap-раздел, равный 1.5 объема ОЗУ (с конца диска). Все остальное место форматируется KaKext3 и монтируется как корневой раздел. Что ж, новичкам такая схема вполне подойдет. При ручной разметке для размещения журналов событий, файлов БД и данных веб-сервера лучше создать отдельные разделы /var/log, /var /mysql и /var/www, отформатированные в ReiserFS. Эта файловая система обеспечивает улучшенную производительность при работе с большим количеством маленьких файлов. Кстати, в Ubuntu есть одна особенность: каталог /var/run обязательно должен быть расположен в корневой файловой системе, иначе некоторые сервисы просто не смогут загрузиться. Если планируется разрешить пользователям создавать публичные веб-папки (об этом чуть ниже), то имеет смысл назначить раздел для /home.
Под корень достаточно отвести 3 Гб. Затрудняешься определить, сколько требуется места под каждый раздел? Тогда стоит присмотреться к менеджеру логическихтомов LVM. Послеустановки базовой системы создаем учетную запись пользователя, который будет одновременно и суперпользоеателем (через sudo). Мастер установки предлагает семь готовых конфигураций сервера: DNS, LAMP. Mail, OpenSSH, PostgreSQL. Print nSamba. После выбора любого варианта на выходе получаем готовое решение. Но это предложение для новичков, а чтобы полностью контролировать процесс, лучше все компоненты установить самостоятельно. Тем более, в репозитарии дистрибутива, как правило, находятся пакеты посвежее, и при обновлении дистрибутива все равно эти файлы придется качать. Если дальнейшую настройку планируется производить удаленно, ставим только «OpenSSH server». Остальные действия скрипт произведет уже без нашего участия. Спустя некоторое время получим сообщение о том, что установка сервера успешно завершена.
НАСТРОЙКА СЕРВЕРА
Один из сетевых интерфейсов уже настроен во время установки. Если сервер имеет несколько сетевых карт, их необходимо сконфигурировать вручную.
Открываем файл /etc/network/interfaces и правим:
$ sudo nano -w/etc/network/interfaces
auto lo
iface lo inet loopback
# Интерфейс ethO настраивается автоматически посредством
DCHP
auto ethO
iface ethO inet dhcp
# Параметры ethl указываем самостоятельно
auto ethl
iface ethl inet static
address 192.166.0.200
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255
gateway 192.168.0.1
Перезапускаем Сеть:
$ sudo /etc/init.d/networking restart
Теперь в / etc/hosts прописываем соответствие имени узла и IP-адреса. Например:
$ sudo nano /etc/hosts
192.168.0.200 web.server.com web
Аналогично добавляем записи и для остальных узлов (втом числе и виртуальных), с которыми будем «общаться».
После установки системы в /etc/hostname должно быть прописано имя узла. Если вывод команды «hostname» не соответствует должному, редактируем этот файл.
Установку пакетов будем производить из сетевого репозитария, поэтому в файле /etc/apt/sources.list строка «deb cdrom:[Ubuntu Server 8.04 JHardy Heron_ - Release i386 (20080701)]/
hardy main restricted* должна быть закомментирована. Так как мы не планируем ничего самостоятельно компилировать,™ комментируем и строки, начинающиеся с «deb-src». Остальное оставляем, как есть. В некоторых случаях AppArmor (программный инструмент упреждающей защиты, основанный на политиках безопасности, подробности ищи в статье «Бронированный туке» в ЗС_08_2007) слишком рьяно выполняет свои обязанности. Например, при установке ispCP (смотри статью «Незаменимый помощникхостера» вЗС_10_2008) AppArmor напрочь блокировал работу сервисов. При построении защищенного Web-сервера можно обойтись и без него. Поэтому если обнаружится какая-то проблема, останавливаем работу профилей безопасности:
$ sudo /etc/init. d/apparmor stop
Если после этого проблема решена, отключаем автозагрузку AppArmor или совсем его удаляем:
$ sudo update-rc.d -f apparmor remove
$ sudo apt-get remove apparmor apparmor-utils
Обновляем список пакетов и затем — полностью — систему:
$ sudo apt-get update
$ sudo apt-get upgrade
Есл и SSH-cepeep во время инсталляции системы неустанавливался, делаем это сейчас. Заодно установим пакет «ntp», который обеспечитнам акюматическую синхронизацию времени:
$ sudo apt-get install openssh-server ntp
ntpdate
Новичкам для правки файлов и навигации, возможно, удобнее будет использовать файловый менеджер Midnight Commander:
$ sudo apt-get install mc console-Cyrillic
Теперь достаточно набрать «mc», и появится окно удобного файлового менеджера, подобного старому доброму Нортону. Второй пакет необходим для локализации консоли, — иначе сообщения, выводимые на русском, будут нечитаемы. В 8.04-.1 ссылка для автоматической загрузки console-cyrillic отсутствует, поэтому нужно каждый раз запускать его вручную, либо переконфигурироватъ пакет. Вводим:
$ sudo dpkg-reconf igure console-cyrillic
В процессеустановки должен появиться запрос на ввод пароля администратора базы данных. Если этого не произошло, устанавливаем пасс самостоятельно:
5 sudo mysqladmin -u root password пароль
Пробуем подключиться к базе данных и получить список таблиц:
$ mysql -u root -р
Welcome to the MySQL monitor. Commands end with; org.
Your MySQL connection id is 16
Server version: 5 . 0 . 51a-3ubuntu5 .1 (Ubuntu)
mysql> use mysql;
mysql> show tables;
mysql> quit;
В настройках по умолчанию мускул будет отрабатывать только локальныеподключения:
S cat /etc/mysql/my.cnf I grep bmd-address
bind-address = 127.0.0.0
Проверяем, прослушивается ли порт 3066 tcp:
Скриптзадастнесколько простых вопросов касательно переключателя раскладки, шрифта, кодировки (Unicode) и автоматической установки настроек при старте системы.
Итак, «Е»уже готов к работе, остался «АМР».
УСТАНОВКА МУСКУЛА, АПАЧА И РНР
Ставим пакеты для MySQL:
$ sudo apt-get install mysql-server mysql-
client
$ netstat — ant I grep 3306
tcp 0 0 127.0.0.0:3306
0.0.0.0:* LISTEN
Из соображений безопасности этотпортможно отключить и использовать локальный сокет mysqLsock. Для этого добавим в секцию [mysqld] файла /etc/mysql/my.cnf директиву «skip-setworking» и перезапустим сервер: $ sudo /etc/init.d/mysql restart
Установка веб-сервера Apache довольно проста:
$ sudo apt-get install apache2
Теперь настала очередь РНР5. Не забываем модуль для работы с мускулом:
$ sudo apt-get install php5 libapache2-mod-php5
php5-mysql
Зависимости и остальные компоненты apt-get подхватывает самостоятельно. В большинстве случаев того, что есть, — достаточно. Хотя некоторые модули веб-сервера по умолчанию не подключаются. Список всех доступных модулей можно получить, введя:
$ sudo a2enmod
Как вариант, просто смотрфим листинг каталога /etc/apache2/mods-available. Чтобы сделать активным любой из модулей, следует создать символическую ссылку в подкаталог/etc/apache2/mods-enabled (что, собственно, и делает команда a2enmod). Давай посмотрим, что собой представляют файлы, отвечающие за поддержку РНР:
$ cat /etc/apache2/mods-available/php5.conf
<IfModule mod_php5 .о
AddType application/x-httpd-php .php .phtml
.php3
AddType application/x-httpd-php-source .phps
</IfModule>
$ cat /etc/apache2/mods-available/php5.load
LoadModule php5_module /usr/lib/apache2/
modules/libphp5.so
Если используется другой дистрибутив, или связка Apache + РНР5 собиралась вручную, обязательно проследи, чтобы в /etc/apache2/httpd. conf (apache2 .conf) присутствовали эти cтроки. Модуль для работы РНР уже активирован:
$ sudo a2enmod php5
This module already enabled.
Для некоторых задач могут потребоваться дополнительные модули РНР (список пакетов php5-*, доступных в репозитарии. можно получить, введя «sudo apt-cache search php5»
l:
$ sudo apt-get install php5-gd php5-imagick
php5-pspell php5-recode php5-xmlrpc php5-xsl
php5-mcrypt php5-memcache php5-curl php-pear
php5-imap php5-snmp
Перезапускаем веб-сервер:
$ sudo /etc/init.d/apache2 reload
Набираем в браузере строку http: //localhost, — в ответ мы должны увидеть надпись«works !». Чтобы проверить работу РНР, создаем файл test .php и пробуем к нему обратиться:
$sudo echo ‘ <?phpinf о () ?>’ >
/var/www/test.php
$ lynx http://localhost/test.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.
$sudo папо etc/apache2/conf.d/fqdn
ServerName web. server. com
Поддержка MySQL в PHP обеспечивается наличием в каталоге /etc/php5/apache2/conf.d файлов mysql.ini и mysqli.ini. Каждый состоит всего из одной строки. В mysql.ini содержится запись «extension=mysql . so», а в mysqli . ini — «extension=mysqli . so». Если эти файлы в твоем дистрибутиве отсутствуют — не беда. Просто сними соответствующие комментарии в php. ini:
$ sudo nano/etc/php5/apache2/php.ini; Максимальный размер загружаемого файла. Вспомни о нем, когда WordPress откажется понимать файл большего размера. upload_max_filesize = 6М
Подключение модулей для работы с MySQL
extension=raysql. so
extension=mysqli.so
Безопасный режим запрещает скриптам производить любые действия, которые являются небезопасными для Web-сервера (будь внимателен, не все CMS его любят)
safe_mode-on
Перечень функций, использование которых запрещено в пользовательских скриптах
disable_functions-system.exec
Вообще, параметров в php.ini довольно много. Советую уделить время их изучению.
НАСТРОЙКА ВИРТУАЛЬНЫХ ХОСТОВ
Веб-сервер Apache разрешает использовать несколько вариантов выделения пользователям места под собственный веб-сайт. Самый простой — это подкаталоге корне веб-сервера. Например, создаем каталог /var/www/sitel. Теперь к нему можно обратиться как http://localhost/sitel. Но это не всегда удобно, ведь каждый сайт обычно имеет свое уникальное доменное имя.
Еще один вариант — разрешить пользователям, имеющим учетные записи в системе, самостоятельно создавать веб-ресурсы. Активировать та кую функциональность можно при помощи параметра UserDir. Вариантов тут, как обычно, несколько — чаще всего под веб-сервис используют подкаталог public_html в домашней директории пользователя. Заносим в apache2.conf строку: UserDir public_html. И подгружаем модуль userdir: $ sudo a2enmod userdir Эта команда соответствует добавлению в apache2 . conf таких строк:
LoadModule userdir_module /usr/lib/apache2/
modules/mod_userdir.so
<IfModule mod_userdir. c>
UserDir public_html
UserDir disabled root
<Directory /home/*/public_html>
AllowOverride Filelnfo AuthConf ig Limit
Options MultiViews Indexes SymLinksIf \
OwnerMatch IncludesHoExec
</Directory>
</IfModule>
Теперь любому пользователю достаточно создать ь своем домашнем каталоге поддиректорию public__html (mkdir -m 755 ~/public_html), и его содержимое будет доступно по адресу http://localhost/-user. Адрес можно сделать приятнее глазу, немного поэкспериментировав с UserDir (за детальным описанием и примерами обращайся к httpd.apache.orQ/docs/2.2/mod/mod userdir.html). И третий, самый популярный вариант— виртуальные хосты. В этом случае все узлы, висящие на одном IP (и одном Apache), будут иметь свое имя, по которому веб-сервер и определит, из какого каталога следует отдавать файл.
Управление виртуальными хостами в Apache организовано аналогичномодулям,—в/etc/apache2/ sites-available помещаем файл с описанием, а командой a2ensite с названием файла его включаем. Да, конечно, нам под силу описать всеузлы в apache2 .conf, но это не оченьудобно. Просмотрев список ссылок в sites-enabled, можно быстро узнать, сколько сейчас виртуальных серверов активно, и при необходимости легко включить или отключить любой из них.
В sites-available уже находится файл default, который описываетузел по умолчанию. Его можно использовать как шаблон (этот же узел будет отвечать, если к серверу обратиться по IP-адресу, а не по имени):
$ sudo ср /etc/apache2/sites-available/default
/etc/apache2/sites-available/server.com
$ sudo nano /etc/apache2/sites-available/server.com
HameVirtualHost server.com
• cVirtualHost server.com>
ServerAdmin webmaster@server.com
# Каталог виртуального хоста
DocumentRoot /var/www/server.com
<Directory /var/www/server.com>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
It Для CGI-скриптов
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory “/usr/lib/server.com/cgi-bin”>
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
# Журнал!-: событий
ErrorLog /var/log/apache2/error.log
LogLevel warn
CustomLog /var/log/apache2/access. log
ServerSignature On
</VirtualHost>
Смотрим, с правами какого пользователя работает веб-сервер (в Ubuntu эти данные вынесены в отдельный файл):
$ cat /etc/а pache2/envvars
export APACHE_RUN_USER=www-data
export APACHE_RUN__GROUP=www-data
Создаем каталог, в котором будут находиться файлы сервера, устанавливаем его владельцем учетную запись www-data и включаем новый сайт:
$ sudo mkdir /var/www/server. com
$ sudo chown www-data :www-data /var/www/server.com
$ sudo a2ensite server.com
При необходимости заносим данные об имени компьютера в /etc/hosts, перезапускаем веб-сервер и пробуем зайти на server.com.
ЗАКЛЮЧЕНИЕ
Мы получили полностью работоспособный веб-сервер с поддержкой РНР и MySQL, который можно использовать для хостинга, биллинга, форума или при разработке скриптов. Схему можно расширять: настроить поддержку SSL и квот, задействовать ModSecurity для защиты веб-приложений как от известных, так и еще неизвестных атак, установить Webalizer или AWStats для сбора и визуализации статистики. Тем, у кого мало опыта работы с MySQL, нeпoмeшaeтвeб-интepфeйcphpMyAdmin. Неплохо зарекомендовал себя и Webmin, позволяющий управлять всеми компонентами LAMP при помощи локализованного веб-интерфейса.
О записи
Вы читаете “Волшебная лампа админа,” в блоге SUPPORT | поддержка | настройка серверов | Аудит сайтов |
- Опубликовано:
- 07.03.09 / 2дп
- Рубрика:
- Настройка ОС
Комментариев нет
Оставить комментарий | comments rss [?] | трекбек [?]