Установка сервера · 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_digestPureFTPd и квоты можно установить следующей командой:
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 bisoncd /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)
Главное меню –
- Предпочтения организации
- Настройки сервера
- Значения папок по умолчанию
- Общие параметры
- Темы
- Адресные книги
- Сообщение дня (MOTD)
- Плагины
- База данных
- Языки
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)
Главное меню –
- Предпочтения организации
- Настройки сервера
- Значения папок по умолчанию
- Общие параметры
- Темы
- Адресные книги
- Сообщение дня (MOTD)
- Плагины
- База данных
- Языки
D. Установить предустановленные настройки для конкретных IMAP-серверов
C Включить цвет
S Сохранить данные
Q Выйти
Команда >> <– S
Конфигурация SquirrelMail : Чтение: config.php (1.4.0)
Главное меню –
- Предпочтения организации
- Настройки сервера
- Значения папок по умолчанию
- Общие параметры
- Темы
- Адресные книги
- Сообщение дня (MOTD)
- Плагины
- База данных
- Языки
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… и добавьте следующие строки в контейнер
[...]
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/nullGet new posts in your inbox
No spam. Unsubscribe anytime.