Идеальный сервер - Ubuntu 10.10 [ISPConfig 2]

Звезда не активнаЗвезда не активнаЗвезда не активнаЗвезда не активнаЗвезда не активна
 

UbuntuISPconfig 2 бесплатная панель с большими возможностями теперь и на Ubuntu server 10.10. В этом материале показано, как настроить Ubuntu Maverick Meerkat (Ubuntu 10.10) server, который предлагает все услуги, необходимые интернет-провайдерам и хостерам: веб-сервер Apache (SSL-совместимых), Postfix почтовый сервер с SMTP-AUTH и TLS, BIND DNS сервера, Proftpd FTP-сервер, сервер MySQL, Courier POP3/IMAP, квоты, брандмауэр и так далее. В конечном варианте Вы получите надежную систему, с установленной бесплатной панель управления веб-хостингом ISPConfig 2.

Обратите внимание, что эта установка не применима для ISPConfig 3! Это справедливо только для ISPConfig 2! Я буду использовать следующее программное обеспечение:

  • Веб-сервер: Apache 2.2.16 PHP 5.3.3 с, Python, Ruby, и WebDAV
  • Сервер баз данных: MySQL 5.1.49
  • Почтовый сервер: Postfix
  • DNS-сервер: bind9
  • FTP-сервер: ProFTPD
  • POP3/IMAP: Я буду использовать Maildir формат и, следовательно, установлю Courier-POP3/Courier-IMAP.
  • Webalizer для статистики сайта

Это не единственный способ создания такой системы. Есть много способов достижения этой цели, это всего лишь один из них.

Требования для установки ISPconfig 3

  • Ubuntu 10,10 сервера компакт-диск
  • Быстрое подключение к Интернету.

Предварительные замечания

В данной статье я использую имя хоста server1.example.com с IP-адреса 192.168.0.100 и шлюз 192.168.0.1. Эти параметры могут отличаться в Вашем случае, поэтому придется заменить их при необходимости.

Базовая система Ubuntu server 10.10

Вставьте установочный диск Ubuntu в вашу систему и загрузиться с него. Выберите язык:

ubuntu-server-10.10_1

Затем выберите Установить Ubuntu Server:

ubuntu-server-10.10_2

Затем выберите ваше местоположение:

ubuntu-server-10.10_3

ubuntu-server-10.10_4

Выберите раскладку клавиатуры (если Вы выбрали не определять раскладку клавиатуры, то Вам будет предложено нажать несколько клавиш, и программа установки попытается определить раскладку клавиатуры, основанную на ключах нажатии):

ubuntu-server-10.10_5

Установщик проверяет установочный компакт-диск, оборудовании и конфигурирует сеть с DHCP, если есть DHCP-сервера в сети.


Введите имя хоста. В этом примере, моя система называется server1.example.com, так что я ввожу server1:

ubuntu-server-10.10_6

Пожалуйста, проверьте установленный часовой пояс. Если согласны, выберите Да, в противном случае нет:

ubuntu-server-10.10_7

Теперь Вам предлагается выбрать жесткой диск. Для простоты я выбираю Авто - использовать весь диск и настроить LVM - это создаст группу томов с двумя логическими томами, один для файловой системы, а другой для подкачки (разумеется, разметка полностью зависит от Вас - если Вы знаете, что делать, Вы можете создать свои разделы вручную).

ubuntu-server-10.10_8

Выберите диск, который вы хотите разбить:

ubuntu-server-10.10_9

Когда вас попросят внести изменения на диски и настроить LVM, выберите Да:

ubuntu-server-10.10_10

Если вы выбрали Авто - использовать весь диск и настроить LVM, разметки будет создана одна большая группа томов, используя все дисковое пространство. Теперь Вы можете указать, сколько дискового пространства, должно быть использовано на логические тома для и подкачку. Имеет смысл оставить некоторое пространство неиспользованным, что бы в дальнейшем можно было расширить существующие логические тома или создавать новые.

ubuntu-server-10.10_11

По окончанию нажмите Да, на вопрос о записи изменений на диск:

ubuntu-server-10.10_12

После этого ваши новые разделы создаются и форматируются. И начнется установка базовой системы. Создайте пользователя, например Administrator с именем пользователя Administrator (не используйте имя пользователя Admin, так как это зарезервированное имя на Ubuntu 10,10):

ubuntu-server-10.10_13

ubuntu-server-10.10_14

ubuntu-server-10.10_15

Мне не нужно зашифровывать домашний каталог, так что я выбираю нет:

ubuntu-server-10.10_16

Следующая настройка менеджера пакетов APT. Так как у меня нет Proxy сервера я оставляю поле пустым:

ubuntu-server-10.10_17

Что бы иметь больше контроля, поэтому я выбираю не автоматическое обновление. Конечно, это зависит от Вас, что Вы выберите здесь:

ubuntu-server-10.10_18

Мы должны установить DNS, почтовый и LAMP сервера, но тем не менее я не выбираю их, потому что, я хотел бы иметь полный контроль над установленым на моей системе. Мы установим необходимые пакеты вручную позже. Единственное, я выбираю здесь OpenSSH сервер для того что бы я мог сразу же подключиться к системе с SSH клиент, такой как PuTTY после завершения установки:

ubuntu-server-10.10_19

Установка продолжается. Выберите Да, когда Вас попросят установить загрузчик GRUB в главную загрузочную запись:

ubuntu-server-10.10_20

Базовая установка системы в настоящее время закончена. Извлеките установочный компакт - диск из дисковода и нажмите Продолжить для перезагрузки системы:

ubuntu-server-10.10_21


Активация root

После перезагрузки вы можете Войти с ранее созданное имя пользователя (например Administrator). Потому что мы должны выполнить все шаги из этого учебника с привилегиями суперпользователя root, для этого активируем его (Вы можете воспользоваться sudo su или sudo passwd root):

переключение на пользователя root (1 команда)

  • sudo su

Если хотите что каждый раз не активировать пользователя root выполните следующее:

Активируем суперпользователя root (1 команда)

  • sudo passwd root

Таким образом Вы можете входить непосредственно как root, но по различным причинам не это не одобрено разработчиками и сообществом Ubuntu.

Установка SSH-сервера (необязательно)

Если Вы не установите OpenSSH сервер во время базовой установки системы, можете сделать это сейчас:

Запуск SSH (1 команда)

  • aptitude install ssh openssh-server

С этого момента Вы можете использовать SSH клиент, такой как PuTTY что бы связать Вашу рабочую станцию с вашим сервером на Ubuntu server 10.10 и выполните продолжить установку ISPConfig 3.

Настройка сети

Поскольку установка Ubuntu настроила систему, на получение настроек сети через DHCP, то сейчас мы должны изменить, что бы сервер имел статический IP-адрес. Отредактируем /etc/network/interfaces и настроим его под свои нужды (в данном примере установки я буду использовать IP-адрес 192.168.0.100):

Настроим сеть (1 команда)

  • nano /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet static
        address 192.168.0.100
        netmask 255.255.255.0
        network 192.168.0.0
        broadcast 192.168.0.255
        gateway 192.168.0.1

Перезапустим сеть и отредактируем hosts (1 команда)

  • /etc/init.d/networking restart
  • nano /etc/hosts
127.0.0.1       localhost.localdomain   localhost
192.168.0.100   server1.example.com     server1

# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

Запустим новые:

Перезапустим сеть и отредактируем hosts (1 команда)

  • echo server1.example.com > /etc/hostname
  • /etc/init.d/hostname restart

Проверим наши настройки:

Перезапустим сеть и отредактируем hosts (1 команда)

  • hostname
  • hostname -f

Обе команды должны сослаться на server1.example.com

Обновим Ubuntu server 10.10

Отредактируем /etc/apt/sources.list

Отредактируем sources.list (1 команда)

  • nano /etc/apt/sources.list

Здесь необходимо раскомментировать universe и multiverse репозитории. Файл должен выглядеть следующим образом:

#
# deb cdrom:[Ubuntu-Server 10.10 _Maverick Meerkat_ - Release i386 (20101007)]/ maverick main restricted

#deb cdrom:[Ubuntu-Server 10.10 _Maverick Meerkat_ - Release i386 (20101007)]/ maverick main restricted
# See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to
# newer versions of the distribution.

deb http://de.archive.ubuntu.com/ubuntu/ maverick main restricted
deb-src http://de.archive.ubuntu.com/ubuntu/ maverick main restricted

## Major bug fix updates produced after the final release of the
## distribution.
deb http://de.archive.ubuntu.com/ubuntu/ maverick-updates main restricted
deb-src http://de.archive.ubuntu.com/ubuntu/ maverick-updates main restricted

## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu
## team. Also, please note that software in universe WILL NOT receive any
## review or updates from the Ubuntu security team.
deb http://de.archive.ubuntu.com/ubuntu/ maverick universe
deb-src http://de.archive.ubuntu.com/ubuntu/ maverick universe
deb http://de.archive.ubuntu.com/ubuntu/ maverick-updates universe
deb-src http://de.archive.ubuntu.com/ubuntu/ maverick-updates universe

## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu
## team, and may not be under a free licence. Please satisfy yourself as to
## your rights to use the software. Also, please note that software in
## multiverse WILL NOT receive any review or updates from the Ubuntu
## security team.
deb http://de.archive.ubuntu.com/ubuntu/ maverick multiverse
deb-src http://de.archive.ubuntu.com/ubuntu/ maverick multiverse
deb http://de.archive.ubuntu.com/ubuntu/ maverick-updates multiverse
deb-src http://de.archive.ubuntu.com/ubuntu/ maverick-updates multiverse

## Uncomment the following two lines to add software from the 'backports'
## repository.
## N.B. software from this repository may not have been tested as
## extensively as that contained in the main release, although it includes
## newer versions of some applications which may provide useful features.
## Also, please note that software in backports WILL NOT receive any review
## or updates from the Ubuntu security team.
# deb http://de.archive.ubuntu.com/ubuntu/ maverick-backports main restricted universe multiverse
# deb-src http://de.archive.ubuntu.com/ubuntu/ maverick-backports main restricted universe multiverse

## Uncomment the following two lines to add software from Canonical's
## 'partner' repository.
## This software is not part of Ubuntu, but is offered by Canonical and the
## respective vendors as a service to Ubuntu users.
# deb http://archive.canonical.com/ubuntu maverick partner
# deb-src http://archive.canonical.com/ubuntu maverick partner

## Uncomment the following two lines to add software from Ubuntu's
## 'extras' repository.
## This software is not part of Ubuntu, but is offered by third-party
## developers who want to ship their latest software.
# deb http://extras.ubuntu.com/ubuntu maverick main
# deb-src http://extras.ubuntu.com/ubuntu maverick main

deb http://security.ubuntu.com/ubuntu maverick-security main restricted
deb-src http://security.ubuntu.com/ubuntu maverick-security main restricted
deb http://security.ubuntu.com/ubuntu maverick-security universe
deb-src http://security.ubuntu.com/ubuntu maverick-security universe
deb http://security.ubuntu.com/ubuntu maverick-security multiverse
deb-src http://security.ubuntu.com/ubuntu maverick-security multiverse

Запустим процесс обновления и перезагрузим систему

Обновление и перезапуск Ubuntu server (3 команды)

  • aptitude update
  • aptitude safe-upgrade
  • reboot

Изменение оболочки по умолчанию

Если Вы не сделаете этого, установить ISPConfig не получиться. Так как /bin/sh является символичной ссылкой на /bin/dash , Однако нам надо /bin/bash, а не /bin/dash. Поэтому мы выполним следующее:

Переконфигурируем dash (1 команда)

  • dpkg-reconfigure dash

На вопрос установки dash как /bin/sh отвечаем No

Отключим AppArmor

AppArmor является модулем безопасности (аналог SELinux), который должен обеспечить расширенную безопасность. На мой взгляд, Вам не нужно настраивать безопасность системы, обычно это вызывает больше проблем, чем преимуществ. Поэтому я советую отключить его (это необходимо, если вы хотите установить ISPConfig позже).

Отключение AppArmor (3 команды)

  • /etc/init.d/apparmor stop
  • update-rc.d -f apparmor remove
  • aptitude remove apparmor apparmor-utils

Синхронизация системных часов

Это хорошая идея, чтобы синхронизировать системные часы с NTP Network TIME рrotocol) сервером через Интернет. Просто запустите:

Автоматическая синхронизация времени (1 команда)

  • aptitude install ntp ntpdate

Установка некоторых программ

Теперь установим несколько пакетов, которые необходимы нам в дальнейшем:

Автоматическая синхронизация времени (1 команда)

  • aptitude install binutils cpp fetchmail flex gcc libarchive-zip-perl libc6-dev libcompress-zlib-perl libdb4.6-dev libpcre3 libpopt-dev lynx m4 make ncftp nmap openssl perl perl-modules unzip zip zlib1g-dev autoconf automake1.9 libtool bison autotools-dev g++ build-essential

Журналирование квоты

Если вы выбрали другую схему разбиения диска, нежели у меня, то здесь Вы должны настроить квоту так чтобы она распространялась на разделы, где это необходимо.·Изменить /etc/fstab. Отредактировав файл fstab для этого необходимо в строке после слова errors=remount-ro добавить ,usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0 как показано ниже:

Установим и отредактируем /etc/fstab (1 команда)

  • aptitude install quota
  • nano /etc/fstab
# /etc/fstab: static file system information.
#
# Use 'blkid -o value -s UUID' to print the universally unique identifier
# for a device; this may be used with UUID= as a more robust way to name
# devices that works even if disks are added and removed. See fstab(5).
#
#                
proc            /proc           proc    nodev,noexec,nosuid 0       0
/dev/mapper/server1-root /               ext4    errors=remount-ro,usrjquota=quota.user,grpjquota=quota.group,jqfmt=vfsv0 0       1
# /boot was on /dev/sda1 during installation
UUID=a8f37dcf-5836-485c-a451-3ae2f0f47720 /boot           ext2    defaults        0       2
/dev/mapper/server1-swap_1 none            swap    sw              0       0
/dev/fd0        /media/floppy0  auto    rw,user,noauto,exec,utf8 0       0

Включим квоту, выполнив команды:

Запуск квоты (3 команды)

  • mount -o remount /
  • quotacheck -avugm
  • quotaon -avug

DNS-сервер

BIND может быть установлен следующим образом:

Установка BIND (1 команда)

  • aptitude install bind9

По соображениям безопасности мы хотим запустить BIND изолированный поэтому мы выполним следующие шаги:

Остановим и настроим BIND (2 команда)

  • /etc/init.d/bind9 stop
  • nano /etc/default/bind9

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

# run resolvconf?
RESOLVCONF=yes

# startup options for the server
OPTIONS="-u bind -t /var/lib/named"

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

Остановим и настроим BIND (2 команда)

  • mkdir -p /var/lib/named/etc
  • mkdir /var/lib/named/dev
  • mkdir -p /var/lib/named/var/cache/bind
  • mkdir -p /var/lib/named/var/run/bind/run

Затем переместим каталог конфигурации из /etc в /var/lib/named/etc:

Переместим каталог конфигурации (1 команда)

  • mv /etc/bind /var/lib/named/etc

Создадим символические ссылки на новые конфигурации каталога из старого места (чтобы избежать проблем при связывают обновленных в будущем):

Создаем ссылку (1 команда)

  • ln -s /var/lib/named/etc/bind /etc/bind

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

Создаем устройства и правим разрешения (5 команд)

  • mknod /var/lib/named/dev/null c 1 3
  • mknod /var/lib/named/dev/random c 1 8
  • chmod 666 /var/lib/named/dev/null /var/lib/named/dev/random
  • chown -R bind:bind /var/lib/named/var/*
  • chown -R bind:bind /var/lib/named/etc/bind

Нам нужно создать файл /etc/rsyslog.d/bind-chroot.conf ...

Правим файл bind-chroot.conf (5 команд)

  • nano /etc/rsyslog.d/bind-chroot.conf

... и добавьте следующее, что бы мы могли получать важные сообщения записывающиеся в системный журнал:

$AddUnixListenSocket /var/lib/named/dev/log

Перезагрузите протоколирования, Запуск BIND, и проверить /var/log/syslog на наличие ошибок:

Проверка работоспособности (2 команды)

  • /etc/init.d/rsyslog restart
  • /etc/init.d/bind9 start

MySQL

Для установки MySQL, мы запускаем:

Установка MySQL (1 команда)

  • aptitude install mysql-server mysql-client libmysqlclient16-dev

Вам будет предложено ввести пароль для пользователя MySQL root - это пароль действителен для пользователей root@localhost , а также Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра., поэтому мы не должны указать пароль администратора MySQL позже вручную :

  • Новый пароль для MySQL "корень" Пользователь: - Ваш пароль на MySQL
  • Повторите пароль для MySQL "корень" Пользователь: - повторите Ваш пароль на MySQL

Мы хотим, чтобы MySQL слушать на всех интерфейсах, а не только локальный, поэтому мы редактируем / и т.д. / MySQL / my.cnf и закомментируйте строку привязки-адрес = 127.0.0.1:

Редактируем MySQL (1 команда)

  • nano /etc/mysql/my.cnf
[...]
#
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
#bind-address           = 127.0.0.1
[...]

Перезапустим MySQL (1 команда)

  • /etc/init.d/mysql restart

Следующая команда покажет правильность нашей настройки

Убедимся, что сеть работает (1 команда)

  • netstat -tap | grep mysql

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

root@server1:~# netstat -tap | grep mysql
tcp        0      0 *:mysql                 *:*                     LISTEN      6796/mysqld
root@server1:~#

Postfix с SMTP-AUTH и TLS

Для того чтобы установить Postfix с SMTP-AUTH и TLS выполним следующие шаги:

Установим postfix libsasl2-2 sasl2-bin libsasl2-modules procmail (1 команда)

  • aptitude install postfix libsasl2-2 sasl2-bin libsasl2-modules procmail

Вам будет предложено два вопроса. Ответим на них следующим образом:

  • Общий тип настройка почты: - Интернет-сайт
  • Система почты имя: - server1.example.com

Затем выполним:

Перенастройка postfix (1 команда)

  • dpkg-reconfigure postfix
  • Общий тип настройка почты: - Интернет-сайта
  • Система почты имя: - server1.example.com
  • Корневые и почты получателя почтмейстер: - [пробел]
  • Другие направления принимать почту (пусто, нет): - server1.example.com, localhost.example.com, localhost.localdomain, локальный
  • Группа синхронного обновления почтовой очереди? - нет
  • Локальные сети: - 127.0.0.0 / 8 [:: FFFF: 127.0.0.0] / 104 [:: 1] / 128
  • Используйте Procmail для локальной доставки? - Да
  • Почтовый ящик предельный размер (байт): - 0
  • Локальный характер расширения адрес: - +
  • Интернет-протоколов для использования: - все

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

Настройка SMTP (9 команд)

  • postconf -e 'smtpd_sasl_local_domain ='
  • postconf -e 'smtpd_sasl_auth_enable = yes'
  • postconf -e 'smtpd_sasl_security_options = noanonymous'
  • postconf -e 'broken_sasl_auth_clients = yes'
  • postconf -e 'smtpd_sasl_authenticated_header = yes'
  • postconf -e 'smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination'
  • postconf -e 'inet_interfaces = all'
  • echo 'pwcheck_method: saslauthd' >> /etc/postfix/sasl/smtpd.conf
  • echo 'mech_list: plain login' >> /etc/postfix/sasl/smtpd.conf

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

Создаем сертификаты TLS (9 команд)

  • mkdir /etc/postfix/ssl
  • cd /etc/postfix/ssl/
  • openssl genrsa -des3 -rand /etc/hosts -out smtpd.key 1024
  • chmod 600 smtpd.key
  • openssl req -new -key smtpd.key -out smtpd.csr
  • openssl x509 -req -days 3650 -in smtpd.csr -signkey smtpd.key -out smtpd.crt
  • openssl rsa -in smtpd.key -out smtpd.key.unencrypted
  • mv -f smtpd.key.unencrypted smtpd.key
  • openssl req -new -x509 -extensions v3_ca -keyout cakey.pem -out cacert.pem -days 3650

Далее настроить Postfix для TLS (убедитесь, что вы используете правильные имя хоста для myhostname):

Создаем сертификаты TLS (12 команд)

  • postconf -e 'myhostname = server1.example.com'
  • postconf -e 'smtpd_tls_auth_only = no'
  • postconf -e 'smtp_use_tls = yes'
  • postconf -e 'smtpd_use_tls = yes'
  • postconf -e 'smtp_tls_note_starttls_offer = yes'
  • postconf -e 'smtpd_tls_key_file = /etc/postfix/ssl/smtpd.key'
  • postconf -e 'smtpd_tls_cert_file = /etc/postfix/ssl/smtpd.crt'
  • postconf -e 'smtpd_tls_CAfile = /etc/postfix/ssl/cacert.pem'
  • postconf -e 'smtpd_tls_loglevel = 1'
  • postconf -e 'smtpd_tls_received_header = yes'
  • postconf -e 'smtpd_tls_session_cache_timeout = 3600s'
  • postconf -e 'tls_random_source = dev:/dev/urandom'

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

# See /usr/share/postfix/main.cf.dist for a commented, more complete version


# Debian specific:  Specifying a file name will cause the first
# line of that file to be used as the name.  The Debian default
# is /etc/mailname.
#myorigin = /etc/mailname

smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
biff = no

# appending .domain is the MUA's job.
append_dot_mydomain = no

# Uncomment the next line to generate "delayed mail" warnings
#delay_warning_time = 4h

readme_directory = no

# TLS parameters
smtpd_tls_cert_file = /etc/postfix/ssl/smtpd.crt
smtpd_tls_key_file = /etc/postfix/ssl/smtpd.key
smtpd_use_tls = yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

# See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for
# information on enabling SSL in the smtp client.

myhostname = server1.example.com
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = server1.example.com, localhost.example.com, localhost.localdomain, localhost
relayhost =
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_command = procmail -a "$EXTENSION"
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
inet_protocols = all
smtpd_sasl_local_domain =
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
smtpd_sasl_authenticated_header = yes
smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination
smtpd_tls_auth_only = no
smtp_use_tls = yes
smtp_tls_note_starttls_offer = yes
smtpd_tls_CAfile = /etc/postfix/ssl/cacert.pem
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
tls_random_source = dev:/dev/urandom

Аутентификация будет сделано saslauthd. Мы должны изменить несколько вещей, чтобы заставить ее работать должным образом. Поскольку Postfix работает изолированной в /var/spool/postfix мы должны сделать следующее:

Редактируем saslauthd (1 команда)

  • nano /etc/default/saslauthd
#
# Settings for saslauthd daemon
# Please read /usr/share/doc/sasl2-bin/README.Debian for details.
#

# Should saslauthd run automatically on startup? (default: no)
START=yes

# Description of this saslauthd instance. Recommended.
# (suggestion: SASL Authentication Daemon)
DESC="SASL Authentication Daemon"

# Short name of this saslauthd instance. Strongly recommended.
# (suggestion: saslauthd)
NAME="saslauthd"

# Which authentication mechanisms should saslauthd use? (default: pam)
#
# Available options in this Debian package:
# getpwent  -- use the getpwent() library function
# kerberos5 -- use Kerberos 5
# pam       -- use PAM
# rimap     -- use a remote IMAP server
# shadow    -- use the local shadow password file
# sasldb    -- use the local sasldb database file
# ldap      -- use LDAP (configuration is in /etc/saslauthd.conf)
#
# Only one option may be used at a time. See the saslauthd man page
# for more information.
#
# Example: MECHANISMS="pam"
MECHANISMS="pam"

# Additional options for this mechanism. (default: none)
# See the saslauthd man page for information about mech-specific options.
MECH_OPTIONS=""

# How many saslauthd processes should we run? (default: 5)
# A value of 0 will fork a new process for each connection.
THREADS=5

# Other options (default: -c -m /var/run/saslauthd)
# Note: You MUST specify the -m option or saslauthd won't run!
#
# WARNING: DO NOT SPECIFY THE -d OPTION.
# The -d option will cause saslauthd to run in the foreground instead of as
# a daemon. This will PREVENT YOUR SYSTEM FROM BOOTING PROPERLY. If you wish
# to run saslauthd in debug mode, please run it by hand to be safe.
#
# See /usr/share/doc/sasl2-bin/README.Debian for Debian-specific information.
# See the saslauthd man page and the output of 'saslauthd -h' for general
# information about these options.
#
# Example for postfix users: "-c -m /var/spool/postfix/var/run/saslauthd"
#OPTIONS="-c -m /var/run/saslauthd"
OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd -r"

Затем добавьте в Postfix пользователя sasl группы (это гарантирует, что Postfix имеет разрешение на доступ к saslauthd):

Добавляем пользователя sasl (1 команда)

  • AddUser Postfix SASL

Теперь перезапустить Postfix и запустим saslauthd: (2 команды)

  • /etc/init.d/postfix restart
  • /etc/init.d/saslauthd start

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

Проверка Telnet: (1 команда)

  • telnet localhost 25
  • ehlo localhost

Вы увидите: 250-STARTTLS и 250-AUTH PLAIN LOGIN, значит все в порядке. На моей системе это выглядит так:

root@server1:/etc/postfix/ssl# telnet localhost 25
Trying ::1...
Connected to localhost.localdomain.
Escape character is '^]'.
220 server1.example.com ESMTP Postfix (Ubuntu)
ehlo localhost
250-server1.example.com
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-AUTH PLAIN LOGIN
250-AUTH=PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
quit
221 2.0.0 Bye
Connection closed by foreign host.
root@server1:/etc/postfix/ssl#

Возврат в системную оболочку: (1 команда)

  • quit

Courier-IMAP/Courier-POP3

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

Установка пакетов Courier-IMAP/Courier-POP3: (1 команда)

  • aptitude install courier-authdaemon courier-base courier-imap courier-imap-ssl courier-pop courier-pop-ssl courier-ssl gamin libgamin0 libglib2.0-0

Вам будет предложено два вопроса:

  1. Создание папок для веб-администрирования? - нет
  2. SSL сертификат требуется - Ok

Во время установки SSL сертификаты для IMAP-и POP3-SSL-SSL создаются с хоста локальный. Чтобы изменить это правильное имя хоста (server1.example.com в этом руководстве), удалим сертификаты ...

Удаление сертификатов + отредактируем imapd.cnf: (4 команды)

  • cd /etc/courier
  • rm -f /etc/courier/imapd.pem
  • rm -f /etc/courier/pop3d.pem
  • nano /etc/courier/imapd.cnf

... и изменить следующие два файла, заменить CN=localhost на CN=server1.example.com (вы можете также изменить другие значения, если это необходимо):

[...]
CN=server1.example.com
[...]

Отредактируем pop3d.cnf: (1 команда)

  • nano /etc/courier/pop3d.cnf
[...]
CN=server1.example.com
[...]

Пересоздадим сертификаты и перезапустим их: (4 команды)

  • mkimapdcert
  • mkpop3dcert
  • /etc/init.d/courier-imap-ssl restart
  • /etc/init.d/courier-pop-ssl restart

Apache/PHP5/Ruby/Python/WebDAV

Теперь мы установим Apache:

Необходимые пакеты Apache: (1 команда)

  • aptitude install apache2 apache2-doc apache2-mpm-prefork apache2-utils apache2-suexec libexpat1 ssl-cert

Далее установим PHP5, Ruby, и Python (все три в виде модулей Apache):

Установка PHP5, Ruby, и Python: (1 команда)

  • aptitude install libapache2-mod-php5 libapache2-mod-ruby libapache2-mod-python php5 php5-common php5-curl php5-dev php5-gd php5-idn php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-mhash php5-ming php5-mysql php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl

Изменим /etc/apache2/mods-available/dir.conf:

Редактируем dir.conf: (1 команда)

  • nano /etc/apache2/mods-available/dir.conf
<ifmodule>
          #DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm
          DirectoryIndex index.html index.htm index.shtml index.cgi index.php index.php3 index.pl index.xhtml
</ifmodule>

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

Редактируем dir.conf: (1 команда)

  • a2enmod ssl
  • a2enmod rewrite
  • a2enmod suexec
  • a2enmod include
  • a2enmod dav_fs
  • a2enmod dav

Перезапустим Apache:

Редактируем dir.conf: (1 команда)

  • /etc/init.d/apache2 restart

Мы должны исправить небольшие проблемы с Ruby. Если вы устанавливаете ISPConfig и разрешили Ruby для веб-сайта, .rbx файлов, будут выполняться штрафы и отображаются в браузере, но это не работает для .rb файлов - вам будет предложено загрузить .rb файлы - То же самое происходит, если настроить вручную для Ruby виртуальных хостов (то есть, это не имеет ничего общего с ISPConfig). Чтобы это исправить, мы открываем /etc/mime.types ...

Редактируем mime.types: (1 команда)

  • nano /etc/mime.types

... и закомментируйте application/x-ruby строку:

[...]
#application/x-ruby                             rb
[...]

Перезапускаем Apache: (1 команда)

  • /etc/init.d/apache2 restart

Сейчас .rb файлы, будут выполняться и отображаться в браузере, так же, как .rbx файлы.

В следующей главе мы собираемся отключить PHP (это необходимо, только если вы хотите установить ISPConfig на этом сервере). В отличие от PHP, Ruby и Python по умолчанию отключены, поэтому мы не должны делать это.

Отключение глобального PHP

В ISPConfig Вам необходимо настроить PHP отдельно для каждого сайта, т.е. вы можете указать, какие веб-сайты могут работать с PHP скриптами и какие не могут. Это работает только, если PHP отключена глобально, иначе все сайты будут иметь возможность запускать PHP скрипты, независимо от того, что вы указываете в ISPConfig.

Чтобы отключить глобальное PHP, мы отредактировать /etc/mime.types и закомментируйте application/x-httpd-php строки:

Редактируем mime.types: (1 команда)

  • nano /etc/mime.types
[...]
#application/x-httpd-php                                phtml pht php
#application/x-httpd-php-source                 phps
#application/x-httpd-php3                       php3
#application/x-httpd-php3-preprocessed          php3p
#application/x-httpd-php4                       php4
#application/x-httpd-php5                       php5
[...]

Отредактируем /etc/apache2/mods-enabled/php5.conf и за комментируем SetHandler строку:

Редактируем php5.conf: (1 команда)

  • nano /etc/apache2/mods-enabled/php5.conf
<IfModule mod_php5.c>
    <FilesMatch "\.ph(p3?|tml)$">
        #SetHandler application/x-httpd-php
    </FilesMatch>
    <FilesMatch "\.phps$">
        #SetHandler application/x-httpd-php-source
    </FilesMatch>
    # To re-enable php in user directories comment the following lines
    # (from 111IfModule ...> to 111/IfModule>.) Do NOT set it to On as it
    # prevents .htaccess files from disabling it.
    <IfModule mod_userdir.c>
        111Directory /home/*/public_html>
            php_admin_value engine Off
        </Directory>
    </IfModule>
</IfModule>

Перезапустим Apache:

Перезапуск Apache: (1 команда)

  • /etc/init.d/apache2 restart

Proftpd

Для того чтобы установить Proftpd, выполним:

Установка Proftpd: (1 команда)

  • aptitude install proftpd ucf

Вам будет задан вопрос:
Запустить ProFTPD: - автономное

По соображениям безопасности добавить следующие строки в /etc/proftpd/proftpd.conf

Редактируем Proftpd: (1 команда)

  • nano /etc/proftpd/proftpd.conf
[...]
DefaultRoot ~
ServerIdent on "FTP Server ready."
[...]

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

Ставим ссылку на /etc/proftpd.conf и перезапустим proftpd: (2 команда)

  • ln -s /etc/proftpd/proftpd.conf /etc/proftpd.conf
  • /etc/init.d/proftpd restart

Webalizer

Чтобы установить Webalizer, просто запустите:

Установка Webalizer: (1 команда)

  • aptitude install webalizer

Синхронизация системного времени

Это хорошая идея, чтобы синхронизировать системные часы с NTP (Network TIME рrotocol) сервером через Интернет. Просто запустите:

Синхронизация системного: (1 команда)

  • aptitude install ntp ntpdate

и системное время всегда будут синхронизированы.

Установка некоторых Perl модулей, необходимых SpamAssassin

Установка Perl модулей: (1 команда)

  • aptitude install libhtml-parser-perl libdb-file-lock-perl libnet-dns-perl libnetaddr-ip-perl libarchive-tar-perl

ISPConfig

Конфигурация сервера в настоящее время закончена, и теперь можно установить на него ISPConfig.

Перед установкой ISPConfig, есть одна важная вещь, которую Вы должны сделать. Открыть /usr/include/stdio.h и заменить getline с parseline строке 671:

Редактируем stdio.h: (1 команда)

  • nano /usr/include/stdio.h
[...]
   This function is not part of POSIX and therefore no official
   cancellation point.  But due to similarity with an POSIX interface
   or due to the implementation it is a cancellation point and
   therefore not marked with __THROW.  */
extern _IO_ssize_t parseline (char **__restrict __lineptr,
                            size_t *__restrict __n,
                            FILE *__restrict __stream) __wur;
#endif
[...]

Если вы не сделаете этого, установка будет прервана из-за следующей ошибки:

htpasswd.c:101: error: conflicting types for 'getline'
/usr/include/stdio.h:671: note: previous declaration of 'getline' was here
make[2]: *** [htpasswd.o] Error 1
make[2]: Leaving directory `/home/ISPConfig-2.2.stable/install_ispconfig/compile_aps/apache_1.3.41/src/support'
make[1]: *** [build-support] Error 1
make[1]: Leaving directory `/home/ISPConfig-2.2.stable/install_ispconfig/compile_aps/apache_1.3.41'
make: *** [build] Error 2
ERROR: Could not make Apache

Вы можете отменить изменения в /usr/include/stdio.h после успешной установки ISPConfig.

Примечание На Suexec

Если вы хотите запустить CGI-скрипты под Suexec, вы должны указать /var/www как домашний каталог для сайтов, созданных на ISPConfig как в Suexec Ubuntu собран с /var/www как doc_root. Выполните:

Указываем домашний каталог: (1 команда)

  • /usr/lib/apache2/suexec -V

а вывод должен выглядеть следующим образом:

root@server1:~# /usr/lib/apache2/suexec -V
 -D AP_DOC_ROOT="/var/www"
 -D AP_GID_MIN=100
 -D AP_HTTPD_USER="www-data"
 -D AP_LOG_EXEC="/var/log/apache2/suexec.log"
 -D AP_SAFE_PATH="/usr/local/bin:/usr/bin:/bin"
 -D AP_UID_MIN=100
 -D AP_USERDIR_SUFFIX="public_html"
root@server1:~#