Поиск по сайту:

Идеальный сервер — Debian 10 (Nginx, BIND, Dovecot, ISPConfig 3.2)


Это руководство существует для этих версий ОС

  • Debian 10 (Buster)
  • Debian 6 (Squeeze)

На этой странице

  1. 1 Предварительное примечание
  2. 2 Установите SSH-сервер
  3. 3. Установите текстовый редактор оболочки (необязательно)
  4. 4 Настройте имя хоста
  5. 5 Обновите установку Debian
  6. 6 Изменение оболочки по умолчанию
  7. 7 Синхронизация системных часов
  8. 8. Установите Postfix, Dovecot, MySQL, rkhunter и binutils.
  9. 9 Установите Amavisd-new, SpamAssassin и ClamAV
  10. 10. Установите Nginx, PHP (PHP-FPM) и Fcgiwrap
    1. 10.1 Установите phpMyAdmin

    В этом руководстве показано, как подготовить сервер Debian 10 (с Nginx, BIND, Dovecot) для установки ISPConfig 3.2 и как установить ISPConfig 3.2. ISPConfig 3 — это панель управления веб-хостингом, которая позволяет настроить следующие службы через веб-браузер: веб-сервер Apache или nginx, почтовый сервер Postfix, сервер Courier или Dovecot IMAP/POP3, сервер имен MySQL, BIND или MyDNS, PureFTPd, SpamAssassin, ClamAV и многие другие. Эта настройка охватывает веб-сервер Nginx, BIND в качестве DNS-сервера и Dovecot в качестве сервера IMAP/POP3.

    1 Предварительное примечание

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

    Все приведенные ниже команды выполняются от имени пользователя root. Либо войдите в систему как пользователь root напрямую, либо войдите в систему как обычный пользователь, а затем используйте команду

    su -

    чтобы стать пользователем root на вашем сервере, прежде чем продолжить. ВАЖНО: Вы должны использовать su, и не только su, иначе ваша переменная PATH будет неправильно установлена Debian.

    2 Установите SSH-сервер

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

    apt-get -y install ssh openssh-server

    С этого момента вы можете использовать SSH-клиент, такой как PuTTY, подключаться со своей рабочей станции к серверу Debian 10 и выполнять оставшиеся шаги из этого руководства.

    3 Установите текстовый редактор оболочки (необязательно)

    В этом руководстве я буду использовать текстовый редактор nano. Некоторые пользователи предпочитают классический редактор vi, поэтому здесь я установлю оба редактора. Программа vi по умолчанию ведет себя странно в Debian и Ubuntu; чтобы исправить это, мы устанавливаем vim-nox:

    apt-get -y install nano vim-nox

    (Вам не нужно делать это, если вы используете другой текстовый редактор, например joe.)

    4 Настройте имя хоста

    Имя хоста вашего сервера должно быть субдоменом, например \server1.example.com\. Не используйте доменное имя без части субдомена, например \example.com\, в качестве имени хоста, так как позже это вызовет проблемы с настройкой почты. Во-первых, вы должны проверить имя хоста в /etc/hosts и изменить его при необходимости. Строка должна быть такой: \IP-адрес - пробел - полное имя хоста, включая домен - пробел - часть поддомена\. Отредактируйте /etc/hosts. Сделайте так, чтобы это выглядело так:

    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
    ff02::1 ip6-allnodes
    ff02::2 ip6-allrouters

    Затем отредактируйте файл /etc/hostname:

    nano /etc/hostname

    Он должен содержать только субдоменную часть, в нашем случае:

    server1

    Наконец, перезагрузите сервер, чтобы изменения вступили в силу:

    reboot

    Войдите снова и проверьте правильность имени хоста с помощью следующих команд:

    hostname
    hostname -f

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

    :/tmp# hostname -f
    server1.example.com

    5 Обновите установку Debian

    Сначала убедитесь, что ваш /etc/apt/sources.list содержит репозиторий buster/updates (это гарантирует, что вы всегда будете получать самые свежие обновления для антивирусного сканера ClamAV — этот проект очень часто публикует релизы, и иногда старые версии перестают работать), и что contrib и несвободные репозитории включены.

    nano /etc/apt/sources.list
    deb http://deb.debian.org/debian/ buster main contrib non-free
    deb-src http://deb.debian.org/debian/ buster main contrib non-free

    deb http://security.debian.org/debian-security buster/updates main contrib non-free
    deb-src http://security.debian.org/debian-security buster/updates main contrib non-free

    Бег

    apt-get update

    обновить базу данных пакетов apt и

    apt-get upgrade

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

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

    /bin/sh — это символическая ссылка на /bin/dash, однако нам нужен /bin/bash, а не /bin/dash. Поэтому делаем так:

    dpkg-reconfigure dash

    Использовать тире в качестве системной оболочки по умолчанию (/bin/sh)? <-- Нет

    Если вы этого не сделаете, установка ISPConfig завершится ошибкой.

    7 Синхронизируйте системные часы

    Рекомендуется синхронизировать системные часы с сервером NTP (сетевой протокол времени) через Интернет. Просто запустите

    apt-get install ntp

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

    8. Установите Postfix, Dovecot, MySQL, rkhunter и binutils.

    Мы можем установить Postfix, Dovecot, MySQL, rkhunter и Binutils с помощью одной команды:

    apt-get install postfix postfix-mysql postfix-doc mariadb-client mariadb-server openssl getmail4 rkhunter binutils dovecot-imapd dovecot-pop3d dovecot-mysql dovecot-sieve dovecot-lmtpd sudo curl

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

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

    Чтобы обезопасить установку MariaDB/MySQL и отключить тестовую базу данных, выполните следующую команду:

    mysql_secure_installation

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

    Change the root password? [Y/n] <-- y
    New password: <-- Enter a new database root password
    Re-enter new password: <-- Repeat the database root password
    Remove anonymous users? [Y/n] <-- y
    Disallow root login remotely? [Y/n] <-- y
    Remove test database and access to it? [Y/n] <-- y
    Reload privilege tables now? [Y/n] <-- y

    Затем откройте TLS/SSL и порты отправки в Postfix:

    nano /etc/postfix/master.cf

    Раскомментируйте разделы отправки и smtps, как показано ниже, и добавьте строки там, где это необходимо, чтобы этот раздел файла master.cf выглядел точно так же, как приведенный ниже. ВАЖНО: Удалите # перед строками, которые начинаются с smtps и submit, а не только из строк -o после этих строк!

    [...]
    submission inet n - y - - smtpd
    -o syslog_name=postfix/submission
    -o smtpd_tls_security_level=encrypt
    -o smtpd_sasl_auth_enable=yes
    -o smtpd_client_restrictions=permit_sasl_authenticated,reject
    # -o smtpd_reject_unlisted_recipient=no
    # -o smtpd_client_restrictions=$mua_client_restrictions
    # -o smtpd_helo_restrictions=$mua_helo_restrictions
    # -o smtpd_sender_restrictions=$mua_sender_restrictions
    # -o smtpd_recipient_restrictions=
    # -o smtpd_relay_restrictions=permit_sasl_authenticated,reject
    # -o milter_macro_daemon_name=ORIGINATING
    smtps inet n - y - - smtpd
    -o syslog_name=postfix/smtps
    -o smtpd_tls_wrappermode=yes
    -o smtpd_sasl_auth_enable=yes
    -o smtpd_client_restrictions=permit_sasl_authenticated,reject
    # -o smtpd_reject_unlisted_recipient=no
    # -o smtpd_client_restrictions=$mua_client_restrictions
    # -o smtpd_helo_restrictions=$mua_helo_restrictions
    # -o smtpd_sender_restrictions=$mua_sender_restrictions
    # -o smtpd_recipient_restrictions=
    # -o smtpd_relay_restrictions=permit_sasl_authenticated,reject
    # -o milter_macro_daemon_name=ORIGINATING
    [...]

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

    service postfix restart

    Мы хотим, чтобы MariaDB прослушивала все интерфейсы, а не только локальный хост, поэтому редактируем файл /etc/mysql/mariadb.conf.d/50-server.cnf и закомментируем строку bind-address=127.0.0.1:

    nano /etc/mysql/mariadb.conf.d/50-server.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

    [...]

    Сохраните файл. Затем установите метод аутентификации по паролю в MariaDB на собственный, чтобы мы могли использовать PHPMyAdmin позже для подключения от имени пользователя root:

    echo "update mysql.user set plugin = 'mysql_native_password' where user='root';" | mysql -u root

    Отредактируйте файл /etc/mysql/debian.cnf и дважды установите пароль root для MYSQL/MariaDB в строках, начинающихся со слова password.

    nano /etc/mysql/debian.cnf

    Пароль root MySQL, который необходимо добавить, показан красным цветом. В этом примере пароль \howtoforge\.

    # Automatically generated for Debian scripts. DO NOT TOUCH!
    [client]
    host = localhost
    user = root
    password = howtoforge
    socket = /var/run/mysqld/mysqld.sock
    [mysql_upgrade]
    host = localhost
    user = root
    password = howtoforge
    socket = /var/run/mysqld/mysqld.sock
    basedir = /usr

    Чтобы предотвратить ошибку Ошибка при приеме: слишком много открытых файлов, теперь мы установим более высокие ограничения на количество открытых файлов для MariaDB.

    Откройте файл /etc/security/limits.conf в редакторе:

    nano /etc/security/limits.conf

    и добавьте эти строки в конец файла.

    mysql soft nofile 65535
    mysql hard nofile 65535

    Затем создайте новый каталог /etc/systemd/system/mysql.service.d/ с помощью команды mkdir.

    mkdir -p /etc/systemd/system/mysql.service.d/

    и добавьте новый файл внутрь:

    nano /etc/systemd/system/mysql.service.d/limits.conf

    вставьте в этот файл следующие строки:

    [Service]
    LimitNOFILE=infinity

    Сохраните файл и закройте редактор nano.

    Затем перезагружаем systemd и перезапускаем MariaDB:

    systemctl daemon-reload
    systemctl restart mariadb

    Не обращайте внимания на предупреждение: \Предупреждение: файл модуля, исходный файл конфигурации или вставки mariadb.service изменены на диске. Запустите systemctl daemon-reload для перезагрузки модулей.\.

    Установите систему dbconfig-common:

    apt-get install dbconfig-common dbconfig-mysql

    В настоящее время существует проблема с системой Debian dbconfig-common, которая препятствует последующей установке RoundCube. Исправьте ее, выполнив эту команду:

    sed -i -r 's/_dbc_nodb="yes" dbc_mysql_exec/_dbc_nodb="yes"; dbc_mysql_exec/g' /usr/share/dbconfig-common/internal/mysql

    Теперь проверьте, включена ли сеть. Бег

    netstat -tap | grep mysql

    Вывод должен выглядеть так:

    :~#

    9 Установите Amavisd-new, SpamAssassin и ClamAV

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

    apt-get install amavisd-new spamassassin clamav clamav-daemon unzip bzip2 arj nomarch lzop cabextract p7zip p7zip-full unrar lrzip 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 libdbd-mysql-perl postgrey

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

    systemctl stop spamassassin
    systemctl disable spamassassin

    10. Установите Nginx, PHP (PHP-FPM) и Fcgiwrap

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

    apt-get install nginx

    Если Apache2 уже установлен в системе, остановите его сейчас...

    systemctl stop apache2

    Сообщение \Не удалось остановить apache2.service: Модуль apache2.service не загружен.\ в порядке и не указывает на ошибку.

    ... и удалите ссылки запуска системы Apache:

    systemctl disable apache2

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

    systemctl start nginx

    (Если установлены и Apache2, и nginx, установщик ISPConfig 3 спросит вас, какой из них вы хотите использовать — в этом случае ответьте на nginx. Если установлен только один из них, ISPConfig автоматически выполнит необходимую настройку.)

    Мы можем заставить PHP 7.3 работать в nginx через PHP-FPM (PHP-FPM (FastCGI Process Manager) — это альтернативная реализация PHP FastCGI с некоторыми дополнительными функциями, полезными для сайтов любого размера, особенно для более загруженных сайтов), который мы устанавливаем следующим образом:

    apt-get install php7.3-fpm

    PHP-FPM — это процесс-демон, который запускает сервер FastCGI в сокете /var/run/php/php7.3-fpm.sock.

    Чтобы получить поддержку MySQL в PHP, мы можем установить пакет php7.3-mysql. Это хорошая идея, чтобы установить некоторые другие модули PHP, а также они могут вам понадобиться для ваших приложений. Вы можете искать доступные модули PHP следующим образом:

    apt-cache search php7

    Выберите те, которые вам нужны, и установите их следующим образом:

    apt-get install php7.3 php7.3-common php7.3-gd php7.3-mysql php7.3-imap php7.3-cli php7.3-cgi php-pear mcrypt imagemagick libruby php7.3-curl php7.3-intl php7.3-pspell php7.3-recode php7.3-sqlite3 php7.3-tidy php7.3-xmlrpc php7.3-xsl memcached php-memcache php-imagick php-gettext php7.3-zip php7.3-mbstring memcached php7.3-soap php7.3-fpm php7.3-opcache php-apcu

    Затем откройте /etc/php/7.3/fpm/php.ini...

    nano /etc/php/7.3/fpm/php.ini

    ... и установите cgi.fix_pathinfo=0 и свой часовой пояс:

    [...]
    cgi.fix_pathinfo=0
    [...]
    date.timezone="Europe/Berlin"
    [...]

    (Вы можете найти все доступные часовые пояса в каталогах /usr/share/zoneinfo и его подкаталогах.)

    Теперь перезагрузите PHP-FPM:

    systemctl restart php7.3-fpm

    Чтобы получить поддержку CGI в nginx, мы устанавливаем Fcgiwrap.

    Fcgiwrap — это оболочка CGI, которая должна работать также для сложных сценариев CGI и может использоваться для сред общего хостинга, поскольку позволяет каждому виртуальному хосту использовать свой собственный каталог cgi-bin.

    Установите пакет fcgiwrap:

    apt-get install fcgiwrap

    После установки уже должен быть запущен демон fcgiwrap; его сокет — /var/run/fcgiwrap.socket. Если он не запущен, вы можете запустить его с помощью скрипта fservice fcgiwrap.

    Вот и все! Теперь, когда вы создаете виртуальный хост nginx, ISPConfig позаботится о правильной конфигурации виртуального хоста.

    10.1 Установите phpMyAdmin

    Начиная с Debian 10, PHPMyAdmin больше не доступен в виде пакета .deb. Поэтому мы установим его из исходников.

    Создайте папки для PHPMyadmin:

    mkdir /usr/share/phpmyadmin
    mkdir /etc/phpmyadmin
    mkdir -p /var/lib/phpmyadmin/tmp
    chown -R www-data:www-data /var/lib/phpmyadmin
    touch /etc/phpmyadmin/htpasswd.setup

    Перейдите в каталог /tmp и загрузите исходники PHPMyAdmin:

    cd /tmp
    wget https://files.phpmyadmin.net/phpMyAdmin/4.9.0.1/phpMyAdmin-4.9.0.1-all-languages.tar.gz

    Распакуйте загруженный файл архива и переместите файлы в папку /usr/share/phpmyadmin и очистите каталог /tmp.

    tar xfz phpMyAdmin-4.9.0.1-all-languages.tar.gz
    mv phpMyAdmin-4.9.0.1-all-languages/* /usr/share/phpmyadmin/
    rm phpMyAdmin-4.9.0.1-all-languages.tar.gz
    rm -rf phpMyAdmin-4.9.0.1-all-languages

    Создайте новый файл конфигурации для PHPMyAdmin на основе предоставленного примера файла:

    cp /usr/share/phpmyadmin/config.sample.inc.php  /usr/share/phpmyadmin/config.inc.php

    Откройте файл конфигурации с помощью редактора nano:

    nano /usr/share/phpmyadmin/config.inc.php

    Установите безопасный пароль (секрет Blowfish), который должен состоять из 32 символов:

    $cfg['blowfish_secret'] = 'bD3e6wva9fnd93jVsb7SDgeiBCd452Dh'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */

    Не используйте мой пример секрета иглобрюха, установите свой собственный!

    Затем добавьте строку для установки каталога, который PHPMyAdmin будет использовать для хранения временных файлов:

    $cfg['TempDir'] = '/var/lib/phpmyadmin/tmp';

    На следующем шаге мы настроим хранилище конфигурации phpMyadmin (базу данных).

    Войдите в MariaDB как пользователь root:

    mysql -u root -p

    В оболочке MariaDB создайте новую базу данных для PHPMyAdmin:

    MariaDB [(none)]> CREATE DATABASE phpmyadmin;

    Затем создайте нового пользователя:

    MariaDB [(none)]> CREATE USER 'pma'@'localhost' IDENTIFIED BY 'mypassword';

    Замените слово mypassword безопасным паролем по вашему выбору в командах выше и ниже, используйте один и тот же пароль оба раза. Затем предоставьте пользователю доступ к этой базе данных и перезагрузите разрешения базы данных.

    MariaDB [(none)]> GRANT ALL PRIVILEGES ON phpmyadmin.* TO 'pma'@'localhost' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
    MariaDB [(none)]> FLUSH PRIVILEGES;
    MariaDB [(none)]> EXIT

    Наконец, загрузите таблицы SQL в базу данных:

    mysql -u root -p phpmyadmin < /usr/share/phpmyadmin/sql/create_tables.sql

    Введите корневой пароль MariaDB по запросу.

    Все, что нам нужно сделать сейчас, это установить данные пользователя phpmyadmin в файле конфигурации. Снова откройте файл в редакторе nano:

    nano /usr/share/phpmyadmin/config.inc.php

    Прокрутите вниз, пока не увидите строки ниже, и отредактируйте их:

    /* User used to manipulate with storage */
    $cfg['Servers'][$i]['controlhost'] = 'localhost';
    $cfg['Servers'][$i]['controlport'] = '';
    $cfg['Servers'][$i]['controluser'] = 'pma';
    $cfg['Servers'][$i]['controlpass'] = 'mypassword';

    /* Storage database and tables */
    $cfg['Servers'][$i]['pmadb'] = 'phpmyadmin';
    $cfg['Servers'][$i]['bookmarktable'] = 'pma__bookmark';
    $cfg['Servers'][$i]['relation'] = 'pma__relation';
    $cfg['Servers'][$i]['table_info'] = 'pma__table_info';
    $cfg['Servers'][$i]['table_coords'] = 'pma__table_coords';
    $cfg['Servers'][$i]['pdf_pages'] = 'pma__pdf_pages';
    $cfg['Servers'][$i]['column_info'] = 'pma__column_info';
    $cfg['Servers'][$i]['history'] = 'pma__history';
    $cfg['Servers'][$i]['table_uiprefs'] = 'pma__table_uiprefs';
    $cfg['Servers'][$i]['tracking'] = 'pma__tracking';
    $cfg['Servers'][$i]['userconfig'] = 'pma__userconfig';
    $cfg['Servers'][$i]['recent'] = 'pma__recent';
    $cfg['Servers'][$i]['favorite'] = 'pma__favorite';
    $cfg['Servers'][$i]['users'] = 'pma__users';
    $cfg['Servers'][$i]['usergroups'] = 'pma__usergroups';
    $cfg['Servers'][$i]['navigationhiding'] = 'pma__navigationhiding';
    $cfg['Servers'][$i]['savedsearches'] = 'pma__savedsearches';
    $cfg['Servers'][$i]['central_columns'] = 'pma__central_columns';
    $cfg['Servers'][$i]['designer_settings'] = 'pma__designer_settings';
    $cfg['Servers'][$i]['export_templates'] = 'pma__export_templates';

    Я отметил строки красным, которые я редактировал. Замените mypassword паролем, который вы выбрали для пользователя phpmyadmin. Обратите внимание, что/перед строками также был удален!

    После того, как вы установили ISPConfig 3.2, вы можете получить доступ к phpMyAdmin следующим образом:

    Виртуальный хост приложений ISPConfig на порту 8081 для nginx поставляется с конфигурацией phpMyAdmin, поэтому вы можете использовать http://server1.example.com:8081/phpmyadmin или http://server1.example.com:8081/phpMyAdmin для доступа к phpMyAdmin.

    Если вы хотите использовать псевдоним /phpmyadmin или /phpMyAdmin, который вы можете использовать со своих веб-сайтов, это немного сложнее, чем для Apache, потому что nginx не имеет глобальных псевдонимов (то есть псевдонимов, которые можно определить для всех виртуальных хостов). Поэтому вы должны определить эти псевдонимы для каждого виртуального хоста, с которого вы хотите получить доступ к phpMyAdmin.

    Для этого вставьте следующее в поле «Директивы nginx» на вкладке «Параметры» веб-сайта в ISPConfig позже:

            location /phpmyadmin {
                   root /usr/share/;
                   index index.php index.html index.htm;
                   location ~ ^/phpmyadmin/(.+\.php)$ {
                           try_files $uri =404;
                           root /usr/share/;
                           fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
                           fastcgi_index index.php;
                           fastcgi_param SCRIPT_FILENAME $request_filename;
                           include /etc/nginx/fastcgi_params;
                           fastcgi_param PATH_INFO $fastcgi_script_name;
                           fastcgi_buffer_size 128k;
                           fastcgi_buffers 256 4k;
                           fastcgi_busy_buffers_size 256k;
                           fastcgi_temp_file_write_size 256k;
                           fastcgi_intercept_errors on;
                   }
                   location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ {
                           root /usr/share/;
                   }
            }
            location /phpMyAdmin {
                   rewrite ^/* /phpmyadmin last;
            }

    Если вы используете https вместо http для своего виртуального хоста, вы должны добавить строку fastcgi_param HTTPS on; в вашу конфигурацию phpMyAdmin следующим образом:

            location /phpmyadmin {
                   root /usr/share/;
                   index index.php index.html index.htm;
                   location ~ ^/phpmyadmin/(.+\.php)$ {
                           try_files $uri =404;
                           root /usr/share/;
                           fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
                           fastcgi_param HTTPS on; # <-- add this line
                           fastcgi_index index.php;
                           fastcgi_param SCRIPT_FILENAME $request_filename;
                           include /etc/nginx/fastcgi_params;
                           fastcgi_param PATH_INFO $fastcgi_script_name;
                           fastcgi_buffer_size 128k;
                           fastcgi_buffers 256 4k;
                           fastcgi_busy_buffers_size 256k;
                           fastcgi_temp_file_write_size 256k;
                           fastcgi_intercept_errors on;
                   }
                   location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ {
                           root /usr/share/;
                   }
            }
            location /phpMyAdmin {
                   rewrite ^/* /phpmyadmin last;
            }

    Если вы используете и http, и https для своего виртуального хоста, вы можете использовать переменную $https. Снова перейдите в поле nginx Directives и вместо fastcgi_param HTTPS включите; вы добавляете строку fastcgi_param HTTPS $https; так что вы можете использовать phpMyAdmin как для http, так и для https запросов:

            location /phpmyadmin {
                   root /usr/share/;
                   index index.php index.html index.htm;
                   location ~ ^/phpmyadmin/(.+\.php)$ {
                           try_files $uri =404;
                           root /usr/share/;
                           fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
                           fastcgi_param HTTPS $https; # <-- add this line
                           fastcgi_index index.php;
                           fastcgi_param SCRIPT_FILENAME $request_filename;
                           include /etc/nginx/fastcgi_params;
                           fastcgi_param PATH_INFO $fastcgi_script_name;
                           fastcgi_buffer_size 128k;
                           fastcgi_buffers 256 4k;
                           fastcgi_busy_buffers_size 256k;
                           fastcgi_temp_file_write_size 256k;
                           fastcgi_intercept_errors on;
                   }
                   location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ {
                           root /usr/share/;
                   }
            }
            location /phpMyAdmin {
                   rewrite ^/* /phpmyadmin last;
            }

    11 Установите Lets Encrypt

    ISPConfig теперь использует acme.sh в качестве клиента Lets Encrypt. Установите acme.sh с помощью следующей команды:

    curl https://get.acme.sh | sh -s

    12 Установить почтальона

    ISPConfig позволяет вам управлять (создавать/изменять/удалять) списками рассылки Mailman. Если вы хотите использовать эту функцию, установите Mailman следующим образом:

    apt-get install mailman

    Выберите хотя бы один язык, например:

    Поддерживаемые языки: <-- en (английский)
    Список отсутствующих сайтов <-- Ok

    Прежде чем мы сможем запустить Mailman, необходимо создать первый список рассылки с именем mailman:

    newlist mailman

    [электронная почта защищена]:~#

    После этого откройте /etc/aliases...

    nano /etc/aliases

    ... и добавьте следующие строки:

    [...]
    ## mailman mailing list
    mailman:              "|/var/lib/mailman/mail/mailman post mailman"
    mailman-admin:        "|/var/lib/mailman/mail/mailman admin mailman"
    mailman-bounces:      "|/var/lib/mailman/mail/mailman bounces mailman"
    mailman-confirm:      "|/var/lib/mailman/mail/mailman confirm mailman"
    mailman-join:         "|/var/lib/mailman/mail/mailman join mailman"
    mailman-leave:        "|/var/lib/mailman/mail/mailman leave mailman"
    mailman-owner:        "|/var/lib/mailman/mail/mailman owner mailman"
    mailman-request:      "|/var/lib/mailman/mail/mailman request mailman"
    mailman-subscribe:    "|/var/lib/mailman/mail/mailman subscribe mailman"
    mailman-unsubscribe:  "|/var/lib/mailman/mail/mailman unsubscribe mailman"

    Бег

    newaliases

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

    systemctl restart postfix

    Затем запустите демон Mailman:

    systemctl restart mailman

    После установки ISPConfig 3 вы можете получить доступ к Mailman следующим образом:

    Виртуальный хост приложений ISPConfig на порту 8081 для nginx поставляется с конфигурацией Mailman, поэтому вы можете использовать http://server1.example.com:8081/cgi-bin/mailman/admin/ или http://server1.example. .com:8081/cgi-bin/mailman/listinfo/ для доступа к Mailman.

    Если вы хотите использовать Mailman со своих веб-сайтов, это немного сложнее, чем для Apache, потому что nginx не имеет глобальных псевдонимов (то есть псевдонимов, которые можно определить для всех виртуальных хостов). Поэтому вы должны определить эти псевдонимы для каждого виртуального хоста, с которого вы хотите получить доступ к Mailman.

    Для этого в поле «Директивы nginx» на вкладке «Параметры» веб-сайта в ISPConfig вставьте следующее:

            location /cgi-bin/mailman {
                   root /usr/lib/;
                   fastcgi_split_path_info (^/cgi-bin/mailman/[^/]*)(.*)$;
                   include /etc/nginx/fastcgi_params;
                   fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                   fastcgi_param PATH_INFO $fastcgi_path_info;
                   fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
                   fastcgi_intercept_errors on;
                   fastcgi_pass unix:/var/run/fcgiwrap.socket;
            }
    
            location /images/mailman {
                   alias /usr/share/images/mailman;
            }
    
            location /pipermail {
                   alias /var/lib/mailman/archives/public;
                   autoindex on;
            }

    Это определяет псевдоним /cgi-bin/mailman/ для вашего виртуального хоста, что означает, что вы можете получить доступ к интерфейсу администратора Mailman для списка по адресу http:///cgi-bin/mailman/admin/, и веб-страницу для пользователей списка рассылки можно найти по адресу http:///cgi-bin/mailman/listinfo/.

    В разделе http:///pipermail вы можете найти архивы списков рассылки.

    13 Установите PureFTPd и Quota

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

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

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

    nano /etc/default/pure-ftpd-common

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

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

    Теперь мы настраиваем 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

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

    Измените разрешения SSL-сертификата:

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

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

    systemctl restart pure-ftpd-mysql

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

    nano /etc/fstab
    # /etc/fstab: static file system information.
    #
    # Use 'blkid' 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).
    #
    # <file system> <mount point> <type> <options> <dump> <pass>
    # / was on /dev/sda1 during installation
    UUID=45576b38-39e8-4994-b8c1-ea4870e2e614 / ext4 errors=remount-ro,usrjquota=quota.user,grpjquota=quota.group,jqfmt=vfsv0 0 1
    # swap was on /dev/sda5 during installation
    UUID=8bea0d1e-ec37-4b20-9976-4b7daaa3eb69 none swap sw 0 0
    /dev/sr0 /media/cdrom0 udf,iso9660 user,noauto 0 0

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

    mount -o remount /
    quotacheck -avugm
    quotaon -avug

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

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

    apt-get install bind9 dnsutils

    Если ваш сервер является виртуальной машиной, настоятельно рекомендуется установить демон hasged, чтобы получить более высокую энтропию для подписи DNSSEC. Вы можете установить hasged и на невиртуальные серверы, это не повредит.

    apt-get -y install haveged
    systemctl enable haveged
    systemctl start haveged

    Объяснение по этой теме можно найти здесь.

    15 Установите Webalizer, AWStats и GoAccess

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

    apt-get install webalizer awstats geoip-database libtimedate-perl libclass-dbi-mysql-perl

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

    nano /etc/cron.d/awstats

    ... и закомментируйте все в этом файле:

    #MAILTO=root
    
    #*/10 * * * * www-data [ -x /usr/share/awstats/tools/update.sh ] && /usr/share/awstats/tools/update.sh
    
    # Generate static reports:
    #10 03 * * * www-data [ -x /usr/share/awstats/tools/buildstatic.sh ] && /usr/share/awstats/tools/buildstatic.sh

    Установка последней версии GoAccess непосредственно из репозитория GoAccess:

    echo "deb https://deb.goaccess.io/ $(lsb_release -cs) main" | sudo tee -a /etc/apt/sources.list.d/goaccess.list
    wget -O - https://deb.goaccess.io/gnugpg.key | sudo apt-key --keyring /etc/apt/trusted.gpg.d/goaccess.gpg add -
    apt-get update
    apt-get install goaccess

    16 Установить джейлкит

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

    apt-get install build-essential autoconf automake libtool flex bison debhelper binutils
    cd /tmp
    wget http://olivier.sessink.nl/jailkit/jailkit-2.20.tar.gz
    tar xvfz jailkit-2.20.tar.gz
    cd jailkit-2.20
    echo 5 > debian/compat
    ./debian/rules binary

    Теперь вы можете установить пакет Jailkit .deb следующим образом:

    cd ..
    dpkg -i jailkit_2.20-1_*.deb
    rm -rf jailkit-2.20*

    17 Установите Fail2ban и брандмауэр UFW

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

    apt-get install fail2ban

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

    nano /etc/fail2ban/jail.local
    [pure-ftpd]
    enabled = true
    port = ftp
    filter = pure-ftpd
    logpath = /var/log/syslog
    maxretry = 3

    [dovecot]
    enabled = true
    filter = dovecot
    logpath = /var/log/mail.log
    maxretry = 5

    [postfix-sasl]
    enabled = true
    port = smtp
    filter = postfix[mode=auth]
    logpath = /var/log/mail.log
    maxretry = 3

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

    systemctl restart fail2ban

    Чтобы установить брандмауэр UFW, выполните следующую команду:

    apt-get install ufw

    18. Установите RoundCube

    Установите RoundCube с помощью этой команды:

    apt-get install roundcube roundcube-core roundcube-mysql roundcube-plugins

    Установщик задаст следующие вопросы:

    Configure database for roundcube with dbconfig.common? <-- yes
    MySQL application password for roundcube: <-- press enter
    Password of the databases administrative user: <-- enter the MySQL root password here.

    Затем отредактируйте файл RoundCube /etc/roundcube/config.inc.php и настройте несколько параметров:

    nano /etc/roundcube/config.inc.php

    Установите default_host на localhost и smtp_server.

    $config['default_host'] = 'localhost';
    $config['smtp_server'] = 'localhost';
    $config['smtp_port']  = 25;

    ISPConfig имеет некоторую конфигурацию в виртуальном хосте приложений nginx для squirrelmail, которая также работает для roundcube. Мы активируем его с помощью:

    ln -s /usr/share/roundcube /usr/share/squirrelmail

    19 Установите ISPConfig 3

    Прежде чем начать установку ISPConfig, убедитесь, что Apache остановлен (если он установлен — возможно, некоторые из ваших установленных пакетов установили Apache как зависимость без вашего ведома). Если Apache2 уже установлен в системе, остановите его сейчас...

    systemctl stop apache2

    ... и удалите ссылки запуска системы Apache:

    update-rc.d -f apache2 remove

    Убедитесь, что nginx запущен:

    systemctl start nginx

    (Если у вас установлены и Apache, и nginx, установщик спросит вас, какой из них вы хотите использовать: Apache и nginx обнаружены. Выберите сервер для использования для ISPConfig: (apache,nginx) [apache]:

    Введите nginx. Если установлены только Apache или nginx, это автоматически определяется установщиком и никаких вопросов не задается.)

    Чтобы установить ISPConfig 3.2 из последней выпущенной версии, сделайте следующее:

    cd /tmp
    wget http://www.ispconfig.org/downloads/ISPConfig-3-stable.tar.gz
    tar xfz ISPConfig-3-stable.tar.gz
    cd ispconfig3_install/install/

    Следующим шагом будет запуск

    php -q install.php

    Это запустит установщик ISPConfig 3. Установщик настроит для вас все службы, такие как Postfix, Nginx, Dovecot и т. д.

    # php -q install.php

    --------------------------------------------------------------------------------
    _____ ___________ _____ __ _ ____
    |_ _/ ___| ___ \ / __ \ / _(_) /__ \
    | | \ `--.| |_/ / | / \/ ___ _ __ | |_ _ __ _ _/ /
    | | `--. \ __/ | | / _ \| '_ \| _| |/ _` | |_ |
    _| |_/\__/ / | | \__/\ (_) | | | | | | | (_| | ___\ \
    \___/\____/\_| \____/\___/|_| |_|_| |_|\__, | \____/
    __/ |
    |___/
    --------------------------------------------------------------------------------

    >> Initial configuration
    Operating System: Debian 10.0 (Buster) or compatible
    Following will be a few questions for primary configuration so be careful.
    Default values are in [brackets] and can be accepted with <ENTER>.
    Tap in "quit" (without the quotes) to stop the installer.

    Select language (en,de) [en]: <-- Hit Enter
    Installation mode (standard,expert) [standard]: <-- Hit Enter
    Full qualified hostname (FQDN) of the server, eg server1.domain.tld [server1.canomi.com]: <-- Hit Enter
    MySQL server hostname [localhost]: <-- Hit Enter
    MySQL server port [3306]: <-- Hit Enter
    MySQL root username [root]: <-- Hit Enter
    MySQL root password []: <-- Enter your MySQL root password
    MySQL database to create [dbispconfig]: <-- Hit Enter
    MySQL charset [utf8]: <-- Hit Enter
    Apache and nginx detected. Select server to use for ISPConfig: (apache,nginx) [apache]: <-- nginx

    Configuring Postgrey
    Configuring Postfix
    Generating a 4096 bit RSA private key
    .......................................................................++
    ........................................................................................................................................++
    writing new private key to 'smtpd.key'
    -----
    You are about to be asked to enter information that will be incorporated
    into your certificate request.
    What you are about to enter is what is called a Distinguished Name or a DN.
    There are quite a few fields but you can leave some blank
    For some fields there will be a default value,
    If you enter '.', the field will be left blank.
    -----
    Country Name (2 letter code) [AU]: <-- Enter 2 letter country code
    State or Province Name (full name) [Some-State]: <-- Enter the name of the  state
    Locality Name (eg, city) []: <-- Enter your city
    Organization Name (eg, company) [Internet Widgits Pty Ltd]: <-- Enter company name or press enter
    Organizational Unit Name (eg, section) []: <-- Hit Enter
    Common Name (e.g. server FQDN or YOUR name) []: <-- Enter the server hostname, in my case: server1.example.com
    Email Address []: <-- Hit Enter
    Configuring Mailman
    Configuring Dovecot
    Configuring Spamassassin
    Configuring Amavisd
    Configuring Getmail
    Configuring BIND
    Configuring Jailkit
    Configuring Pureftpd
    Configuring Nginx
    Configuring vlogger
    [INFO] service Metronome XMPP Server not detected
    Configuring UFW Firewall
    Configuring Fail2ban
    [INFO] service OpenVZ not detected
    Configuring Apps vhost
    Installing ISPConfig
    ISPConfig Port [8080]:
    Admin password [admin]: <-- Enter desired ISPConfig admin user password here
    Do you want a secure (SSL) connection to the ISPConfig web interface (y,n) [y]: <-- Hit Enter
    Generating RSA private key, 4096 bit long modulus
    .......................++
    ................................................................................................................................++
    e is 65537 (0x10001)
    You are about to be asked to enter information that will be incorporated
    into your certificate request.
    What you are about to enter is what is called a Distinguished Name or a DN.
    There are quite a few fields but you can leave some blank
    For some fields there will be a default value,
    If you enter '.', the field will be left blank.
    -----
    Country Name (2 letter code) [AU]: <-- Enter 2 letter country code
    State or Province Name (full name) [Some-State]: <-- Enter the name of the  state
    Locality Name (eg, city) []: <-- Enter your city
    Organization Name (eg, company) [Internet Widgits Pty Ltd]: <-- Enter company name or press enter
    Organizational Unit Name (eg, section) []: <-- Hit Enter
    Common Name (e.g. server FQDN or YOUR name) []: <-- Enter the server hostname, in my case: server1.example.com
    Email Address []: <-- Hit Enter
    Please enter the following 'extra' attributes
    to be sent with your certificate request
    A challenge password []: <-- Hit Enter
    An optional company name []: <-- Hit Enter
    writing RSA key

    Configuring DBServer
    Installing ISPConfig crontab
    no crontab for root
    no crontab for getmail
    Detect IP addresses
    Restarting services ...
    Installation completed.

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

    После этого вы можете получить доступ к ISPConfig 3 по адресу http(s)://server1.example.com:8080/ или http(s)://192.168.1.100:8080/ (http или https зависит от того, что вы выбрали во время установки). Войдите в систему с именем пользователя admin и паролем admin (вы должны изменить пароль по умолчанию после первого входа):

    Наконец, мы исправляем некоторые разрешения установки RoundCube.

    chown root:ispapps /etc/roundcube/debian-db.php
    chmod 640 /etc/roundcube/debian-db.php
    chown root:ispapps /etc/roundcube/config.inc.php
    chmod 640 /etc/roundcube/config.inc.php
    chown -R ispapps:adm /var/log/roundcube
    chmod -R 750 /var/log/roundcube
    chown -R ispapps:ispapps /var/lib/roundcube/temp
    chmod -R 750 /var/lib/roundcube/temp

    Теперь система готова к использованию.

    Существует несколько плагинов для интеграции RoundCube Webmail с ISPConfig, посмотрите здесь инструкции по установке плагина ISPConfig RoundCube.

    20.1 ISPConfig 3 Руководство

    Чтобы узнать, как использовать ISPConfig 3, я настоятельно рекомендую скачать руководство по ISPConfig 3.

    На более чем 300 страницах он охватывает концепцию ISPConfig (администрирование, торговые посредники, клиенты), объясняет, как установить и обновлять ISPConfig 3, включает справку по всем формам и полям форм в ISPConfig вместе с примерами допустимых входных данных и предоставляет учебные пособия. для наиболее распространенных задач в ISPConfig 3. В нем также рассказывается, как сделать ваш сервер более безопасным, и в конце есть раздел по устранению неполадок.

    21 Загрузка образа виртуальной машины из этого руководства

    Это руководство доступно в виде готового к использованию образа виртуальной машины в формате ovf/ova, который совместим с VMWare и Virtualbox. Образ виртуальной машины использует следующие данные для входа:

    Вход по SSH/оболочке

    Имя пользователя:admin
    Пароль:howtoforge

    Имя пользователя: root
    Пароль: howtoforge

    Вход в ISPConfig

    Имя пользователя: admin
    Пароль: howtoforge

    Вход в MySQL

    Имя пользователя: root
    Пароль: howtoforge

    IP виртуальной машины 192.168.0.100, его можно изменить в файле /etc/network/interfaces. Пожалуйста, измените все указанные выше пароли, чтобы защитить виртуальную машину.

    22 ссылки

    • Debian: http://www.debian.org/
    • ISPConfig: http://www.ispconfig.org/