Установка сервера · 11 min read · Sep 30, 2025

Установка веб-сервера, почты и кластера MySQL на Debian 6.0 с ISPConfig 3 - Страница 2

Следующие шаги необходимо выполнить на сервере 1 и сервере 2.

Чтобы установить amavisd-new, SpamAssassin и ClamAV, мы выполняем:

 apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl

Настройка ISPConfig 3 использует amavisd, который загружает библиотеку фильтров SpamAssassin внутренне, поэтому мы можем остановить SpamAssassin, чтобы освободить немного ОЗУ:

/etc/init.d/spamassassin stop
update-rc.d -f spamassassin remove

Затем установите Apache2, PHP5, phpMyAdmin, FCGI, suExec, Pear и mcrypt следующим образом:

 apt-get -y install apache2 apache2.2-common apache2-doc apache2-mpm-prefork apache2-utils libexpat1 ssl-cert libapache2-mod-php5 php5 php5-common php5-curl php5-gd php5-mysql php5-imap phpmyadmin php5-cli php5-cgi libapache2-mod-fcgid apache2-suexec php-pear php-auth php5-mcrypt mcrypt php5-imagick imagemagick libapache2-mod-suphp libruby libapache2-mod-ruby php5-xcache libapache2-mod-perl2 sudo zip wget

Вы увидите следующий вопрос:

Веб-сервер для автоматической перенастройки: <– apache2
Настроить базу данных для phpmyadmin с dbconfig-common? <– Нет

Затем выполните следующую команду, чтобы включить модули Apache suexec, rewrite, ssl, actions и include:

a2enmod suexec rewrite ssl actions include ruby dav_fs dav auth_digest

PureFTPd и квоты можно установить следующей командой:

apt-get -y install pure-ftpd-common pure-ftpd-mysql quota quotatool

Отредактируйте файл /etc/default/pure-ftpd-common…

vi /etc/default/pure-ftpd-common

… и убедитесь, что режим запуска установлен на standalone и VIRTUALCHROOT=true:

[...]
STANDALONE_OR_INETD=standalone
[...]
VIRTUALCHROOT=true
[...]

Отредактируйте файл /etc/inetd.conf, чтобы предотвратить попытки inetd запустить ftp:

vi /etc/inetd.conf

Если есть строка, начинающаяся с ftp stream tcp, закомментируйте её (если такого файла нет, то это нормально, и вам не нужно изменять /etc/inetd.conf):

[...]
#:STANDARD: Эти стандартные службы.
#ftp    stream  tcp     nowait  root    /usr/sbin/tcpd /usr/sbin/pure-ftpd-wrapper
[...]

Если вам пришлось изменить /etc/inetd.conf, перезапустите inetd сейчас:

/etc/init.d/openbsd-inetd restart

Теперь мы настраиваем PureFTPd для разрешения FTP и TLS-сессий. FTP — это очень небезопасный протокол, так как все пароли и все данные передаются в открытом виде. Используя TLS, всю коммуникацию можно зашифровать, что делает FTP гораздо более безопасным.

Если вы хотите разрешить FTP и TLS-сессии, выполните:

echo 1 > /etc/pure-ftpd/conf/TLS

Чтобы использовать TLS, мы должны создать SSL-сертификат. Я создаю его в /etc/ssl/private/, поэтому сначала создаю этот каталог:

mkdir -p /etc/ssl/private/

После этого мы можем сгенерировать SSL-сертификат следующим образом:

openssl req -x509 -nodes -days 7300 -newkey rsa:2048 -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pem

Название страны (2 буквы) [AU]: <– Введите название вашей страны (например, “DE”).
Название штата или провинции (полное название) [Some-State]: <– Введите название вашего штата или провинции.
Название населенного пункта (например, город) []: <– Введите ваш город.
Название организации (например, компания) [Internet Widgits Pty Ltd]: <– Введите название вашей организации (например, название вашей компании).
Название организационного подразделения (например, отдел) []: <– Введите название вашего организационного подразделения (например, “IT-отдел”).
Общее название (например, ВАШЕ имя) []: <– Введите полное доменное имя системы (например, “server1.example.com”).
Адрес электронной почты []: <– Введите ваш адрес электронной почты.

Измените права доступа к SSL-сертификату:

chmod 600 /etc/ssl/private/pure-ftpd.pem

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

/etc/init.d/pure-ftpd-mysql restart

Отредактируйте /etc/fstab. Мой выглядит так (я добавил, usrjquota=aquota.user, grpjquota=aquota.group, jqfmt=vfsv0 к разделу с точкой монтирования /):

vi /etc/fstab
# /etc/fstab: статическая информация о файловой системе.
#
# Используйте 'blkid', чтобы напечатать универсальный уникальный идентификатор для устройства; это может быть использовано с UUID= как более надежный способ именования устройств, который работает даже если диски добавляются и удаляются. См. fstab(5).
#
# <файловая система> <точка монтирования>   <тип>  <опции>       <дамп>  <передача>
proc            /proc           proc    defaults        0       0
# / был на /dev/sda1 во время установки
UUID=92bceda2-5ae4-4e3a-8748-b14da48fb297 /               ext3    errors=remount-ro,usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0 0       1
# swap был на /dev/sda5 во время установки
UUID=e24b3e9e-095c-4b49-af27-6363a4b7d094 none            swap    sw              0       0
/dev/scd0       /media/cdrom0   udf,iso9660 user,noauto     0       0
/dev/fd0        /media/floppy0  auto    rw,user,noauto  0       0

Чтобы включить квоты, выполните эти команды:

 mount -o remount /

quotacheck -avugm
quotaon -avug

Установите DNS-сервер BIND:

apt-get -y install bind9 dnsutils

Установите vlogger, webalizer и awstats:

 apt-get -y install vlogger webalizer awstats geoip-database

Откройте /etc/cron.d/awstats после этого…

vi /etc/cron.d/awstats

… и закомментируйте обе задачи cron в этом файле:

#*/10 * * * * www-data [ -x /usr/share/awstats/tools/update.sh ] && /usr/share/awstats/tools/update.sh

# Генерировать статические отчеты:
 #10 03 * * * www-data [ -x /usr/share/awstats/tools/buildstatic.sh 

Установите Jailkit: Jailkit нужен только если вы хотите chroot пользователей SSH. Его можно установить следующим образом (важно: Jailkit должен быть установлен до ISPConfig - его нельзя установить позже!):

apt-get -y install build-essential autoconf automake1.9 libtool flex bison

cd /tmp
wget http://olivier.sessink.nl/jailkit/jailkit-2.14.tar.gz
tar xvfz jailkit-2.14.tar.gz
cd jailkit-2.14
./configure
make
make install
cd ..
rm -rf jailkit-2.14*

Установите fail2ban: Это необязательно, но рекомендуется, потому что монитор ISPConfig пытается показать журнал:

apt-get install fail2ban

Чтобы сделать fail2ban монитором PureFTPd и Dovecot, создайте файл /etc/fail2ban/jail.local:

vi /etc/fail2ban/jail.local
[pureftpd]
enabled  = true
port     = ftp
filter   = pureftpd
logpath  = /var/log/syslog
maxretry = 3

[dovecot-pop3imap]
enabled = true
filter = dovecot-pop3imap
action = iptables-multiport[name=dovecot-pop3imap, port="pop3,pop3s,imap,imaps", protocol=tcp]
logpath = /var/log/mail.log
maxretry = 5

Затем создайте следующие два файла фильтров:

vi /etc/fail2ban/filter.d/pureftpd.conf
[Definition]
failregex = .*pure-ftpd: \(.*@\) \[WARNING\] Authentication failed for user.*
ignoreregex =
vi /etc/fail2ban/filter.d/dovecot-pop3imap.conf
[Definition]
failregex = (?: pop3-login|imap-login): .*(?:Authentication failure|Aborted login \(auth failed|Aborted login \(tried to use disabled|Disconnected \(auth failed|Aborted login \(\d+ authentication attempts).*rip=(?P\S*),.*
ignoreregex =

Перезапустите fail2ban после этого:

/etc/init.d/fail2ban restart

Чтобы установить веб-клиент SquirrelMail, выполните:

apt-get install squirrelmail

Затем создайте следующую символическую ссылку…

ln -s /usr/share/squirrelmail/ /var/www/webmail

… и настройте SquirrelMail:

squirrelmail-configure

Мы должны сказать SquirrelMail, что мы используем Dovecot-IMAP/-POP3:

Конфигурация SquirrelMail : Чтение: config.php (1.4.0)

Главное меню –

  1. Предпочтения организации
  2. Настройки сервера
  3. Значения папок по умолчанию
  4. Общие параметры
  5. Темы
  6. Адресные книги
  7. Сообщение дня (MOTD)
  8. Плагины
  9. База данных
  10. Языки

D. Установить предустановленные настройки для конкретных IMAP-серверов

C Включить цвет
S Сохранить данные
Q Выйти

Команда >> <– D

Конфигурация SquirrelMail : Чтение: config.php

Пока мы строили SquirrelMail, мы обнаружили некоторые
предпочтения, которые работают лучше с некоторыми
серверами, которые не работают так
хорошо с другими. Если вы выберете свой
IMAP-сервер, эта опция
установит некоторые предустановленные
настройки для этого сервера.

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

Пожалуйста, выберите свой IMAP-сервер:
bincimap = Binc IMAP сервер
courier = Courier IMAP сервер
cyrus = Cyrus IMAP сервер
dovecot = Dovecot Secure IMAP сервер
exchange = Microsoft Exchange IMAP сервер
hmailserver = hMailServer
macosx = Mac OS X Mailserver
mercury32 = Mercury/32
uw = IMAP сервер Университета Вашингтона
gmail = IMAP доступ к учетным записям Google mail (Gmail)

quit = Ничего не менять
Команда >> <– dovecot

Конфигурация SquirrelMail : Чтение: config.php

Пока мы строили SquirrelMail, мы обнаружили некоторые
предпочтения, которые работают лучше с некоторыми
серверами, которые не работают так
хорошо с другими. Если вы выберете свой
IMAP-сервер, эта опция
установит некоторые предустановленные
настройки для этого сервера.

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

Пожалуйста, выберите свой IMAP-сервер:
bincimap = Binc IMAP сервер
courier = Courier IMAP сервер
cyrus = Cyrus IMAP сервер
dovecot = Dovecot Secure IMAP сервер
exchange = Microsoft Exchange IMAP сервер
hmailserver = hMailServer
macosx = Mac OS X Mailserver
mercury32 = Mercury/32
uw = IMAP сервер Университета Вашингтона
gmail = IMAP доступ к учетным записям Google mail (Gmail)

quit = Ничего не менять
Команда >> dovecot

imap_server_type = dovecot
default_folder_prefix =
trash_folder = Trash
sent_folder = Sent
draft_folder = Drafts
show_prefix_option = false
default_sub_of_inbox = false
show_contain_subfolders_option = false
optional_delimiter = detect
delete_folder = false

Нажмите Enter, чтобы продолжить… <– нажмите ENTER

Конфигурация SquirrelMail : Чтение: config.php (1.4.0)

Главное меню –

  1. Предпочтения организации
  2. Настройки сервера
  3. Значения папок по умолчанию
  4. Общие параметры
  5. Темы
  6. Адресные книги
  7. Сообщение дня (MOTD)
  8. Плагины
  9. База данных
  10. Языки

D. Установить предустановленные настройки для конкретных IMAP-серверов

C Включить цвет
S Сохранить данные
Q Выйти

Команда >> <– S

Конфигурация SquirrelMail : Чтение: config.php (1.4.0)

Главное меню –

  1. Предпочтения организации
  2. Настройки сервера
  3. Значения папок по умолчанию
  4. Общие параметры
  5. Темы
  6. Адресные книги
  7. Сообщение дня (MOTD)
  8. Плагины
  9. База данных
  10. Языки

D. Установить предустановленные настройки для конкретных IMAP-серверов

C Включить цвет
S Сохранить данные
Q Выйти

Команда >> <– Q

Далее мы включаем глобальный псевдоним /webmail для Squirrelmail:

cd /etc/apache2/conf.d/
ln -s ../../squirrelmail/apache.conf squirrelmail.conf
/etc/init.d/apache2 reload

Теперь откройте /etc/apache2/conf.d/squirrelmail.conf…

vi /etc/apache2/conf.d/squirrelmail.conf

… и добавьте следующие строки в контейнер , который гарантирует, что mod_php используется для доступа к SquirrelMail, независимо от того, какой режим PHP вы выберете для вашего веб-сайта в ISPConfig:

[...]
Alias /webmail /usr/share/squirrelmail

   Options FollowSymLinks

   AddType application/x-httpd-php .php
   php_flag magic_quotes_gpc Off
   php_flag track_vars On
   php_admin_flag allow_url_fopen Off
   php_value include_path .
   php_admin_value upload_tmp_dir /var/lib/squirrelmail/tmp
   php_admin_value open_basedir /usr/share/squirrelmail:/etc/squirrelmail:/var/lib/squirrelmail:/etc/hostname:/etc/mailname
   php_flag register_globals off


   DirectoryIndex index.php

 
# доступ к configtest ограничен по умолчанию, чтобы предотвратить утечку информации

   order deny,allow
   deny from all
   allow from 127.0.0.1


[...]

Создайте каталог /var/lib/squirrelmail/tmp…

mkdir /var/lib/squirrelmail/tmp

… и сделайте его владельцем пользователя www-data:

chown www-data /var/lib/squirrelmail/tmp

Снова перезагрузите Apache:

/etc/init.d/apache2 reload

Вот и все - /etc/apache2/conf.d/squirrelmail.conf определяет псевдоним, называемый /squirrelmail, который указывает на каталог установки SquirrelMail /usr/share/squirrelmail.

Теперь вы можете получить доступ к SquirrelMail с вашего веб-сайта следующим образом:

http://www.example.com/squirrelmail

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

http://server1.example.com:8080/squirrelmail

Далее мы устанавливаем Unison. Unison используется для синхронизации директорий /var/www и /var/vmail между мастером и слейвом

apt-get install unison

Теперь мы устанавливаем файл конфигурации unison на первом сервере.

На сервере 1:

Создайте новый файл /root/.unison/default.prf на сервере 1…

mkdir /root/.unison
vi /root/.unison/default.prf

… и добавьте следующее содержимое:

# Корни синхронизации
root = /var
root = ssh://192.168.0.106//var/
 
# Пути для синхронизации
path = www
path = vmail
 
# Некоторые регулярные выражения, указывающие имена и пути для игнорирования
#ignore = Path stats    ## игнорирует /var/www/stats
#ignore = Path stats/*  ## игнорирует /var/www/stats/*
#ignore = Path */stats  ## игнорирует /var/www/somedir/stats, но не /var/www/a/b/c/stats
#ignore = Name *stats   ## игнорирует все файлы/каталоги, заканчивающиеся на "stats"
#ignore = Name stats*   ## игнорирует все файлы/каталоги, начинающиеся на "stats"
#ignore = Name *.tmp    ## игнорирует все файлы с расширением .tmp
   
#          Когда установлено в true, этот флаг заставляет пользовательский интерфейс пропускать
#          запросы на подтверждение по неконфликтующим изменениям. (Более
#          точно, когда пользовательский интерфейс завершает установку
#          направления распространения для одной записи и собирается перейти к
#          следующей, он пропустит все неконфликтующие записи и перейдет
#          непосредственно к следующему конфликту.)
auto=true
   
#          Когда это установлено в true, пользовательский интерфейс не будет задавать никаких
#          вопросов. Неконфликтующие изменения будут распространяться;
#          конфликты будут пропущены.
batch=true
   
#          !Когда это установлено в true, Unison запросит дополнительное
#          подтверждение, если окажется, что вся реплика была
#          удалена, прежде чем распространить изменение. Если также установлен флаг
#          batch, синхронизация будет прервана. Когда используется
#          предпочтение пути, то то же самое подтверждение будет запрашиваться для
#          верхних путей. (На данный момент этот флаг затрагивает только
#          текстовый пользовательский интерфейс.) См. также предпочтение mountpoint.
confirmbigdel=true
   
#          Когда это предпочтение установлено в true, Unison будет использовать
#          время изменения и длину файла в качестве `псевдо inode
#          номера' при сканировании реплик на обновления, вместо того чтобы читать
#          полное содержимое каждого файла. В Windows это может привести к тому,
#          что Unison пропустит распространение обновления, если время изменения
#          и длина файла остаются неизменными после обновления.
#          Тем не менее, Unison никогда не перезапишет такое обновление
#          изменением из другой реплики, так как он всегда выполняет безопасную
#          проверку обновлений непосредственно перед распространением изменения.
#          Таким образом, разумно использовать этот переключатель в Windows
#          большую часть времени и время от времени запускать Unison один раз
#          с fastcheck, установленным в false, если вы беспокоитесь о том,
#          что Unison мог пропустить обновление.
#          Значение по умолчанию для предпочтения - auto, что заставляет
#          Unison использовать быструю проверку на Unix-репликах (где это безопасно)
#          и медленную проверку на Windows-репликах. Для обратной
#          совместимости yes, no и default могут использоваться вместо
#          true, false и auto. См. раздел "Быстрая проверка" для получения
#          дополнительной информации.
fastcheck=true

#          Когда этот флаг установлен в true, атрибуты группы файлов
#          синхронизируются. Синхронизируются ли имена групп или идентификаторы групп
#          зависят от предпочтения numerids.
group=true
   
#          Когда этот флаг установлен в true, атрибуты владельца файлов
#          синхронизируются. Синхронизируются ли имена владельцев или идентификаторы владельцев
#          зависят от предпочтения extttnumerids.
owner=true
   
#          Включение предпочтения -prefer root заставляет Unison всегда
#          разрешать конфликты в пользу root, а не запрашивать
#          указания у пользователя. (Синтаксис root такой же, как для
#          предпочтения root, плюс специальные значения newer и older.)
#          Это предпочтение переопределяется предпочтением preferpartial.
#          Это предпочтение следует использовать только если вы уверены, что знаете,
#          что делаете!
prefer=newer
   
#          Когда это предпочтение установлено в true, текстовый пользовательский интерфейс
#          не будет печатать ничего, кроме ошибок.
#          Установка silent в true автоматически устанавливает предпочтение batch
#          в true.
silent=true
   
#          Когда этот флаг установлен в true, время изменения файлов (но не
#          время изменения каталогов) распространяется.
times=true

Мы хотим автоматизировать синхронизацию, поэтому создаем задачу cron для этого на server1.example.tld:

crontab -e
*/5 * * * * /usr/bin/unison &> /dev/null
Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.