Серверные настройки · 7 min read · Feb 13, 2026

Идеальный сервер - OpenSUSE 12.3 x86_64 (Apache2, Dovecot, ISPConfig 3) - Страница 2

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

4 Настройка сетевых параметров

Мы используем Yast, инструмент управления системой OpenSuSE, чтобы перенастроить параметры сетевой карты. После первой загрузки система настроена на получение IP-адреса с помощью DHCP. Для сервера мы переключим его на статический IP-адрес.

Запустите

yast2

Выберите Устройства сети > Настройки сети:

Выберите вашу сетевую карту, а затем нажмите Изменить:

Выберите Статически назначенный IP-адрес и введите IP-адрес, маску подсети и имя хоста, затем сохраните изменения, выбрав Далее:

Теперь выберите Имя хоста/DNS и введите имя хоста (например, server1.example.com) и DNS-серверы (например, 192.168.1.200 и 8.8.8.8):

Теперь выберите Маршрутизация и введите шлюз по умолчанию, затем нажмите ОК:

Чтобы настроить брандмауэр (в случае, если вы не настраивали его во время базовой установки), выберите Безопасность и пользователи > Брандмауэр в Yast:

Я хочу установить ISPConfig в конце этого руководства, который поставляется со своим собственным брандмауэром. Поэтому я сейчас отключаю брандмауэр OpenSUSE по умолчанию. Конечно, вы можете оставить его включенным и настроить по своему усмотрению (но тогда вам не следует использовать какой-либо другой брандмауэр позже, так как он, скорее всего, будет мешать брандмауэру OpenSUSE).

Выберите Отключить автоматический запуск брандмауэра и Остановить брандмауэр сейчас, затем нажмите Далее:

Нажмите Завершить и выйдите из Yast:

После этого вам следует проверить с помощью

ifconfig

правильность вашей сетевой конфигурации. Если это не так (например, если eth0 отсутствует), перезагрузите систему…

reboot

… и снова проверьте вашу сетевую конфигурацию - она теперь должна быть правильной.

5 Установите обновления

Теперь мы устанавливаем последние обновления из репозиториев openSUSE. Запустите

zypper update

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

reboot

6 Установите некоторые базовые пакеты

Запустите

zypper install findutils readline glibc-devel findutils-locate gcc flex lynx compat-readline4 db-devel wget gcc-c++ subversion make vim telnet cron iptables iputils man man-pages nano pico sudo perl-TimeDate

7 Журналируемая квота

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

zypper install quota

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

vi /etc/fstab

| /dev/disk/by-id/ata-VBOX_HARDDISK_VB1d06c935-e9b5de19-part1 swap swap defaults 0 0 /dev/disk/by-id/ata-VBOX_HARDDISK_VB1d06c935-e9b5de19-part2 / ext4 acl,user_xattr,usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0 1 1 /dev/disk/by-id/ata-VBOX_HARDDISK_VB1d06c935-e9b5de19-part3 /srv ext4 acl,user_xattr,usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0 1 2 proc /proc proc defaults 0 0 sysfs /sys sysfs noauto 0 0 debugfs /sys/kernel/debug debugfs noauto 0 0 usbfs /proc/bus/usb usbfs noauto 0 0 devpts /dev/pts devpts mode=0620,gid=5 0 0 |

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

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

Не беспокойтесь, если вы увидите эти сообщения об ошибках - они нормальны, когда вы впервые запускаете quotacheck:

server1:~ # quotacheck -avugm  
 quotacheck: Сканирование /dev/sda2 [/] завершено  
 quotacheck: Не удается получить старый файл квоты пользователя: Нет такого файла или директории  
 quotacheck: Не удается получить старый файл квоты группы: Нет такого файла или директории  
 quotacheck: Не удается получить старый файл квоты пользователя: Нет такого файла или директории  
 quotacheck: Не удается получить старый файл квоты группы: Нет такого файла или директории  
 quotacheck: Проверено 3872 каталога и 32991 файлов  
 quotacheck: Старый файл не найден.  
 quotacheck: Старый файл не найден.  
 quotacheck: Сканирование /dev/sda3 [/srv] завершено  
 quotacheck: Не удается получить старый файл квоты пользователя: Нет такого файла или директории  
 quotacheck: Не удается получить старый файл квоты группы: Нет такого файла или директории  
 quotacheck: Не удается получить старый файл квоты пользователя: Нет такого файла или директории  
 quotacheck: Не удается получить старый файл квоты группы: Нет такого файла или директории  
 quotacheck: Проверено 6 каталогов и 0 файлов  
 quotacheck: Старый файл не найден.  
 quotacheck: Старый файл не найден.  
 server1:~ #

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

Запустите

zypper install postfix postfix-mysql mysql-community-server libmysqlclient-devel dovecot21 dovecot21-backend-mysql pwgen cron python

Если вы получите следующее сообщение, пожалуйста, выберите удаление exim:

Проблема: sendmail-8.14.5-85.1.2.x86_64 конфликтует с postfix, предоставляемым postfix-2.9.6-1.2.1.x86_64
Решение 1: Будут выполнены следующие действия:
не устанавливайте postfix-2.9.6-1.2.1.x86_64
не устанавливайте postfix-mysql-2.9.6-1.2.1.x86_64
Решение 2: деинсталляция sendmail-8.14.5-85.1.2.x86_64

Выберите из вышеуказанных решений по номеру или отмените [1/2/c] (c): <– 2

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

ln -s /usr/lib64/dovecot/modules /usr/lib/dovecot

На этом этапе мне пришлось перезагрузить, потому что иначе MySQL отказывался запускаться с ошибкой:

Не удалось выполнить вызов метода: Юнит mysql.service не удалось загрузить: Нет такого файла или директории. См. системные журналы и 'systemctl status mysql.service' для получения дополнительных сведений.
reboot

Запустите MySQL, Postfix и Dovecot и включите службы для автоматического запуска при загрузке.

systemctl enable mysql.service  
 systemctl start mysql.service
systemctl enable postfix.service  
 systemctl start postfix.service
systemctl enable dovecot.service  
 systemctl start dovecot.service

Теперь я устанавливаю пакет getmail:

zypper install getmail

Чтобы обеспечить безопасность установки MySQL, выполните:

mysql_secure_installation

Теперь вам будет задано несколько вопросов:

server1:~ # mysql_secure_installation

ПРИМЕЧАНИЕ: РЕКОМЕНДУЕТСЯ ЗАПУСКАТЬ ВСЕ ЧАСТИ ЭТОГО СКРИПТА ДЛЯ ВСЕХ MySQL
СЕРВЕРОВ В ПРОИЗВОДСТВЕ! Пожалуйста, внимательно прочитайте каждый шаг!

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

Введите текущий пароль для root (нажмите Enter для отсутствия): <– ENTER
Хорошо, успешно использован пароль, продолжаем…

Установка пароля root гарантирует, что никто не сможет
войти в MySQL под пользователем root без
должной авторизации.

Установить пароль root? [Y/n] <– Y
Новый пароль: <– вашпарольrootsql
Повторите новый пароль: <– вашпарольrootsql
Пароль успешно обновлен!
Перезагрузка таблиц привилегий..
… Успех!

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

Удалить анонимных пользователей? [Y/n] <– Y
… Успех!

Обычно root должен
разрешаться только подключаться
с ‘localhost’. Это
гарантирует, что кто-то не сможет
угадать пароль root из сети.

Запретить удаленный вход root? [Y/n] <– Y
… Успех!

По умолчанию MySQL
поставляется с базой данных
с именем ‘test’, к которой
любой может получить доступ. Это также
предназначено только для тестирования
и должно быть удалено
перед переходом в производственную среду.

Удалить тестовую базу данных
и доступ к ней? [Y/n] <– Y

  • Удаление тестовой базы данных…
    … Успех!
  • Удаление привилегий
    на тестовую базу данных…
    … Успех!

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

Перезагрузить таблицы привилегий сейчас? [Y/n] <– Y
… Успех!

Очистка…

Все готово! Если вы завершили
все вышеперечисленные шаги,
ваша установка MySQL
теперь должна быть защищена.

Спасибо за использование MySQL!

server1:~ #

Теперь ваша установка MySQL должна быть защищена.

9 Amavisd-new, Spamassassin и Clamav

Установите Amavisd-new, Spamassassin и антивирус Clamav. Запустите

zypper install amavisd-new clamav clamav-db zoo unzip unrar bzip2 unarj perl-DBD-mysql

Откройте /etc/amavisd.conf…

vi /etc/amavisd.conf

… и добавьте строку $myhostname с вашим правильным именем хоста под строкой $mydomain:

| [...] $mydomain = 'example.com'; # удобный по умолчанию для других настроек $myhostname = "server1.$mydomain"; [...] |

Затем создайте символическую ссылку из /var/run/clamav/clamd в /var/lib/clamav/clamd-socket:

mkdir -p /var/run/clamav  
 ln -s /var/lib/clamav/clamd-socket /var/run/clamav/clamd

OpenSUSE 12.3 имеет каталог /run для хранения данных времени выполнения. /run теперь является tmpfs, и /var/run теперь смонтирован в /run из tmpfs, и, следовательно, очищается при перезагрузке.

Это означает, что после перезагрузки каталог /var/run/clamav, который мы только что создали, больше не будет существовать, и, следовательно, clamd не сможет запуститься. Поэтому мы создаем файл /etc/tmpfiles.d/clamav.conf, который создаст этот каталог при запуске системы (см. http://0pointer.de/public/systemd-man/tmpfiles.d.html для получения дополнительной информации):

vi /etc/tmpfiles.d/clamav.conf

| D /var/run/clamav 0755 root root - |

Перед тем как запустить amavisd и clamd, мы должны отредактировать скрипт инициализации /etc/init.d/amavis - я не смог надежно запустить, остановить и перезапустить amavisd с помощью скрипта инициализации по умолчанию:

vi /etc/init.d/amavis

Закомментируйте следующие строки в секции запуска и остановки:

| [...] start) # ZMI 20100428 проверка на устаревший pid файл #if test -f $AMAVIS_PID ; then # checkproc -p $AMAVIS_PID amavisd # if test $? -ge 1 ; then # # pid файл устарел, удалите его # echo -n "(устаревший pid файл amavisd $AMAVIS_PID найден, удаление. Упал amavisd?)" # rm -f $AMAVIS_PID # fi #fi echo -n "Запуск сканера вирусов (amavisd-new): " $AMAVISD_BIN start #if ! checkproc amavisd; then # rc_failed 7 #fi rc_status -v #if [ "$AMAVIS_SENDMAIL_MILTER" == "yes" ]; then # rc_reset # echo -n "Запуск amavis-milter:" # startproc -u vscan $AMAVIS_MILTER_BIN -p $AMAVIS_MILTER_SOCK > /dev/null 2>&1 # rc_status -v #fi ;; stop) echo -n "Остановка сканера вирусов (amavisd-new): " #if checkproc amavisd; then # rc_reset $AMAVISD_BIN stop #else # rc_reset #fi rc_status -v #if [ "$AMAVIS_SENDMAIL_MILTER" == "yes" ]; then # rc_reset # echo -n "Остановка amavis-milter: " # killproc -TERM $AMAVIS_MILTER_BIN # rc_status -v #fi ;; [...] |

Поскольку мы изменили скрипт инициализации, мы должны выполнить

systemctl --system daemon-reload

Теперь, чтобы запустить clamav, нам нужно загрузить базу данных и продолжить с командой

freshclam

Примечание: Загрузка базы данных занимает много времени, вам рекомендуется не прерывать и не останавливать службу обновления freshclam в процессе

Чтобы включить службы, выполните:

systemctl enable amavis.service  
 systemctl enable clamd.service  
 systemctl start amavis.service  
 systemctl start clamd.service
Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.