* где nextcloud.dmosk.ru — домен, на котором будет работать сервис; /etc/nginx/ssl — каталог, в котором будут храниться сертификаты; /var/www/nextcloud— каталог с порталом.
Создаем каталог для хранения сертификатов и переходим в него:
Открываем браузер и переходим по адресу https://nextcloud.dmosk.ru, где nextcloud.dmosk.ru — адрес облачного сервиса.
Задаем логин и пароль для администратора. В качестве базы данных выбираем MySQL/MariaDB (если предлагается выбор) и вводим в качестве логина, пароля и базы nextcloud.
* где admin — учетная запись пользователя, чей пароль хотим сбросить.
Подключение папки nextcloud по webdav
Мы можем подключить пользовательские данные nextcloud в качестве сетевого диска или раздела. Рассмотрим процесс для Windows и Linux.
Windows
Для начала необходимо включить службу «Веб-клиент». Для этого открываем от администратора командную строку и вводим команды:
sc config webclient start= auto
net start webclient
* первая команда включит автозапуск службы; вторая — запустит ее.
После открываем командную строку от пользователя и создаем сетевой диск командой:
net use <Буква диска>: https://<путь до nextcloud>/remote.php/webdav /user:user password
Например, для нашей настройки:
net use N: https://nextcloud.dmosk.ru/remote.php/webdav /user:admin password
* где N — буква сетевого диска; nextcloud.dmosk.ru — адрес нашего сервера; admin — учетная запись, которая была создана при установке системы; password — пароль от пользователя admin.
Ограничение на копирование файла с webdav
В Windows при попытке скопировать большой файл с папки webdav, мы можем получить ошибку «Ошибка 0x800700DF: Размер файла превышает установленное ограничение, сохранение файла невозможно.»:
Для решения проблемы необходимо на клиенте разрешить больший объем для загрузки файлов. Это делается в реестре — ветка HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesWebClientParameters, параметр FileSizeLimitInBytes. Для примера, если задать значение 4294967295 (максимально возможное), то мы получим ограничение в 4 Гб.
В данной инструкции выполнена настройка полноценного почтового сервера на Linux Ubuntu Server (протестирована на версии 20.04). Список всех особенностей и возможностей:
Поддержка шифрования;
Хранение почты на сервере;
Защита от СПАМа и вирусов;
Почтовая система на базе Postfix;
Поддержка виртуальных доменов;
Хранение части настроек в MariaDB;
Доступ к почте с помощью веб-интерфейса (Roundcube);
Подключение к почтовым ящикам по POP3 и IMAP (Dovecot);
Возможность управления почтовыми ящиками с помощью PostfixAdmin.
1. Подготовка системы
И так, данная инструкция написана под систему Linux Ubuntu Server. Предварительно, выполним следующие действия.
Общие настройки
Обновляем систему:
apt-get update && apt-get upgrade
Задаем правильное имя серверу — это важный шаг, так как большинство антиспам систем выполняют проверки, обращаясь к серверу по имени в ожидании ответа:
hostnamectl set-hostname relay.dmosk.ru
* необходимо указать FQDN-имя, которое будет доступно из глобальной сети. В данном примере указано relay.dmosk.ru.
Устанавливаем пакет для синхронизации времени:
apt-get install chrony
Задаем временную зону (в данном примере московское время):
timedatectl set-timezone Europe/Moscow
* чтобы получить список всех возможных зон, вводим timedatectl list-timezones.
Разрешаем сервис для обновления времени:
systemctl enable chrony
Настройка безопасности
Заранее открываем порты на брандмауэре с помощью iptables:
443 — защищенный HTTPS для порталов Postfixadmin и Roundcube;
Для сохранения правил установим пакет:
apt-get install iptables-persistent
И выполняем команду:
netfilter-persistent save
2. Настройка веб-сервера: NGINX + PHP + MariaDB
Система управления PostfixAdmin работает как веб-приложение, разработанное на PHP, а информацию хранит в базе данных. В нашем примере будет использоваться веб-сервер на NGINX, а база данных — MariaDB.
Установка NGINX
Устанавливаем nginx командой:
apt-get install nginx
Разрешаем автозапуск сервиса:
systemctl enable nginx
Проверяем работоспособность веб-сервера, обратившись к нему в браузере по адресу http://<IP-адрес сервера>. Если видим заголовок «Welcome to nginx!», NGINX настроен верно.
PHP + PHP-FPM + NGINX
Устанавливаем php и php-fpm:
apt-get install php php-fpm
Настраиваем NGINX:
vi /etc/nginx/sites-enabled/default
В разделах http — server указываем, чтобы первым индексным файлом был index.php, а также добавляем настройку для обработки запросов php (location):
server {
listen 80 default_server;
listen [::]:80 default_server;
...
index index.php ...
...
location ~ .php$ {
set $root_path /var/www/html;
fastcgi_pass unix:/run/php/php7.4-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $root_path$fastcgi_script_name;
include fastcgi_params;
fastcgi_param DOCUMENT_ROOT $root_path;
}
}
* где /var/www/html — каталог для размещения данных nginx по умолчанию; /run/php/php7.4-fpm.sock — путь до сокет-файла php-fpm (обратите внимание, что точное значение зависит от используемой вервии php).
Разрешаем автозапуск php-fpm:
systemctl enable php7.4-fpm
* где php7.4-fpm зависит от используемой версии php, которую можно посмотреть командой php -v.
Перезапускаем nginx:
systemctl restart nginx
Для проверки, создаем индексный файл в директории сайта со следующим содержимым:
vi /var/www/html/index.php
<?php phpinfo(); ?>
Открываем сайт в браузере по его IP-адресу. На открывшейся странице мы должны увидеть подробную информацию по php:
MariaDB
Устанавливаем сервер баз данных следующей командой:
apt-get install mariadb-server
Включаем автозапуск сервиса баз данных:
systemctl enable mariadb
Задаем пароль для пользователя sql root:
mysqladmin -u root password
3. Установка и настройка PostfixAdmin
Устанавливаем дополнительные компоненты для PHP:
apt-get install php-mysql php-mbstring php-imap
Для применения установленных пакетов, перезапускаем обработчик скриптов:
В директории сайтов nginx создаем каталог для postfixadmin и распаковываем в него архив:
mkdir /var/www/html/postfixadmin
tar -C /var/www/html/postfixadmin -xvf postfixadmin.tar.gz --strip-components 1
Создаем каталог templates_c внутри папки портала (без него не запустится установка):
mkdir /var/www/html/postfixadmin/templates_c
* в противном случае, при попытке зайти в панель управления после ее установки мы получим ошибку ERROR: the templates_c directory doesn’t exist or isn’t writeable for the webserver.
* несмотря на то, что мы используем веб-сервер nginx, php-fpm по умолчанию, запускается от пользователя www-data.
Создаем базу данных postfix и учетную запись в mariadb:
mysql -u root -p
> CREATE DATABASE postfix DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
* где postfix — имя базы.
> GRANT ALL ON postfix.* TO 'postfix'@'localhost' IDENTIFIED BY 'postfix123';
* где postfix — имя учетной записи; postfix123 — пароль; localhost разрешает подключение только с локального сервера.
Выходим из командной оболочки MariaDB:
> q
Создаем конфигурационный файл postfixadmin:
vi /var/www/html/postfixadmin/config.local.php
* в предыдущих версиях использовался файл config.inc.php. В новых версиях его не рекомендуется править, а использовать config.local.php, который переопределяет настройки.
* где configured говорит приложению, что администратор закончил его конфигурирование; default_language — используемый язык по умолчанию; database_password — пароль для базы данных, который мы задали на предыдущем шаге; emailcheck_resolve_domain — задает необходимость проверки домена при создании ящиков и псевдонимов.
Запускаем браузер и вводим адрес http://<IP-адрес сервера>/postfixadmin/public/setup.php — откроется страница для установки PostfixAdmin.
Задаем дважды пароль установки и генерируем хэш, кликнув по Generate setup_password hash:
После копируем хэш, который появится под кнопкой:
Открываем конфигурационный файл:
vi /var/www/html/postfixadmin/config.local.php
И добавляем строчку:
...
$CONF['setup_password'] = '$2y$10$D...R32';
* где ‘$2y$10$D…R32’ — скопированный хэш.
Перезагружаем страницу http://<IP-адрес сервера>/postfixadmin/public/setup.php — теперь у нас появится форма для ввода нашего пароля, созданного на предыдущем этапе. Вводим его и кликаем по Login with setup_password:
Будет выполнена установка PostfixAdmin.
Если в процессе установки система выведет ошибки, необходимо самостоятельно с ними разобраться. Как правило, они могут сводиться к отсутствию необходимых пакетов, которых может не оказаться в системе по умолчанию.
После установки в нижней части страницы должна быть форма добавления суперпользователя — вводим данные:
* где Setup password — пароль, который мы ввели на предыдущей странице; Админ — учетная запись для входа в панель управления PostfixAdmin; Пароль — новый пароль для создаваемой учетной записи.
Установка завершена. Переходим в браузере на страницу http://<IP-адрес сервера>/postfixadmin/public/login.php
Вводим логин и пароль для созданного пользователя. Мы должны войти в postfix.admin.
Однако, конкретно, в моем случае, пользователь не создавался при установке системы и необходимо было создать администратора вручную. Если это потребуется, в консоли сервера подключаемся к СУБД:
Теперь переходим на страницу http://<IP-адрес сервера>/postfixadmin/public/login.php вводим логин root@dmosk.ru и пароль qwe12345 — мы должны оказаться в системе управления почтой. Первым делом, переходим в Список админов — Новый админ:
Создаем своего пользователя. После чего, можно удалить того, что создали через командную строку.
4. Установка и настройка Postfix
Установка Postfix в Ubuntu выполняется командой:
apt-get install postfix postfix-mysql
* помимо самого postfix, мы также установим postfix-mysql для возможности работы с СУБД.
В процессе установки должно появиться окно «Postfix Configuration» — оставляем Internet Site:
В следующем окне оставляем имя сервера и нажимаем Enter.
После установки пакетов создаем учетную запись, от которой мы будем работать с каталогом виртуальных почтовых ящиков:
groupadd -g 1024 vmail
useradd -d /home/mail -g 1024 -u 1024 vmail -m
* сначала мы создаем группу vmail и guid 1024, после — пользователя vmail с uid 1024 и домашней директорией /home/mail — в ней у нас будет храниться почта. Обратите внимание, что в некоторых системах идентификатор группы и пользователя 1024 может быть занят. В таком случае необходимо создать другой, а в данной инструкции ниже заменить все 1024 на альтернативный.
Если директория для почты ранее уже была создана, то необходимо задать в качестве владельца нашего созданного пользователя:
chown vmail:vmail /home/mail
Теперь открываем на редактирование конфигурационный файл почтового сервера:
mydestination — указываем, для каких доменов принимаем входящую почту.
inet_protocols — данный параметр задаст протокол для работы postfix. В данном примере на ipv4 — если в нашей системе не используется IPv6, могут возникнуть проблемы при маршрутизации почты. Также можно задать значения all или ipv6.
smtpd_tls_cert_file — полный путь до публичного сертификата.
smtpd_tls_key_file — полный путь до приватного сертификата.
Если имя сервера отличается от имени, по которому сервер будет зарегистрирован в DNS, задаем опцию:
myhostname = mx01.dmosk.ru
Теперь в конец конфигурационного файла допишем следующее:
smtpd_sasl_exceptions_networks — исключение сетей от использования шифрования.
smtpd_sasl_security_options — дополнительные опции настройки sasl.
broken_sasl_auth_clients — эту опцию прописываем для клиентов MS Outlook.
smtpd_sasl_type — указывает тип аутентификации.
smtpd_sasl_path — путь до временных файлов обмена информацией с Dovecot. Указывается либо абсолютный путь, либо относительный queue_directory (по умолчанию /var/spool/postfix). Итого, полный путь — /var/spool/postfix/private/auth.
smtp_use_tls — по возможности, использовать шифрованное соединение для подключение к другому серверу SMTP при отправке письма.
smtpd_use_tls — указывает клиентам на наличие поддержки TLS.
smtpd_tls_auth_only — использовать только TLS.
smtpd_helo_required — требовать начинать сессию с приветствия.
Создаем файл с настройками обращения к базе с алиасами:
vi /etc/postfix/mysql_virtual_alias_maps.cf
user = postfix
password = postfix123
hosts = localhost
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = '1'
* где user и password — логин и пароль для подключения к MySQL; hosts — имя сервера баз данных (в нашем случае, локальный сервер); dbname — имя базы данных; query — шаблон запроса к данным.
Создаем файл с инструкцией получения данных по виртуальным доменам:
vi /etc/postfix/mysql_virtual_domains_maps.cf
user = postfix
password = postfix123
hosts = localhost
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%u'
И файл с почтовыми ящиками:
vi /etc/postfix/mysql_virtual_mailbox_maps.cf
user = postfix
password = postfix123
hosts = localhost
dbname = postfix
query = SELECT CONCAT(domain,'/',maildir) FROM mailbox WHERE username='%s' AND active = '1'
Открываем файл master.cf и дописываем в самый конец:
vi /etc/postfix/master.cf
submission inet n - n - - smtpd
-o smtpd_tls_security_level=may
-o smtpd_sasl_auth_enable=yes
-o smtpd_sasl_type=dovecot
-o smtpd_sasl_path=/var/spool/postfix/private/auth
-o smtpd_sasl_security_options=noanonymous
-o smtpd_sasl_local_domain=$myhostname
smtps inet n - n - - 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
dovecot unix - n n - - pipe
flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -d ${recipient}
* необходимо убедиться, что в содержимом файла нет других раскомментированных опций для submission, smtps и dovecot (по умолчанию, их нет). В данном случае, мы настроили работу postfix на портах 25, 465 и 587. В файле master.cf мы настраиваем работу вспомогательных сервисов для Postfix. Описание каждого сервиса начинается с новой строки без отступа. Затем идут настройки для сервиса и параметры запуска. Для примера, рассмотрим первую добавленную строку — submission inet n — n — — smtpd:
submission — имя сервиса. Возможно использование заранее определенных в postfix служб или создание своих. В данном примере submission для подключения MUA по порту 587 при отправке почты.
inet — тип обслуживания. Возможны варианты inet (сокет TCP/IP), unix (потоковый сокет), unix-dgram (сокет дейтаграммы), fifo (именованный канал очереди), pass (потоковый сокет UNIX-домена).
первый «n» — является ли сервис частным и должен быть ограниченным. Возможны варианты y или n. Для типа обслуживания inet может быть только n.
первый «-« — работает ли служба с правами root. Возможны варианты y, n и —. Прочерк означает неприменимость данного параметра к конкретному сервису.
второй «n» — должна ли служба работать в окружении chroot. Возможны варианты y или n.
второй «-« — через какое время в секундах пробудить службу, если она неактивна.
третий «-» — максимальное количество одновременно выполняемых процессов, которые может запустить данный сервис.
smtpd — выполняемая команда.
* после команды идут аргументы ее запуска. Они могут переопределять параметры, заданные в main.cf. Каждый аргумент записывается с новой строки и начинается с двух пробелов. В данном примере мы используем следующие аргументы:
smtpd_tls_security_level — задает уровень безопасности с применением TLS. В данном примере may говорит о возможности его использования.
smtpd_sasl_path — путь до временных файлов обмена информацией с сервером хранения почты (в нашем случае Dovecot). Указывается либо абсолютный путь, либо относительный queue_directory.
smtpd_sasl_security_options — дополнительные опции настройки sasl.
smtpd_sasl_local_domain — добавить домен для пользователей, которые проходят smtp-аутентификацию.
syslog_name — префикс названия службы при занесении ее в системный журнал.
smtpd_tls_wrappermode — запускать ли службу в нестандартном режиме (для поддержки TLS).
smtpd_client_restrictions — настройки ограничения клиентских соединений. В данном примере разрешить только авторизованных.
Генерируем сертификаты безопасности. Для этого создаем каталог, в котором их разместим:
* сертификат сгенерирован на 1461 день, ключи subj могут быть произвольными, CN необходимо указать в соответствии с именем сервера, по которому мы будем подключаться к почте. * если мы хотим использовать сертификат, который будет проходить все проверки безопасности, его нужно купить или запросить у Let’s Encrypt.
Разрешаем запуск postfix:
systemctl enable postfix
Перезапускаем его:
systemctl restart postfix
5. Настройка Dovecot
Устанавливаем Dovecot с компонентом для работы с СУБД:
* в данном примере сообщения будут храниться в продвинутом формате maildir в каталоге /home/mail/<почтовый домен>/<логин пользователя>.
Настраиваем слушателя для аутентификации:
vi /etc/dovecot/conf.d/10-master.conf
service auth {
unix_listener /var/spool/postfix/private/auth {
mode = 0666
user = postfix
group = postfix
}
unix_listener auth-userdb {
mode = 0600
user = vmail
group = vmail
}
}
* в данном примере мы настраиваем сервис для аутентификации и создаем два прослушивателя: /var/spool/postfix/private/auth — для возможности постфиксом использовать авторизацию через Dovecot (обращаем внимание, что /var/spool/postfix/private/auth — это тот же private/auth, который был прописан нами в postfix); auth-userdb — сокет для авторизации через dovecot-lda. Опция mode задает права на сокет, например, 666 позволит любому пользователю к нему подключиться; user и group задает пользователя и группу владельцев на сокет.
А также в этом файле добавим строки:
service stats {
unix_listener stats-reader {
user = vmail
group = vmail
mode = 0660
}
unix_listener stats-writer {
user = vmail
group = vmail
mode = 0660
}
}
* в противном случае, мы увидим в логе ошибку error net_connect_unix(/var/run/dovecot/stats-writer) failed permission denied, так как у пользователя vmail не будет прав.
* ssl = required укажет dovecot требовать от клиентов использования шифрования; ssl_cert — путь до открытого сертификата (также нами указывался в postfix); ssl_key — путь к закрытому ключу.
Настроим автоматическое создание каталогов при первом подключении пользователя к ящику:
* в данном примере мы указали на файл, в котором будут находиться настройки для получения пользователей и паролей из базы данных. Данная настройка является настройкой по умолчанию и, в большинстве случаев, ее не нужно менять без необходимости указать свой путь.
Откроем на редактирование файл с настройками работы с mysql:
vi /etc/dovecot/dovecot-sql.conf.ext
В самый низ добавим:
driver = mysql
connect = host=localhost dbname=postfix user=postfix password=postfix123
default_pass_scheme = MD5-CRYPT
password_query = SELECT password FROM mailbox WHERE username = '%u'
user_query = SELECT maildir, 1024 AS uid, 1024 AS gid FROM mailbox WHERE username = '%u'
user_query = SELECT CONCAT('/home/mail/',LCASE(`domain`),'/',LCASE(`maildir`)), 1024 AS uid, 1024 AS gid FROM mailbox WHERE username = '%u'
* в данном примере мы настроили запрос на получение данных из базы mysql (mariadb). password_query — запрос на получение пароля из таблицы mailbox; user_query — запрос на получение данных пользователя (домашняя почтовая директория, идентификатор 1024 (идентификатор созданного нами ранее пользователя vmail).
И, напоследок, настраиваем интерфейс, на котором будет слушать dovecot:
vi /etc/dovecot/dovecot.conf
listen = *
* по умолчанию, dovecot слушает также на ipv6 (listen = *, ::). Если на сервере не используется 6-я версия протокола TCP/IP, в логах dovecot появятся ошибки: master: Error: service(imap-login): listen(::, 143) failed: Address family not supported by protocol master: Error: service(imap-login): listen(::, 993) failed: Address family not supported by protocol
Разрешаем запуск dovecot:
systemctl enable dovecot
Перезапускаем dovecot:
systemctl restart dovecot
6. Создаем первый почтовый ящик и проверяем работу сервера
В браузере вводим в адресной строке путь до Postfixadmin — http://<IP-адрес сервера>/postfixadmin/public/.
Вводим логин и пароль от административной учетной записи, которую мы создали на шаге 3. Перед нами появится страница управления учетными записями.
Переходим в Список доменов — Новый домен:
Заполняем формы и нажимаем по Добавить домен:
Теперь переходим в Обзор — Создать ящик:
Вводим данные нового пользователя и нажимаем по Создать ящик:
Теперь можно подключиться к серверу с помощью любой почтовой программы, например, Mozilla Thunderbird.
Параметры для подключения:
Сервер: имя сервера или его IP-адрес (не желательно, так как сертификат выдается по доменному имени).
IMAP: 143 STARTTLS или 993 SSL/TLS
POP3: 110 STARTTLS или 995 SSL/TLS
SMTP: 25 STARTTLS или 465 SSL/TLS или 587 STARTTLS
* для корректной работы сервера на портах 993, 995, 465 (SSL/TLS) необходим правильный сертификат (для нашего домена и выпущенный доверенным центром сертификации).
7. Устанавливаем и настраиваем Roundcube Webmail
В данной инструкции мы разберем использование веб-клиента Roundcube. При необходимости, можно установить другой, например, WebMail Lite или несколько одновременно.
На официальном сайте заходим на страницу загрузки Roundcube. Смотрим ссылку на версию продукта с длительной поддержкой (LTS):
Используем ссылку, чтобы загрузить архив программы:
* первую строку мы редактируем, а вторую добавляем. В первой строке roundcube:roundcube123 — логин и пароль для доступа к базе данных; localhost — сервер базы данных; roundcubemail — имя базы данных. Вторая строка разрешает установку портала.
Также дописываем в конфигурационный файл следующее:
* в данном примере мы задаем московское время и возможность загружать файл размером в 30 Мб (это будет максимальным объемом вложений, которые можно отправлять через веб-интерфейс).
Перезагружаем php-fpm:
systemctl restart php7.4-fpm
Настроим nginx:
vi /etc/nginx/nginx.conf
Добавим строку в раздел http:
http {
...
client_max_body_size 30M;
...
* данной настройкой мы также разрешим загрузку файлов размером 30 Мб.
Перезапустим nginx для применения настройки:
systemctl restart nginx
Теперь открываем браузер и переходим по адресу http://<IP-адрес сервера>/webmail/installer/. В самом низу нажимаем по кнопке Next. Если кнопка будет неактивна, проверяем, что нет ошибок (NOT OK).
На следующей странице проверяем, что все пункты находятся в состоянии OK. Установка выполнена.
Открываем конфигурационный файл roundcube:
vi /var/www/html/webmail/config/config.inc.php
Запрещаем установку портала:
$config['enable_installer'] = false;
После удаляем папку с установочными скриптами:
rm -R /var/www/html/webmail/installer
И заходим в браузере по адресу http://<IP-адрес сервера>/webmail/. Вводим в качестве логина адрес почты созданного пользователя и его пароль.
8. Защищаемся от вирусов и СПАМа
Антивирус требует много ресурсов. Будьте готовы, что после его запуска сервер начнет работать медленнее и понадобится добавить ресурсы.
Установка и настройка Clamav + Amavisd
Устанавливаем необходимые для работы антивируса и антиспама компоненты:
* по умолчанию amavis не выполняем никаких проверок — для включения сканирования на вирусы снимаем комментарий с bypass_virus_checks_maps, а для сканирования на СПАМ — bypass_spam_checks_maps.
* итак, данной настройкой мы создадим два вспомогательных сервиса scan и 127.0.0.1:10025 (сервис без имени, он просто будет слушать на порту 10025 — это порт по умолчанию, на который отправляет сообщение amavis после выполнения проверки). Также, мы используем следующие опции:
smtp_send_xforward_command — передавать ли в сканирование сообщение с исходными именем клиента и IP-адресом. В данном примере, да.
smtp_enforce_tls — требовать ли TLS.
content_filter — приложение для сканирования. В данном примере сканирование отключено.
receive_override_options переопределяет опции в main.cf. В нашем случае, no_unknown_recipient_checks отключает попытки выяснить, является ли получатель неизвестным; no_header_body_checks отключает проверки заголовков и тала писем.
пустые значения для smtpd_helo_restrictions, smtpd_client_restrictions, smtpd_sender_restrictions отключают ограничения для данных опций.
smtpd_recipient_restrictions — контролирует ответ Postfix на SMTP-команду RCPT TO. Здесь мы разрешаем только соединения от узлов, перечисленных в mynetworks.
mynetworks_style=host указывает postfix, что он должен пересылать почту только с локального компьютера.
smtpd_authorized_xforward_hosts укажет, какие удаленные клиенты могут использовать XFORWARD. В данном случае локальный компьютер.
Перезапускаем postfix:
systemctl restart postfix
Настройка обновлений антиспама
Для обновления базы антиспама выполняем команду:
sa-update --nogpg --verbose
Для настройки автоматического обновления, редактируем cron:
crontab -e
30 3 * * * /usr/bin/sa-update
* в данном примере, каждый день в 03:30 будет запускаться процесс обновления антиспама.
Проверка
Для проверки антивируса отправляем сообщение со следующим содержимым:
Большинство почтовых систем экранинуют вирусную последовательность и письмо нормально пройдет мимо нашего антивируса. Чтобы сделать корректный тест, необходимо отправить письмо SMTP-командами.
Письмо не должно дойти, а в логе (/var/log/maillog) мы увидим строку:
Все письма со спамом и вирусами будут перемещаться в карантин. Если мы хотим перенаправлять все подобные сообщения на специальный ящик, то необходимо настроить amavis.
* где $spam_quarantine_to указываем на адрес для перенаправления СПАМ-писем; $virus_quarantine_to — почта для писем с обнаруженными вирусами.
После перезагрузим amavis:
systemctl restart amavis
Пробуем отправить сообщения с тестовыми сигнатурами на СПАМ и вирус — письма должны быть перенаправлены на указанные адреса.
Антиспам средствами Postfix
В MTA Postfix встроен свой механизм проверки заголовков входящих сообщений. Правила размещаются в 7 секций, обработка которых выполняется в следующем порядке:
Чтобы лучше понять принцип, мы должны знать SMTP-команды при выполнении отправки почты. И так, порядок, следующий:
Соединение с сервером.
Команда HELO. Приветствие, в котором отправитель называет свое имя, по которому можно проверить, соответствует ли оно правилам именования и своему IP-адресу.
MAIL FROM — указывает адрес отправителя. Выполняется для sender и relay.
RCPT TO — кому отправляем письмо.
DATA — команда сообщает о готовности отправить письмо с заголовками и текстом.
END-OF-DATA — отправка письма.
И так, для настройки антиспама открываем конфигурационный файл main.cf:
reject_non_fqdn_sender — отклонить соединение, если адрес отправителя указан неправильно (согласно RFC).
reject_unknown_sender_domain — запрещает запрос, если Postfix не является конечным пунктом назначения для адреса отправителя, а домен MAIL FROM не имеет 1) DNS-записи MX и DNS-записи A или 2) искаженной MX-записи, такой как запись с MX-именем хоста нулевой длины.
reject_non_fqdn_recipient — запретить соединение, если адрес получателя указан неправильно (согласно RFC).
reject_unauth_destination — отклонить соединение, если письмо не пересылается согласно правилу relay_domains или сервер не является адресом назначения. Другими словами, запрещает использование нашего сервера в качестве open relay.
reject_unknown_recipient_domain — отклонить запрос, если Postfix не является конечным пунктом назначения для домена получателя, а домен RCPT TO не имеет 1) DNS-записи MX и DNS-записи A или 2) неверно сформированной MX-записи, такой как запись с именем хоста MX нулевой длины.
reject_unverified_recipient — отклонить запрос, если известно, что почта на адрес RCPT TO отклоняется или когда адрес получателя не доступен.
permit — разрешает соединение. Ставим в конец каждого блока ограничений (если ограничения не сработали, то разрешаем).
* это более или менее мягкие правила. Их можно использовать первое время, пока тестируем сервер.
После внесения всех правок, необходима перезагрузка Postfix:
systemctl restart postfix
Обучение антиспама
Мы установили amavis, который проверяет почту на СПАМ средствами spamassassin. Последний без обучения, практически, бесполезен. Синтаксис команды для обучения следующий:
sa-learn --spam <папка с нежелательными письмами>
sa-learn --ham <папка письмами, которые ошибочно определены как СПАМ>
Таким образом, первая команда укажет spamassassin какие письма являются нежелательными, а вторая — не несущими рекламный характер.
Хорошей практикой будет договориться с пользователями о ручном помещении нежелательной почты из входящих в папку СПАМ. Тогда мы сможем пройтись скриптом по всем ящикам на сервере и обучать антиспам. Например, такой командой:
* в данном примере мы сказали spamassassin найти в каталогах пользователей папки Спам, Spam, Junk, Junk E-mail (данные каталоги являются типичными для помещения СПАМа) и провести обучение.
Чтобы минимизировать количество ложных срабатываний, необходимо проводить обучение с ключом —ham. В нашем примере мы отправляем все нежелательные письма на ящик spam. В таком случае, необходимо вручную находить ложные срабатывания и переносить их в специальную папку, например Ham. Тогда команда для обучения будет такой:
Для отправки почты на другие почтовые серверы необходимо правильно сконфигурировать сервер, чтобы письма не попадали в СПАМ. Чтобы это сделать, выполняем инструкции ниже.
Настройки DNS для сервера
Многие почтовые серверы делают запросы в систему доменных имен для проверки легитимности почтового сервера, отправляющего почту. При настройке MTA очень важно правильно добавить необходимые записи в DNS.
1. rDNS. Обратная зона используется для проверки соответствия имени сервера в приветствии с именем, которое возвращает NS сервер при запросе по PTR-записи.
И так, для создания записи в обратной зоне, необходимо написать письмо Интернет провайдеру, к сети которого подключен сервер или хостеру, если почтовый сервер настроен на VPS. IP-адрес нашего сервера должен вести на имя, которым приветствуется наш postfix — можно посмотреть командой:
postconf -n smtpd_banner
Если мы получим пустой ответ, то вводим:
postconf -n myhostname
Если и в этот вариант не вернет ответ, вводим:
hostname
2. А-запись. Также необходимо, чтобы имя сервера, которым представляется почтовый сервер разрешалось в IP-адрес.
Для этого заходим в консоль управления зоной нашего домена и создаем запись типа А для сопоставления имени сервера с IP-адресом, на котором слушает запросы данный сервер.
Настройки DNS для домена
Для каждого домена, для которого будем отправлять почту создаем записи:
Подпись писем не является обязательной, но помогает не попадать в СПАМ. DKIM настраивается для каждого домена, а также должна создаваться специальная запись в DNS. Рассмотрим создание и настройку DKIM в amavisd.
* в данном примере мы закомментировали первую строку и раскомментировали вторую. Это укажет amavis, что он должен запускаться и работать на двух портах.
Теперь нам нужно на основе данного вывода создать в DNS запись TXT. В данном примере, нужно создать запись c именем dkim._domainkey в зоне dmosk.ru и значением «v=DKIM1; p=MIGfMA0SD…wIDAQAB».
Проверить корректность настройки DKIM можно командой:
amavisd-new testkeys
Переходим к настройке Postfix. Мы должны добавить отправку всех исходящих писем на проверку в amavis на порт 10026 и принимать обратно письма на порт 10027.
Открываем файл:
vi /etc/postfix/master.cf
Отредактируем submission и smtps, добавив content_filter:
smtp inet n - y - - smtpd
-o content_filter=scan:[127.0.0.1]:10026
...
submission inet n - n - - smtpd
-o content_filter=scan:[127.0.0.1]:10026
...
smtps inet n - n - - smtpd
-o content_filter=scan:[127.0.0.1]:10026
...
После применения квот мы сможем наблюдать в почтовом клиенте Roundcube информацию об оставшемся дисковом пространстве:
… или в Webmail Lite:
12. Автоматическая настройка почтовых клиентов
Для автоматического конфигурирования почтовых клиентов необходимо настроить сервис autodiscover. Для этого настраиваем веб-сервер, который будет возвращать почтовые настройки для домена.
Предположим, мы сделали ошибку в написании адреса электронной почты, но не хотим удалять учетную запись и создавать ее по новой. Рассмотрим смену email-адреса на примере sekretar@dmosk.ru -> secretar@dmosk.ru.
Нам нужно внести изменения в базу данных — для этого заходим в оболочку sql:
mysql -uroot -p
Вводим пароль, который создавали после установки СУБД.
Используем базу postfix:
> use postfix
Редактируем алиасы командой:
> UPDATE alias SET `address`='secretar@dmosk.ru', `goto`=REPLACE(`goto`, 'sekretar@dmosk.ru', 'secretar@dmosk.ru') WHERE `address`='sekretar@dmosk.ru';
Редактируем почтовый ящик:
> UPDATE mailbox SET `username`='secretar@dmosk.ru', `local_part`='secretar', `maildir`=REPLACE(`maildir`, '/sekretar/', '/secretar/') WHERE `username`='sekretar@dmosk.ru';
И квоту:
> UPDATE quota2 SET `username`='secretar@dmosk.ru' WHERE `username`='sekretar@dmosk.ru';
С базой данных закончили — выходим из sql:
> quit
Переходим в каталог с почтовыми ящиками пользователей для нашего домена:
cd /home/mail/dmosk.ru/
Перемещаем папку с почтой старого ящика в новый:
mv sekretar@dmosk.ru secretar@dmosk.ru
Проверяем работу через веб-интерфейс. Если используем почтовый клиент, меняем настройки для использования нового email-адреса.
Рассмотрим процесс установки и настройки веб-инструмента жизненного цикла DevOps на Linux Ubuntu Server на примере версий 18.04 и 20.04. За основу взята официальная инструкция с сайта GitLab. В нашей инструкции приведен пример установки как платной. так и бесплатной версий программы.
Подготовка сервера
В качестве предварительный настроек, мы обновим список пакетов в репозиториях, настроим правильное время и откроем порты в брандмауэре.
1. Обновление списков пакетов
Выполняем команду:
apt-get update
При желании обновить установленные пакеты, также можно выполнить:
apt-get upgrade
2. Время
Установим часовой пояс:
timedatectl set-timezone Europe/Moscow
* данная команда задаст настройки для московского времени. Все файлы с временными зонами находятся в каталоге /usr/share/zoneinfo.
Для автоматической синхронизации времени ставим пакет:
apt-get install chrony
И разрешаем автозапуск сервиса:
systemctl enable chrony
3. Настройка брандмауэра
По умолчанию, в Ubuntu брандмауэр настроен на то, чтобы принимать любые пакеты. Но если у нас он настроен на блокировку, нужно добавить порты 80 и 443.
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
И чтобы сохранить правила, устанавливаем iptables-persistent:
apt-get install iptables-persistent
… и выполняем команду:
netfilter-persistent save
Установка GitLab
Установку выполним в два шага — установка необходимых компонентов и, собственно, установка GitLab.
После установки репозитория, устанавливаем сам GitLab.
а) платную версию:
apt-get install gitlab-ee
б) бесплатную:
apt-get install gitlab-ce
Если установка прошла успешно, мы должны увидеть:
It looks like GitLab has not been configured yet; skipping the upgrade script.
*. *.
*** ***
***** *****
.****** *******
******** ********
,,,,,,,,,***********,,,,,,,,,
,,,,,,,,,,,*********,,,,,,,,,,,
.,,,,,,,,,,,*******,,,,,,,,,,,,
,,,,,,,,,*****,,,,,,,,,.
,,,,,,,****,,,,,,
.,,,***,,,,
,*,.
_______ __ __ __
/ ____(_) /_/ / ____ _/ /_
/ / __/ / __/ / / __ `/ __
/ /_/ / / /_/ /___/ /_/ / /_/ /
____/_/__/_____/__,_/_.___/
Thank you for installing GitLab!
3. Конфигурируем веб-адрес
Для запуска и корректной работы портала мы должны задать external_url. Для этого открываем файл:
vi /etc/gitlab/gitlab.rb
Нам нужно только изменить параметр external_url:
external_url 'http://gitlab.dmosk.ru'
* данная настройка говорит, что наш веб-инструмент будет отвечать на запросы, которые пришли на узел gitlab.dmosk.ru — это значит, что данное имя должно быть зарегистрирована в DNS или прописано в локальный файл hosts.
Выполняем конфигурирование:
gitlab-ctl reconfigure
Данная операция займет какое-то время.
Вход в веб-интерфейс
Открываем браузер и вводим наш адрес, который мы указали в настройках в опции external_url — в данном примере, http://gitlab.dmosk.ru. Мы должны увидеть страницу авторизации, на которой нас запросят сменить пароль для администратора. Вводим его дважды:
После система попросит ввести логин и пароль — вводим логин root и пароль, который только-что придумали.
Настройка GitLab
Приведем некоторые примеры настроек, которые могут оказаться полезными.
Русский интерфейс
По умолчанию, портал устанавливается с интерфейсом на английском. Для смены языка, кликаем по иконке в правом верхнем углу и выбираем Settings:
В меню слева нажимаем по Preferences:
В подразделе Localization выбираем нужный нам язык и первый день недели:
Сохранияем настройки и перезапускаем страницу для применения нового языка.
Создание репозитория и подключение к нему
Попробуем создать проект и подключиться к нему из Linux. Также для теста мы создадим файл и закинем его в наш репозиторий.
В веб-интерфейсе GitLab создаем новый проект:
Задаем имя проекта, оставляем или редактируем URL, выбираем уровень доступа. После кликаем по кнопке Создать проект:
* в данном примере мы создаем проект с названием Test, url до него будет http://gitlab.dmosk.ru/root/test. Уровень доступа мы задаем «Приватный» — доступ к репозиторию будет только у авторизованного пользователя.
Для примера попробуем подключиться с компьютера Linux к нашему репозиторию и закинуть на него тестовый файл.
Для начала установим git на компьютер с Linux:
а) Если используем CentOS / Red Hat:
yum install git-core
б) Если используем Ubuntu / Debian:
apt-get install git
Создаем папку для тестового проекта:
mkdir -p /projects/test
Переходим в нее:
cd /projects/test
Создаем репозиторий:
git init
Создаем файл:
vi testfile.txt
Добавляем в него все файлы (то есть, наш единственный файл):
Переходим на веб-страницу нашего проекта — мы должны увидеть наш файл:
Настройка SSL
В данном примере мы сконфигурируем наш сервер для возможности работы по https и получения сертификата от Let’s Encrypt. Все настройки выполняются в конфигурационном файле:
vi /etc/gitlab/gitlab.rb
Меняем настройку:
external_url 'http://gitlab.dmosk.ru'
* где gitlab.dmosk.ru — url для нашего портала, который мы задали при первом конфигурировании.
на:
external_url 'https://gitlab.dmosk.ru'
* мы просто добавили s к http.
Также настраиваем получение сертификата от Let’s Encrypt:
letsencrypt['enable'] = true
И задаем опции для автоматического обновления сертификата:
Java — популярная в мире платформа для разработки программного обеспечения, которую разрабатывает Джеймс Гослинг. Он разработан для поддержки нескольких платформ, таких как Linux, macOS и Windows. Мобильные и настольные приложения также могут быть разработаны с использованием языка Java.
Язык Java — один из самых популярных объектно-ориентированных языков программирования высокого уровня. Он имеет простой синтаксис и легко понятен новичкам, так как он очень безопасен и экономичен в использовании. Java — это программное обеспечение, не зависящее от платформы, и оно также предоставляет средство автоматической сборки мусора.
Как запустить Java из командной строки
Чтобы запустить java-программу в Linux, нам нужно проверить, доступен ли Java Development Kit (JDK) в системе и его версию.
Чтобы подтвердить это, введите следующую команду:
$ javac -version
( Инструмент командной строки Javac используется для компиляции программ Java)
Инструмент командной строки Javac недоступен в моей системе. У нас есть несколько команд для его загрузки, как указано на изображении выше.
Давайте воспользуемся командой default-jdk, чтобы получить это:
$ sudo apt install default-jdk
Чтобы проверить установку javac , введите:
$ javac -version
Теперь напишите программу на Java в текстовом файле и сохраните ее с расширением .java .
Предположим, я создал файл с именем « testing.java » и написал в нем простую программу:
testing.java
class testing {
public static void main(String args[]) {
System. out. println("Привет! Добро пожаловать в блог AndreyEx");
}
}
(Имейте в виду, что имя вашего класса должно совпадать с именем файла)
Скомпилируйте файл testing.java на терминале с помощью команды javac :
$ javac testing.java
Теперь запустите программу Java, вызвав ее имя класса в терминале:
$ java testing
Заключение
Java — это язык высокого уровня современной эпохи, поддерживаемый Java Development Kit (JDK). JDK — это пакет, который помогает запускать java и используется для разработки пакетов программного обеспечения.
Язык Java имеет простой синтаксис, который легко освоить новичкам, и это один из наиболее используемых объектно-ориентированных языков программирования.
В этой статье мы видели, как устанавливать и запускать Java-приложения на терминале.
HAproxy — это легкий пакет с открытым исходным кодом, который обеспечивает высокую доступность и балансировку нагрузки для программ на основе TCP и HTTP. Он распределяет нагрузку между веб-серверами и серверами приложений. HAproxy доступен почти для всех дистрибутивов Linux. Это широко используемый балансировщик нагрузки, популярный своей эффективностью, надежностью и малым объемом памяти и процессора. В этом посте мы объясним, как установить и настроить HAproxy в системе Ubuntu. Ну, а если вам нужен уже готовый прокси-сервер, вы можете зайти на этот сайт и купить его прямо сейчас.
Мы установили три машины. Мы установим HAproxy на одном сервере и веб-серверы Apache на двух серверах. Затем наш сервер HAproxy будет действовать как балансировщик нагрузки и распределять нагрузку между веб-серверами Apache.
Примечание. Процедура и команды, упомянутые в этом посте, были протестированы на Ubuntu 20.04 LTS (Focal Fossa). Та же процедура действительна для дистрибутивов Debian и Mint.
Сведения о сети
Мы будем использовать три сервера Ubuntu; все в одной сети. Подробная информация о наших серверах:
Hostname: HAproxy, IP address: 192.168.72.157 (Frontend server)
Hostname: web-server1, IP address: 192.168.72.158 (Backend servers)
Hostname: web-server2, IP address: 192.168.72.159 (Backend servers)
Примечание. У вас должны быть права sudo на всех серверах.
Мы настроим одну машину как балансировщик нагрузки, а две другие как веб-серверы. Сервер HAproxy будет нашим внешним сервером, который будет получать запросы от пользователей и пересылать их на два веб-сервера. Веб-серверы будут нашими внутренними серверами, которые будут получать эти перенаправленные запросы.
Вот как выглядит наша установка:
Настройка веб-серверов — Backend-серверы
В этом разделе мы настроим два веб-сервера ( веб-сервер1 и веб-сервер2 ) в качестве наших внутренних серверов.
На веб-сервере1 (192.168.72.158)
Выполните следующие шаги на своем веб-сервере. Обязательно замените имена хостов и IP-адреса соответствующими IP-адресами и именами хостов ваших веб-серверов.
1. Настройте файл hosts
На веб-сервере1 отредактируйте файл /etc/hosts :
$ sudo nano /etc/hosts
Затем добавьте запись имени хоста для сервера HAproxy следующим образом:
hostname-of-HAproxy IP-address-of-HAproxy
В нашем сценарии это будет:
HAproxy 192.168.72.157
2. Настройте веб-сервер Apache.
Теперь установите веб-сервер Apache, используя следующую команду в Терминале.
$ sudo apt install apache2
Затем включите и запустите службу Apache, используя следующие команды в Терминале:
Создайте индексный файл для web-server1, используя следующую команду в Терминале:
$ echo "<H1>Hello! This is webserver1: 192.168.72.158 </H1>" | sudo tee /var/www/html/index.html
Если в вашей системе работает брандмауэр, вам необходимо разрешить трафик Apache через него:
$ sudo ufw allow 80/tcp
Затем перезагрузите конфигурации брандмауэра:
$ ufw reload
Теперь попробуйте получить доступ к сайту в своем веб-браузере, набрав http://, а затем либо IP-адрес, либо имя хоста вашего веб-сервера.
http:// hostname-or-IP-address
Кроме того, вы также можете использовать команду curl для тестирования веб-страницы.
$ curl <hostname-or-IP-address>
На веб-сервере-2 192.168.72.159
Выполните следующие шаги на своем втором веб-сервере. Обязательно замените имена хостов и IP-адреса соответствующими IP-адресами и именами хостов ваших веб-серверов.
1. Настройте файл hosts
На веб-сервере2 отредактируйте файл / etc / hosts :
$ sudo nano /etc/hosts
Затем добавьте запись имени хоста для сервера HAproxy следующим образом:
HAproxy 192.168.72.157
2. Установите веб-сервер Apache.
Теперь установите веб-сервер Apache, используя следующую команду в Терминале.
$ sudo apt install apache2
Затем включите и запустите службу Apache, используя следующие команды в Терминале:
Создайте индексный файл для web-server2, используя следующую команду в Терминале:
$ echo "<H1>Hello! This is webserver2: 192.168.72.159 </H1>" | sudo tee /var/www/html/index.html
Разрешите Apache в брандмауэре:
$ sudo ufw allow 80/tcp
а затем перезагрузите конфигурации брандмауэра:
$ ufw reload
Теперь попробуйте получить доступ к сайту в своем веб-браузере, набрав http: //, а затем либо IP-адрес, либо имя хоста.
http:// hostname-or-IP-address
Кроме того, вы можете использовать команду curl для тестирования веб-страницы.
$ curl <hostname-or-IP-address>
Теперь наши веб-серверы Apache готовы.
Настройка балансировщика нагрузки HAproxy-Frontend server
В этом разделе мы настроим балансировщик нагрузки HAproxy для наших веб-серверов. Этот HAproxy-сервер будет действовать как внешний сервер и принимать входящие запросы от клиентов.
На сервере HAproxy ( 192.168.72.157 ) выполните следующие шаги для настройки балансировщика нагрузки.
1. Настройте файл hosts
Отредактируйте файл / etc / hosts, используя следующую команду в Терминале:
$ sudo nano / etc / hosts
Добавьте следующие записи имени хоста для обоих веб-серверов Apache вместе с собственным именем хоста :
Теперь на этом этапе мы будем устанавливать HAproxy на один из наших серверов Ubuntu (192.168.72.157). Для этого обновите apt, используя следующую команду в Терминале:
$ sudo apt-get update
Затем обновите пакеты, используя следующую команду:
$ sudo apt-get upgrade
Теперь установите HAproxy, используя следующую команду в Терминале:
$ sudo sudo apt install haproxy
После завершения установки сервера HAproxy вы можете подтвердить это, используя следующую команду в Терминале:
$ haproxy -v
Он покажет вам установленную версию HAproxy в вашей системе, которая подтверждает, что HAproxy был успешно установлен.
Настройка HAproxy в качестве балансировщика нагрузки
В следующем разделе мы настроим HAproxy в качестве балансировщика нагрузки. Для этого отредактируйте файл /etc/haproxy/haproxy.cfg :
$ sudo nano /etc/haproxy/haproxy.cfg
Добавьте следующие строки в файл haproxy.cfg, заменив IP-адреса вашими собственными IP-адресами.
Интерфейс веб-интерфейс в приведенной выше строках конфигурации говорит HAproxy для прослушивания входящих запросов на порт 80 из 192.168.72.157 , а затем направляет их серверные сервера , сконфигурированных в соответствии с серверной веб-интерфейсом. Во время настройки замените IP-адреса соответствующими IP-адресами ваших веб-серверов.
Настройка мониторинга HAproxy
С помощью мониторинга HAproxy вы можете просматривать множество информации, включая статус сервера, передаваемые данные, время безотказной работы, скорость сеанса и т.д. Чтобы настроить мониторинг HAproxy, добавьте следующие строки в файл конфигурации, расположенный по адресу /etc/haproxy/haproxy.cfg :
listen stats
bind 192.168.72.157:8080
mode http
option forwardfor
option httpclose
stats enable
stats show-legends
stats refresh 5s
stats uri /stats
stats realm Haproxy Statistics
stats auth kbuzdar:kbuzdar #Login User and Password for the monitoring
stats admin if TRUE
default_backend web-backend
Приведенная выше конфигурация включает страницу « статистики » HAproxy с помощью директивы stats и защищает ее с помощью базовой аутентификации http с использованием имени пользователя и пароля, определенных директивой stats auth .
По завершении настройки сохраните и закройте файл haproxy.cfg.
Теперь проверьте файл конфигурации, используя следующую команду в Терминале:
$ haproxy -c -f /etc/haproxy/haproxy.cfg
Следующий вывод показывает, что конфигурации верны.
Теперь, чтобы применить настройки, перезапустите службу HAproxy:
$ sudo systemctl restart haproxy.service
Он остановит, а затем запустит службу HAproxy.
Чтобы проверить статус службы HAproxy, используйте следующую команду:
$ sudo systemctl status haproxy.service
Активно (работает) положение в следующих выходных показывают , что сервер HAproxy включен и работает нормально.
Вот еще несколько команд для управления сервером HAproxy:
Чтобы запустить сервер HAproxy, команда должна быть такой:
$ sudo systemctl start haproxy.service
Чтобы остановить сервер HAproxy, используйте следующую команду:
$ sudo systemctl stop haproxy.service
Если вы хотите временно отключить сервер HAproxy, используйте следующую команду:
$ sudo systemctl отключить haproxy.service
Чтобы повторно включить сервер HAproxy, введите следующую команду:
$ sudo systemctl включить haproxy.service
Тест HAproxy
Перед тестированием настройки HAproxy убедитесь, что у вас есть подключение к веб-серверам. С вашего HAproxy-сервера проверьте связь с обоими веб-серверами по их IP-адресам или именам хостов.
$ ping имя-хоста-или-IP-адрес
Следующие выходные данные показывают, что сервер HAproxy может подключаться к обоим веб-серверам.
Протестируйте прокси HA с помощью веб-браузера
Теперь на сервере HAproxy откройте любой веб-браузер и введите http: //, а затем IP-адрес сервера HAproxy, который в нашем случае 192.168.72.157.
http://192.168.72.157
В качестве альтернативы сервер HAproxy отправит запрос на оба веб-сервера в циклическом методе. Вы можете проверить это, перезагрузив веб-страницу несколько раз.
Вот ответ, который мы получили, когда впервые посетили http://192.168.72.157 :
Это ответ, который мы получили, когда перезагрузили веб-страницу:
Вы также можете использовать имя хоста вместо IP-адреса сервера HAproxy.
Протестируйте прокси HA с помощью curl
Вы также можете использовать команду curl в Linux для проверки настройки HAproxy. Откройте Терминал и введите curl, а затем IP-адрес или имя хоста сервера HAproxy.
$ curl 192.168.72.157
или же
$ curl HAproxy
Выполните команду curl несколько раз, и вы увидите, что ответ чередуется между обоими веб-серверами.
Вместо того, чтобы запускать команды несколько раз, вы также можете запустить следующий однострочный сценарий для тестирования сервера HAproxy:
$ while true; do curl 192.168.72.157; sleep 1; done
Тестирование мониторинга HAproxy
Чтобы получить доступ к странице мониторинга HAproxy, введите http: //, а затем IP-адрес/имя хоста сервера HAproxy и порт 8080 / stats:
http://192.168.72.157:8080/stats
или же
http://HAproxy:8080/stats
Появится следующее окно аутентификации. Введите имя пользователя и пароль, которые вы настроили ранее в конфигурациях, а затем нажмите OK .
Это статистический отчет для нашего сервера HAproxy.
Здесь у вас есть установка и настройка балансировщика нагрузки HAproxy в системе Linux. Мы только что обсудили базовую настройку и конфигурацию HAproxy в качестве балансировщика нагрузки для веб-серверов Apache. Мы также рассмотрели некоторые команды для управления сервером HAproxy. В итоге мы протестировали балансировку нагрузки через браузер и команду curl. Для получения дополнительной информации посетите официальную документацию HAproxy.
Vim — популярный текстовый редактор командной строки, который присутствует в большинстве дистрибутивов Linux и macOS. Знание того, как использовать редактор, может сэкономить вам много времени, когда вы прыгаете по терминалу.
В этой статье мы рассмотрим, как удалить строки в Vim с помощью следующих четырех руководств.
Удаление отдельной строки в Vim
Удаление нескольких строк в Vim
Удаление диапазона строк в Vim
Удаление строк с шаблоном в Vim
Как удалить строку в Vim?
Шаг 1. Нажмите Esc, чтобы перейти в обычный режим, и поместите курсор на строку, которую хотите удалить.
Шаг 2: Введите dd, чтобы удалить строку. Обратите внимание, что нажатие dd несколько раз приведет к удалению нескольких строк.
Как удалить несколько строк в Vim?
Вы можете указать количество строк, которые хотите удалить, перед командой dd, чтобы удалить сразу несколько строк.
Шаг 1. Нажмите Esc, чтобы перейти в обычный режим, и поместите курсор на строку, которую хотите удалить.
Шаг 2: Введите 3dd и нажмите Enter, чтобы удалить три строки с позиции курсора. Вы можете заменить число на количество строк, которые хотите удалить.
Как удалить ряд строк в Vim?
Используйте этот синтаксис для одновременного удаления ряда строк.
:[start], [end]d
Шаг 1. Нажмите Esc, чтобы перейти в нормальный режим.
Шаг 2: Введите : 4,10d, чтобы удалить строки с 4 по 10. Вы можете изменить эти числа в соответствии с вашими требованиями.
Вот несколько символов, которые вы можете использовать для указания диапазонов.
.: Удаляет текущую строку.
$: Удаляет последнюю строку.
%: Удаляет все строки.
Например, чтобы удалить все строки в документе, вы должны просто использовать $ d.
Как удалить строки с рисунком в Vim?
Используйте команду d в следующем синтаксисе для удаления строк с шаблоном.
:g/<pattern>/d
Синтаксис включает глобальную команду (g), указывающую команде удаления (d) удалить все строки, включая <pattern>.
:g!/<pattern>/d
Вы можете добавить восклицательный знак после глобальной команды, чтобы удалить только строки, не соответствующие шаблону. Вы также можете указать выражения как шаблон. Например.
:g/del/d: Эта команда удалит все строки, содержащие ‘del’, даже если она встроена в слова большего размера, такие как ‘delete’.
:g!/del/d: Выполняет полную противоположность вышеупомянутой команде. Удаляет все строки, не содержащие ‘del’.
:g/^$/d: Удаляет все пустые строки, причем ^ $ является выражением для пустых строк.
:g/^#/d: Эта команда удалит все комментарии из сценария bash, поскольку комментарии bash начинаются с символа #.