Вы здесь

Идеальный сервер: настройка Ubuntu Gutsy Gibbon 7.10 Server для ISP и хостеров

Работаете администратором или инженером в провайдерской конторе? А может сами хотите начать свой бизнес в этой сфере? Вполне вероятно, что вам сильно поможет данное руководство.
Эта статья расскажет о подробной установке веб-сервера Apache (+SSL), почтового сервера Postfix (+ SMTP-AUTH и TLS), BIND DNS сервера, Proftpd FTP сервера, MySQL сервера, Courier POP3/IMAP, Quota, Firewall, и т.п.
Рассматривается установка на 32-х битную версию Ubuntu Server, для иных версий (x64, UltraSPARC) возможны небольшие отличия.

Используемое ПО:

  • веб-сервер: Apache 2.2
  • сервер баз данных: MySQL 5.0
  • почтовый сервер: Postfix
  • DNS сервер: BIND9
  • FTP сервер: proftpd
  • POP3/IMAP: используется формат Maildir с установкой Courier-POP3/Courier-IMAP.
  • Webalizer для статистики

В итоге, вы получите надежную работающую систему, и сможете поверх нее установить бесплатную систему для удаленного управления веб-хостингом ISPConfig.
Для установки нам нужен CD с Ubuntu Server 7.10 x86 и хорошее соединение с интернетом.
В статье будет использовано имя хоста server1.example.com с IP-адресом 192.168.0.100 и шлюзом 192.168.0.1.

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

Шаги установки, на которых система будет требовать от вас действий:

  1. Ставим диск с Ubuntu Server 7.10 x86 и загружаемся с него.
  2. Перед началом установки выбираем опцию F2 и выбираем русский язык.
  3. Выбираем “Установить на жесткий диск”.
  4. Выбираем способ переключения языковой раскладки (у меня например Alt+Shift).
  5. Вводим имя компьютера.
  6. Разметка диска (Авто - использовать весь диск), либо на ваше усмотрение.
  7. Выбрать диск для разметки (если их несколько, выберите нужный).
  8. Подтверждаем изменения на диске.
  9. Выбираем часовой пояс.
  10. Указываем, что системные часы показывают UTC.
  11. Заводим учетную запись пользователя с административными привелегиями.
  12. Забиваем и подтверждаем пароль для этого пользователя.
  13. Выбираем какие пакеты мы поставим. ВНИМАНИЕ: нужно выбрать только OpenSSH.
  14. Завершаем установку, вынимаем диск, перезагружаемся.

После перезагрузки, заходим в систему под тем пользователем и паролем, который мы создали.

Дальнейшая работа будет происходить под суперпользователем root, для этого зададим ему пароль:

 

указываем пароль для него и начинаем работать уже из-под root

 

если вы вдруг не поставили OpenSSH сервер во время установки, это можно исправить установив его сейчас

 

после этого можно вообще отключить от этой машины монитор, клаву и мышь, и работать удаленно по сети, например через Putty, чтобы не забивать ручками, а просто копировать информацию для конфигов прямо из этого руководства :)
В оригинале статьи автор использует консольный редактор vim, я предлагаю начинающим использовать ee (easy editor), а бывалые пользователи пусть используют, что им по вкусу.
Ставим ee:

 

Настраиваем сеть:
По умолчанию установщик сконфигурировал наш сетевой интерфейс на получение настроек по DHCP, но наш сервер должен иметь статический IP-адрес, для этого надо поправить настройки в файле /etc/network/interfaces

vim /etc/network/interfaces

Пример файла конфигурации (тут вам надо использовать уже ваши данные, вместо примера данных, описывающих iface eth0 inet static, то есть укажите ваш адрес, маску сети, сеть и броадкаст):

 

Указали свои данные? Сохраните файл и перезапустите сеть:

 

Затем поправьте файл /etc/hosts

 

Он должен выглядеть примерно так (только с вашими данными):

 

Теперь выполните

 

Затем:

 

Обе команды должны вывести server1.example.com (или то имя, которое указали вы)
Правим файл /etc/apt/sources.list и проводим апдейт для нашей системы

 

Закомментируем или удалим ссылки на установочный CD из этого файла и удостоверимся, что репозитории universe и multiverse доступны, т.е. файл будет выглядеть примерно так:

 

Затем запускаем обновление базы данных ПО:

 

и устанавливаем последние обновления (если они есть):

 

Теперь нам необходимо сменить шелл, поскольку иначе мы не сможем установить ISPConfig.
/bin/sh это символическая ссылку на /bin/dash, а нам нужно /bin/bash, а не /bin/dash
Поправляем это таким образом:

 

Теперь нам нужно установить кое-какие пакеты, которые нам потребуются в дальнейшем.

 

Внимание: эта команда идет одной строкой!
Настройка квот.
Если вы сделали разметку своего диск как-то по своему, то вам придется применять квотирование к тем разделам где это вам нужно.
Установим:

 

Поправим /etc/fstab. Мой выглядит так(я добавил usrquota, grpquota к основному разделу с точкой монтирования /):

 
 

Для активации квоты выполните:

 

Настройка DNS
Выполните:

 

Про соображениям безопасности BIND надо запускать через chroot:

 

Правим файл /etc/default/bind9 так, чтобы демон запускался как непривелигированный пользователь bind, с chroot в /var/lib/named. Поправьте строку: OPTIONS=”-u bind” на OPTIONS=”-u bind -t /var/lib/named”:

 
 

Создадим необходимые директории в /var/lib:

 

Переместим директорию с конфигами из /etc в /var/lib/named/etc:
 
Создадим символическую ссылку на новую директорию с конфигами ( чтобы не было проблем с обновлением bind в дальнейшем):

 

Создадим null и random устройства, исправим разрешения для директорий:

 

Изменим /etc/default/syslogd чтобы мы могли получать важные сообщения в логах
Исправьте строку: SYSLOGD=”" на эту SYSLOGD=”-a /var/lib/named/dev/log”:

 
 

Перезапускаем демон логов:

 

Запускаем BIND, и проверяем /var/log/syslog на ошибки:

 

MySQL
Устанавливаем пакет:

 

Вас спросят ввести пароль для root пользователя MySQL - этот пароль будет использоваться как для пользователя root@localhost , так и для root@server1.example.com, так что нам не придется указывать пароль для рута MySQL позже(как это было в предыдущих версиях):

New password for the MySQL “root” user: введите-свой-пароль
Нам нужно чтобы MySQL слушал на других интерфейсах, а не только на localhost, для этого правим /etc/mysql/my.cnf и закомментируем строку _bind-address = 127.0.0.1_:

 
 

Затем перезапускаем MySQL:

 

Проверьте, что MySQL доступен для сети:

 

Вывод должен быть примерно таким:

 

Postfix с SMTP-AUTH и TLS
По шагам:

 

Вам зададут два вопроса, отвечать надо примерно так:
General type of mail configuration: <– Internet Site
System mail name: <– server1.example.com
затем запустите

 

И опять ответьте на вопросы:

 

Затем, сделайте следующее:

 

После этого создадим сертификаты для TLS:

 

И сконфигурируем Postfix для TLS (удостоверьтесь, что вы используете правильное имя компьютера для myhostname):

 

теперь файл /etc/postfix/main.cf должен выглядеть примерно так:

 

Перезапускаем Postfix:

 

Аутентификация будет производится saslauthd. Нужно кое-что изменить, чтобы это работало как надо.
Поскольку Postfix работает через chroot в /var/spool/postfix мы делаем так:

 

Теперь мы правим /etc/default/saslauthd для того чтобы активировать saslauthd.
Установите START значение yes и измените строку OPTIONS=”-c” на OPTIONS=”-c -m /var/spool/postfix/var/run/saslauthd -r”:

 
 

Теперь запускаем saslauthd:

 

Чтобы удостоверится, что SMTP-AUTH и TLS работают правильно, проверим так:

 

После соединения с Postfix наберите:

 

Если вы увидети строки:

 

и

 

значит все в порядке
Вывод на моей системе выглядел так:

 

Courier-IMAP/Courier-POP3
Устанавливаем Courier-IMAP/Courier-IMAP-SSL (для IMAP на порту 993) и Courier-POP3/Courier-POP3-SSL (для POP3 на порту 995):

 

Вам зададут вопросы:

 

Если вы не захотите использовать систему управления ISPConfig, сконфигурируйте Postfix на доставку почты в Maildir* пользователя:

 

Обратите внимание: вам не надо этого делать, если вы будете использовать ISPConfig, поскольку он сам выполнит необходимое конфигурирование. При этом, вам лучше убедится в этом самостоятельно - удостоверьтесь что Maildir задействован в Management -> Server -> Settings -> EMail (в веб-интерфейсе ISPConfig).
Apache/PHP5
Ставим Apache:

 

Затем PHP5:

 

Отвечаем на вопрос:

 

Далее правим /etc/apache2/mods-available/dir.conf:

 

Правим строку DirectoryIndex (в IfModule mod_dir.c):

 

Теперь надо активировать некоторые модули Apache (SSL, rewrite, suexec и include):

 

Перезагружаем конфигурацию Apache:

 

Отключаем глобальную работу PHP (если вы не планируете установку ISPConfig пропустите этот раздел!)
В ISPConfig вы сконфигурируете PHP под каждый веб-сайт, т.е. укаже кто может использовать скрипты PHP, а кто нет. Это можно сделать только при отключении глобальной работы PHP, потому что иначе все вебсайты смогут запускать скрипты PHP, несмотря на установки в ISPConfig.
Для отключения мы правим /etc/mime.types и закомментируем строки application/x-httpd-php:

 
 

Правим /etc/apache2/mods-enabled/php5.conf и закомментируем следующие строки в IfModule mod_php5.c:

 
 

Перезагружаем Apache:

 

Proftpd
Устанавливаем:

 

Отвечаем на вопрос:

 

Открываем /etc/proftpd/proftpd.conf и отклбчаем UseIPv6 (off); иначе будем получать предупреждения:

 

или можно поправить /etc/hosts and add server1.example.com (добавив строку ::1):

 

или изменить /etc/proftpd/proftpd.conf:

 

По соображениям безопасности нужно добавить следуюшие строки в /etc/proftpd/proftpd.conf (спасибо Reinaldo Carvalho; подробности "здесь":http://proftpd.org/localsite/Userguide/linked/userguide.html ):

 
 

ISPConfig ищет конфиг в /etc/proftpd.conf вместо /etc/proftpd/proftpd.conf, поэтому создадим символическую ссылку (можете пропустить этот шаг если вы не будете ставить ISPConfig):

 

Затем перезапустим Proftpd:

 

Webalizer
Просто ставим его:

 

Синхронизируем системные часы
Через сервер NTP(network time protocol), достаточно установить:

 

И все, часы будут синхронизированы.
Поставим некоторые модули Perl, которые потребуются SpamAssassin (который идет с ISPConfig):

 

ISPConfig
Поскольку конфигурирование нашего сервера завершено, теперь вы можете поставить на него систему управления ISPConfig, работающую через веб-интерфейс. Мануал по ее установке "здесь":http://www.ispconfig.org/manual_installation.htm

Обратите внимание на SuExec
Если вы хотите запускать CGI скрипты под suExec, вам нужно указать /var/www в качестве домашней директории для вебсайтов создаваемых через ISPConfig в то время как Ubunt-овый suExec скомпилирован с /var/www в качестве Doc_Root.
Выполните:

 

Вывод будет примерно таким:

 

Так что если вы будете использовать suExec с ISPconfig, не меняйте значения web-пути по умолчанию (т.е. оставьте /var/www) если вы работает в expert mode, когда будете устанавливать ISPConfig (в standard mode вы в любом случае этот путь поменять не сможете).

Оригинал статьи: http://www.xima4.com/?p=236.