[Системное администрирование, PHP, MySQL, IT-инфраструктура, Nginx] Установка Ispconfig3 на ubuntu 20.04 (nginx+php-fpm+mysql)
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
ISPConfig - бесплатная панель управления хостингом с открытым исходным кодом c возможностью управлять несколькими серверами из одной панели управления. Это один из лучших вариантов для веб-студий, хостинг-компаний, а так же для всех, кто ищет бесплатную панель управления хостингом с широким функционалом. В сети есть инструкции по установке на OpenSuSe, Fedora, CentOS, Debian и Ubuntu разных версий, с выходом новой ОС из поддерживаемых инструкции обновляют, но инструкция под ubuntu 20.04 с nginx почему-то выпала из числа обновленных. Самое время это исправить.Убедимся, что наша ОС сконфигурирована Убедимся, что на нашем сервере установлены последние версии всех пакетов, установлен ssh клиент и vim (или любой другой текстовый редактор, в котором вам будет удобно работать), настроен статичный ip, hosts, hostname и локали. Для установки обновлений, ssh и текстового редактора выполним команды:
sudo -s
apt update && apt upgrade -y && apt autoremove -y && apt install -y ssh openssh-server nano vim-noxНастроим статичный ip, для этого откроем файл конфигурации и укажем необходимые настройки:
vi /etc/netplan/00-installer-config.yaml/etc/netplan/00-installer-config.yamlnetwork:
version: 2
renderer: networkd
ethernets:
eth0:
dhcp4: no
addresses: [185.104.112.249/24]
gateway4: 185.104.112.1
nameservers:
addresses: [8.8.8.8, 8.8.4.4]Проверим корректность конфигурации командой
netplan try
В случае если все хорошо и конфигурация верна, появится надпись с предложением применить конфигурацию, для применения необходимо нажать клавишу ENTER, если в течении 120 секунд мы не согласимся - будет использована предыдущая конфигурация:netplan tryroot@host:~# netplan try
Warning: Stopping systemd-networkd.service, but it can still be activated by:
systemd-networkd.socket
Do you want to keep these settings?
Press ENTER before the timeout to accept the new configuration
Changes will revert in 116 secondsТакже применить конфигурацию можно с помощью команды
netplan apply
Откроем файл hosts командой
vi /etc/hosts
и убедимся в наличии строки указывающей на наш сервер, как по имени хоста, так по имени хоста и домену (ispnginx - имя хоста, сat-a.ru - домена):/etc/hosts127.0.0.1 localhost.localdomain localhost
185.104.112.249 ispnginx.cat-a.ru ispnginx
::1 localhost6.localdomain6 localhost6
# The following lines are desirable for IPv6 capable hosts
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhostsУстановим хостнейм, выполнив команды:
echo ispnginx > /etc/hostname && hostname ispnginx
или
hostnamectl set-hostname ispnginx
Проверим, изменился ли hostname командами:
hostname
hostname -fВывод должен выглядеть примерно такroot@host:~# hostname
ispnginx
root@host:~# hostname -f
ispnginx.cat-a.ruНастроим локали, выполнив:
dpkg-reconfigure locales
Выбираем для установки en_US.UTF-8 и ru_RU.UTF-8, после чего перезагрузим сервер - он предварительно подготовлен к установке IspconfigИзменим оболочку по умолчаниюВ настоящий момент /bin/sh - симлинк /bin/dash, но нам нужно /bin/bash, выполним:
dpkg-reconfigure dash
В открывшемся окне выбираем "No"
Выключим и удалим apparmorservice apparmor stop && update-rc.d -f apparmor remove && apt-get remove apparmor apparmor-utilsУстановим ntp apt install -y ntp ntpdateУстановим Postfix, Dovecot, MySQL, phpMyAdmin, rkhunter, BinutilsУстановим Postfix, Dovecot, MySQL, rkhunter и binutils с помошью команды:
apt install -y postfix postfix-mysql postfix-doc mysql-client mysql-server openssl getmail4 rkhunter binutils dovecot-imapd dovecot-pop3d dovecot-mysql dovecot-sieve dovecot-lmtpd sudo patchКогда установщик попросит указать какую почтовый конфигурацию выбрать указываем Internet Site, в качестве System mail name указываем hostname
General type of mail configuration: <-- Internet Site
System mail name: <-- server1.example.com
Откроем TLS/SSL и submission порты в Postfix, для этого откроем файл /etc/postfix/master.cf
vi /etc/postfix/master.cf
и раскомментируем секции submission, smtps, а также по первые 3 строчки в каждой секции и добавим к обеим секциям строку (не забываем 2 пробела в начале строки):
-o smtpd_client_restrictions=permit_sasl_authenticated,reject/etc/postfix/master.cf должен выглядеть так:smtp inet n - y - - smtpd
#smtp inet n - y - 1 postscreen
#smtpd pass - - y - - smtpd
#dnsblog unix - - y - 0 dnsblog
#tlsproxy unix - - y - 0 tlsproxy
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_tls_auth_only=yes
# -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
Чтобы базы данных были доступны удалено отредактируем файл /etc/mysql/mysql.conf.d/mysqld.cnf и закомментируем стоки:
bind-address = 127.0.0.1
mysqlx-bind-address = 127.0.0.1
Ниже добавим строку:
mysqlx=OFFvi /etc/mysql/mysql.conf.d/mysqld.cnf/etc/mysql/mysql.conf.d/mysqld.cnf[mysqld]
#
# * Basic Settings
#
user = mysql
# pid-file = /var/run/mysqld/mysqld.pid
# socket = /var/run/mysqld/mysqld.sock
# port = 3306
# datadir = /var/lib/mysql
# If MySQL is running as a replication slave, this should be
# changed. Ref https://dev.mysql.com/doc/refman/8.0/en/server-syst...ml#sysvar_tmpdir
# tmpdir = /tmp
#
# 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
#mysqlx-bind-address = 127.0.0.1
mysqlx=OFFПерезапустим mysql и проверим, что сетевой доступ к mysql включен командой:
service mysql restart && netstat -tap | grep mysqlВывод должен быть аналогичен данному:root@ispnginx:~# netstat -tap | grep mysql
tcp6 0 0 [::]:mysql [::]:* LISTEN 18513/mysqld
root@ispnginx:~#Установим Amavisd-new, SpamAssassin, and ClamavВыполним установку командой:
apt install -y amavisd-new spamassassin clamav clamav-daemon unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl postgrey
т.к. amavisd, загружает фильтры SpamAssassin, мы можем остановить SpamAssassin для экономии памяти
service spamassassin stop
update-rc.d -f spamassassin remove
Запустим ClamAV
freshclam
service clamav-daemon startОшибку при первом запуске игнорируемroot@ispnginx:~# service spamassassin stop
root@ispnginx:~# update-rc.d -f spamassassin remove
root@ispnginx:~# freshclam
WARNING: Ignoring deprecated option SafeBrowsing at /etc/clamav/freshclam.conf:22
ERROR: /var/log/clamav/freshclam.log is locked by another process
ERROR: Problem with internal logger (UpdateLogFile = /var/log/clamav/freshclam.log).
ERROR: initialize: libfreshclam init failed.
ERROR: Initialization error!
root@ispnginx:~# service clamav-daemon start
root@ispnginx:~#Установим Nginx, PHP 7.4 (PHP-FPM), and FcgiwrapУстановим nginx
apt-get install nginxОбращаться к интерпретатору мы будем через PHP-FPM (FastCGI Process Manager), установим его:
apt-get -y install php7.4-fpmПоищем дополнительные модули php:
apt-cache search php7.4Выберем необходимые и установим:
apt install -y php7.4-common php7.4 php7.4-gd php7.4-mysql php7.4-imap php7.4-cli php7.4-cgi php7.4-curl php7.4-pspell php7.4-intl php7.4-sqlite3 php7.4-tidy php7.4-xml php7.4-xmlrpc php7.4-zip php7.4-xsl php7.4-mbstring php7.4-soap php-pear mcrypt imagemagick libruby memcached php-memcache php-imagick php-soap php-apcuОткроем файл
vi /etc/php/7.4/fpm/php.ini
И установим cgi.fix_pathinfo=0, your timezone, short_open_tag= On/etc/php/7.4/fpm/php.ini[...]
cgi.fix_pathinfo=0
[...]
date.timezone="Europe/Moscow"
[...]
short_open_tag = On
[...]Перезагрузим PHP-FPM:
service php7.4-fpm reload
Чтобы получить поддержку CGI в nginx, установим Fcgiwrap:
apt-get -y install fcgiwrapУстановим phpmyadminapt-get -y install phpmyadmin php-mbstring
В процессе установщик спросит под какой сервер сконфигурировать pma, но из вариантов только apache и lighthttpd, потому ничего не выбираем :
Также просто пропускаем вопрос об установке пароля MySQL application password for phpmyadmin: <-- Press Enter
Далее соглашаемся
Configure database for phpmyadmin with dbconfig-common? <-- Yes
Установим Let's Encrypt, PureFTPd и Quotaapt install -y certbot pure-ftpd-common pure-ftpd-mysql quota quotatoolОтредактируем файл /etc/default/pure-ftpd-common и убедимся, что start mode = standalone и VIRTUALCHROOT=true
vi /etc/default/pure-ftpd-common
Включим FTPS командой
echo 1 > /etc/pure-ftpd/conf/TLS
Создадим директорию для сертификатов
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
Поменяем права на файл:
chmod 600 /etc/ssl/private/pure-ftpd.pem
Перезапустим PureFTPd:
service pure-ftpd-mysql restartОтредактируем файл /etc/fstab. Мой выглядит примерно так (добавляем ,usrjquota=quota.user,grpjquota=quota.group,jqfmt=vfsv0 к корневой точке монтирования):
vi /etc/fstab/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/vda1 during curtin installation
/dev/disk/by-uuid/1ea0d83c-2954-45aa-9e4d-3a80d5fa031f / ext4 defaults,usrjquota=quota.user,grpjquota=quota.group,jqfmt=vfsv0 0 0
/swap.img none swap sw 0 0Включаем quota:
mount -o remount /
quotacheck -avugm
quotaon -avugquotaroot@ispnginx:~# mount -o remount
quotacheck -avugm
quotacheck: Scanning /dev/vda1 [/] done
quotacheck: Cannot stat old user quota file //quota.user: No such file or directory. Usage will not be subtracted.
quotacheck: Cannot stat old group quota file //quota.group: No such file or directory. Usage will not be subtracted.
quotacheck: Cannot stat old user quota file //quota.user: No such file or directory. Usage will not be subtracted.
quotacheck: Cannot stat old group quota file //quota.group: No such file or directory. Usage will not be subtracted.
quotacheck: Checked 13965 directories and 88306 files
quotacheck: Old file not found.
quotacheck: Old file not found.
root@ispnginx:~# quotaon -avug
/dev/vda1 [/]: group quotas turned on
/dev/vda1 [/]: user quotas turned onУстановим Vlogger, Webalizer, AWStats and GoAccessapt install -y vlogger webalizer awstats geoip-database libclass-dbi-mysql-perl
Установим последнюю версию GoAccess из репозитория разработчика:
echo "deb https://deb.goaccess.io/ $(lsb_release -cs) main" | tee -a /etc/apt/sources.list.d/goaccess.list
wget -O - https://deb.goaccess.io/gnugpg.key | apt-key --keyring /etc/apt/trusted.gpg.d/goaccess.gpg add -
apt update
apt install goaccess
Откроем файл /etc/cron.d/awstats
vi /etc/cron.d/awstats
И закомментируем все его содержимоеУстановим Jailkit fail2ban and UFWapt install -y jailkit fail2ban
Создадим набор правил
vi /etc/fail2ban/jail.local/etc/fail2ban/jail.local[pure-ftpd]
enabled = true
port = ftp
filter = pure-ftpd
logpath = /var/log/syslog
maxretry = 3[dovecot]
enabled = true
filter = dovecot
action = iptables-multiport[name=dovecot-pop3imap, port="pop3,pop3s,imap,imaps", protocol=tcp]
logpath = /var/log/mail.log
maxretry = 5[postfix]
enabled = true
port = smtp
filter = postfix
logpath = /varПерезапустим fail2ban:
service fail2ban restart
Для установки UFW выполним:
apt install -y ufwПоставим Roundcube Webmailapt install -y roundcube roundcube-core roundcube-mysql roundcube-plugins roundcube-plugins-extra javascript-common libjs-jquery-mousewheel php-net-sieve tinymce
Установщик спросит:
Configure database for roundcube with dbconfig-common? <-- Yes
MySQL application password for roundcube: <-- Press enter
Configure database for roundcube with dbconfig-common? <-- Yes
MySQL application password for roundcube: <-- Press enterОткорректируем конфигурацию RoundCube config.inc.php:
vi /etc/roundcube/config.inc.php
И поменяем the default host на localhost:
$config['default_host'] = 'localhost';
Создадим ссылку чтобы использовать конфигурацию SquirrelMail configuration в ISPConfig для Roundcube:
ln -s /usr/share/roundcube /usr/share/squirrelmailУстановим ISPConfig 3.2Перезапустим nginx
service nginx restart
Скачаем и запусти установщик с помощью команд:
cd /tmp
wget -O ispconfig.tar.gz https://www.ispconfig.org/downloads/ISPConfig-3-stable.tar.gz
tar xfz ispconfig.tar.gz
cd ispconfig3*/install/
php -q install.phpУстановка выполняется согласно подсказкам установщика:процесс установкиroot@ispnginx:/tmp/ispconfig3_install/install# php -q install.php
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
>> Initial configuration
Operating System: Ubuntu 20.04.2 LTS (Focal Fossa)
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]:
Installation mode (standard,expert) [standard]:
Full qualified hostname (FQDN) of the server, eg server1.domain.tld [ispnginx.cat-a.ru]:
MySQL server hostname [localhost]:
MySQL server port [3306]:
MySQL root username [root]:
MySQL root password []:
MySQL database to create [dbispconfig]:
MySQL charset [utf8]:
Configuring Postgrey
Configuring Postfix
Generating a 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]:RU
State or Province Name (full name) [Some-State]:Spb
Locality Name (eg, city) []:Spb
Organization Name (eg, company) [Internet Widgits Pty Ltd]:cat-a
Organizational Unit Name (eg, section) []:it
Common Name (e.g. server FQDN or YOUR name) []:ispnginx.cat-a.ru
Email Address []:admin@cat-a.ru
[INFO] service Mailman not detected
Configuring Dovecot
Creating new DHParams file, this takes several minutes. Do not interrupt the script.
Configuring Spamassassin
Configuring Amavisd
[INFO] service Rspamd not detected
Configuring Getmail
Configuring Jailkit
Configuring Pureftpd
[INFO] service BIND not detected
[INFO] service MyDNS not detected
Configuring nginx
[INFO] service OpenVZ not detected
Configuring Ubuntu Firewall
[INFO] service Metronome XMPP Server not detected
Configuring Fail2ban
Installing ISPConfig
ISPConfig Port [8080]:
Admin password [fb07e95d]:
Do you want a secure (SSL) connection to the ISPConfig web interface (y,n) [y]: y
Checking / creating certificate for ispnginx.cat-a.ru
Using certificate path /etc/letsencrypt/live/ispnginx.cat-a.ru
--2021-05-29 05:51:24-- https://get.acme.sh/
Resolving get.acme.sh (get.acme.sh)... 104.21.34.62, 172.67.199.16, 2606:4700:3031::ac43:c710, ...
Connecting to get.acme.sh (get.acme.sh)|104.21.34.62|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/html]
Saving to: ‘STDOUT’
- [ <=> ] 937 --.-KB/s in 0s
2021-05-29 05:51:25 (3.73 MB/s) - written to stdout [937]
Installed acme.sh and using it for certificate creation during install.
Using nginx for certificate validation
acme.sh is installed, overriding certificate path to use /root/.acme.sh/ispnginx.cat-a.ru
Symlink ISPConfig SSL certs to Postfix? (y,n) [y]: y
Symlink ISPConfig SSL certs to Pure-FTPd? Creating dhparam file may take some time. (y,n) [y]: y
Generating DH parameters, 2048 bit long safe prime, generator 2
This is going to take a long time
..................................................
Configuring Apps vhost
Configuring DBServer
Installing ISPConfig crontab
no crontab for getmail
Detect IP addresses
Restarting services ...
Installation completed.
root@ispnginx:/tmp/ispconfig3_install/install#После установки наша панель будет доступна на 8080 порту. Авторизуемся, используя пароль, указанный при установке:
===========
Источник:
habr.com
===========
Похожие новости:
- [Системное администрирование, *nix] Сбой в работе крупнейшего доменного провайдера России REG.RU
- [PHP, Программирование, Тестирование веб-сервисов] Веб-скрейпинг на PHP (перевод)
- [IT-инфраструктура, Управление e-commerce, Управление продажами, Управление персоналом] Пять идей для геймификации в контакт-центре (перевод)
- [Системное администрирование, IT-инфраструктура, Сетевые технологии, Сетевое оборудование] От дропшиппинга до собственного пункта выдачи. Масштабируем IP-телефонию малого бизнеса
- [Разработка веб-сайтов, PHP, Symfony, Микросервисы] Чек-лист: как оставаться отказоустойчивым, переходя на микросервисы на PHP (и как правильно падать)
- [Информационная безопасность, Системное администрирование, Облачные сервисы, IT-компании] Из-за изменения безопасности Google Drive многие из расшаренных ссылок сломаются
- [Разработка веб-сайтов, Программирование, Symfony] Главные причины, почему мы разрабатываем веб-приложения на Symfony (перевод)
- [Настройка Linux, Системное администрирование, Nginx, *nix, C] Nginx. О чем не пишут в книгах
- [IT-инфраструктура] BI-специалист: что по зарплатам, где и чему учиться и на что обращают внимание работодатели?
- [IT-инфраструктура, CRM-системы, Бизнес-модели, Будущее здесь] Как перевести компанию на UCaaS?
Теги для поиска: #_sistemnoe_administrirovanie (Системное администрирование), #_php, #_mysql, #_itinfrastruktura (IT-инфраструктура), #_nginx, #_ispconfig, #_nginx, #_mysql, #_phpfpm, #_phpmyadmin, #_sistemnoe_administrirovanie (
Системное администрирование
), #_php, #_mysql, #_itinfrastruktura (
IT-инфраструктура
), #_nginx
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 03:23
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
ISPConfig - бесплатная панель управления хостингом с открытым исходным кодом c возможностью управлять несколькими серверами из одной панели управления. Это один из лучших вариантов для веб-студий, хостинг-компаний, а так же для всех, кто ищет бесплатную панель управления хостингом с широким функционалом. В сети есть инструкции по установке на OpenSuSe, Fedora, CentOS, Debian и Ubuntu разных версий, с выходом новой ОС из поддерживаемых инструкции обновляют, но инструкция под ubuntu 20.04 с nginx почему-то выпала из числа обновленных. Самое время это исправить.Убедимся, что наша ОС сконфигурирована Убедимся, что на нашем сервере установлены последние версии всех пакетов, установлен ssh клиент и vim (или любой другой текстовый редактор, в котором вам будет удобно работать), настроен статичный ip, hosts, hostname и локали. Для установки обновлений, ssh и текстового редактора выполним команды: sudo -s apt update && apt upgrade -y && apt autoremove -y && apt install -y ssh openssh-server nano vim-noxНастроим статичный ip, для этого откроем файл конфигурации и укажем необходимые настройки: vi /etc/netplan/00-installer-config.yaml/etc/netplan/00-installer-config.yamlnetwork: version: 2 renderer: networkd ethernets: eth0: dhcp4: no addresses: [185.104.112.249/24] gateway4: 185.104.112.1 nameservers: addresses: [8.8.8.8, 8.8.4.4]Проверим корректность конфигурации командой netplan try В случае если все хорошо и конфигурация верна, появится надпись с предложением применить конфигурацию, для применения необходимо нажать клавишу ENTER, если в течении 120 секунд мы не согласимся - будет использована предыдущая конфигурация:netplan tryroot@host:~# netplan try Warning: Stopping systemd-networkd.service, but it can still be activated by: systemd-networkd.socket Do you want to keep these settings? Press ENTER before the timeout to accept the new configuration Changes will revert in 116 secondsТакже применить конфигурацию можно с помощью команды netplan apply Откроем файл hosts командой vi /etc/hosts и убедимся в наличии строки указывающей на наш сервер, как по имени хоста, так по имени хоста и домену (ispnginx - имя хоста, сat-a.ru - домена):/etc/hosts127.0.0.1 localhost.localdomain localhost 185.104.112.249 ispnginx.cat-a.ru ispnginx ::1 localhost6.localdomain6 localhost6 # The following lines are desirable for IPv6 capable hosts ::1 localhost ip6-localhost ip6-loopback fe00::0 ip6-localnet ff02::1 ip6-allnodes ff02::2 ip6-allrouters ff02::3 ip6-allhostsУстановим хостнейм, выполнив команды: echo ispnginx > /etc/hostname && hostname ispnginx или hostnamectl set-hostname ispnginx Проверим, изменился ли hostname командами: hostname hostname -fВывод должен выглядеть примерно такroot@host:~# hostname ispnginx root@host:~# hostname -f ispnginx.cat-a.ruНастроим локали, выполнив: dpkg-reconfigure locales Выбираем для установки en_US.UTF-8 и ru_RU.UTF-8, после чего перезагрузим сервер - он предварительно подготовлен к установке IspconfigИзменим оболочку по умолчаниюВ настоящий момент /bin/sh - симлинк /bin/dash, но нам нужно /bin/bash, выполним: dpkg-reconfigure dash В открывшемся окне выбираем "No" Выключим и удалим apparmorservice apparmor stop && update-rc.d -f apparmor remove && apt-get remove apparmor apparmor-utilsУстановим ntp apt install -y ntp ntpdateУстановим Postfix, Dovecot, MySQL, phpMyAdmin, rkhunter, BinutilsУстановим Postfix, Dovecot, MySQL, rkhunter и binutils с помошью команды: apt install -y postfix postfix-mysql postfix-doc mysql-client mysql-server openssl getmail4 rkhunter binutils dovecot-imapd dovecot-pop3d dovecot-mysql dovecot-sieve dovecot-lmtpd sudo patchКогда установщик попросит указать какую почтовый конфигурацию выбрать указываем Internet Site, в качестве System mail name указываем hostname General type of mail configuration: <-- Internet Site System mail name: <-- server1.example.com Откроем TLS/SSL и submission порты в Postfix, для этого откроем файл /etc/postfix/master.cf vi /etc/postfix/master.cf и раскомментируем секции submission, smtps, а также по первые 3 строчки в каждой секции и добавим к обеим секциям строку (не забываем 2 пробела в начале строки): -o smtpd_client_restrictions=permit_sasl_authenticated,reject/etc/postfix/master.cf должен выглядеть так:smtp inet n - y - - smtpd #smtp inet n - y - 1 postscreen #smtpd pass - - y - - smtpd #dnsblog unix - - y - 0 dnsblog #tlsproxy unix - - y - 0 tlsproxy 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_tls_auth_only=yes # -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 Чтобы базы данных были доступны удалено отредактируем файл /etc/mysql/mysql.conf.d/mysqld.cnf и закомментируем стоки: bind-address = 127.0.0.1 mysqlx-bind-address = 127.0.0.1 Ниже добавим строку: mysqlx=OFFvi /etc/mysql/mysql.conf.d/mysqld.cnf/etc/mysql/mysql.conf.d/mysqld.cnf[mysqld] # # * Basic Settings # user = mysql # pid-file = /var/run/mysqld/mysqld.pid # socket = /var/run/mysqld/mysqld.sock # port = 3306 # datadir = /var/lib/mysql # If MySQL is running as a replication slave, this should be # changed. Ref https://dev.mysql.com/doc/refman/8.0/en/server-syst...ml#sysvar_tmpdir # tmpdir = /tmp # # 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 #mysqlx-bind-address = 127.0.0.1 mysqlx=OFFПерезапустим mysql и проверим, что сетевой доступ к mysql включен командой: service mysql restart && netstat -tap | grep mysqlВывод должен быть аналогичен данному:root@ispnginx:~# netstat -tap | grep mysql tcp6 0 0 [::]:mysql [::]:* LISTEN 18513/mysqld root@ispnginx:~#Установим Amavisd-new, SpamAssassin, and ClamavВыполним установку командой: apt install -y amavisd-new spamassassin clamav clamav-daemon unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl postgrey т.к. amavisd, загружает фильтры SpamAssassin, мы можем остановить SpamAssassin для экономии памяти service spamassassin stop update-rc.d -f spamassassin remove Запустим ClamAV freshclam service clamav-daemon startОшибку при первом запуске игнорируемroot@ispnginx:~# service spamassassin stop root@ispnginx:~# update-rc.d -f spamassassin remove root@ispnginx:~# freshclam WARNING: Ignoring deprecated option SafeBrowsing at /etc/clamav/freshclam.conf:22 ERROR: /var/log/clamav/freshclam.log is locked by another process ERROR: Problem with internal logger (UpdateLogFile = /var/log/clamav/freshclam.log). ERROR: initialize: libfreshclam init failed. ERROR: Initialization error! root@ispnginx:~# service clamav-daemon start root@ispnginx:~#Установим Nginx, PHP 7.4 (PHP-FPM), and FcgiwrapУстановим nginx apt-get install nginxОбращаться к интерпретатору мы будем через PHP-FPM (FastCGI Process Manager), установим его: apt-get -y install php7.4-fpmПоищем дополнительные модули php: apt-cache search php7.4Выберем необходимые и установим: apt install -y php7.4-common php7.4 php7.4-gd php7.4-mysql php7.4-imap php7.4-cli php7.4-cgi php7.4-curl php7.4-pspell php7.4-intl php7.4-sqlite3 php7.4-tidy php7.4-xml php7.4-xmlrpc php7.4-zip php7.4-xsl php7.4-mbstring php7.4-soap php-pear mcrypt imagemagick libruby memcached php-memcache php-imagick php-soap php-apcuОткроем файл vi /etc/php/7.4/fpm/php.ini И установим cgi.fix_pathinfo=0, your timezone, short_open_tag= On/etc/php/7.4/fpm/php.ini[...] cgi.fix_pathinfo=0 [...] date.timezone="Europe/Moscow" [...] short_open_tag = On [...]Перезагрузим PHP-FPM: service php7.4-fpm reload Чтобы получить поддержку CGI в nginx, установим Fcgiwrap: apt-get -y install fcgiwrapУстановим phpmyadminapt-get -y install phpmyadmin php-mbstring В процессе установщик спросит под какой сервер сконфигурировать pma, но из вариантов только apache и lighthttpd, потому ничего не выбираем : Также просто пропускаем вопрос об установке пароля MySQL application password for phpmyadmin: <-- Press Enter Далее соглашаемся Configure database for phpmyadmin with dbconfig-common? <-- Yes Установим Let's Encrypt, PureFTPd и Quotaapt install -y certbot pure-ftpd-common pure-ftpd-mysql quota quotatoolОтредактируем файл /etc/default/pure-ftpd-common и убедимся, что start mode = standalone и VIRTUALCHROOT=true vi /etc/default/pure-ftpd-common Включим FTPS командой echo 1 > /etc/pure-ftpd/conf/TLS Создадим директорию для сертификатов 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 Поменяем права на файл: chmod 600 /etc/ssl/private/pure-ftpd.pem Перезапустим PureFTPd: service pure-ftpd-mysql restartОтредактируем файл /etc/fstab. Мой выглядит примерно так (добавляем ,usrjquota=quota.user,grpjquota=quota.group,jqfmt=vfsv0 к корневой точке монтирования): vi /etc/fstab/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/vda1 during curtin installation /dev/disk/by-uuid/1ea0d83c-2954-45aa-9e4d-3a80d5fa031f / ext4 defaults,usrjquota=quota.user,grpjquota=quota.group,jqfmt=vfsv0 0 0 /swap.img none swap sw 0 0Включаем quota: mount -o remount / quotacheck -avugm quotaon -avugquotaroot@ispnginx:~# mount -o remount quotacheck -avugm quotacheck: Scanning /dev/vda1 [/] done quotacheck: Cannot stat old user quota file //quota.user: No such file or directory. Usage will not be subtracted. quotacheck: Cannot stat old group quota file //quota.group: No such file or directory. Usage will not be subtracted. quotacheck: Cannot stat old user quota file //quota.user: No such file or directory. Usage will not be subtracted. quotacheck: Cannot stat old group quota file //quota.group: No such file or directory. Usage will not be subtracted. quotacheck: Checked 13965 directories and 88306 files quotacheck: Old file not found. quotacheck: Old file not found. root@ispnginx:~# quotaon -avug /dev/vda1 [/]: group quotas turned on /dev/vda1 [/]: user quotas turned onУстановим Vlogger, Webalizer, AWStats and GoAccessapt install -y vlogger webalizer awstats geoip-database libclass-dbi-mysql-perl Установим последнюю версию GoAccess из репозитория разработчика: echo "deb https://deb.goaccess.io/ $(lsb_release -cs) main" | tee -a /etc/apt/sources.list.d/goaccess.list wget -O - https://deb.goaccess.io/gnugpg.key | apt-key --keyring /etc/apt/trusted.gpg.d/goaccess.gpg add - apt update apt install goaccess Откроем файл /etc/cron.d/awstats vi /etc/cron.d/awstats И закомментируем все его содержимоеУстановим Jailkit fail2ban and UFWapt install -y jailkit fail2ban Создадим набор правил vi /etc/fail2ban/jail.local/etc/fail2ban/jail.local[pure-ftpd] enabled = true port = ftp filter = pure-ftpd logpath = /var/log/syslog maxretry = 3[dovecot] enabled = true filter = dovecot action = iptables-multiport[name=dovecot-pop3imap, port="pop3,pop3s,imap,imaps", protocol=tcp] logpath = /var/log/mail.log maxretry = 5[postfix] enabled = true port = smtp filter = postfix logpath = /varПерезапустим fail2ban: service fail2ban restart Для установки UFW выполним: apt install -y ufwПоставим Roundcube Webmailapt install -y roundcube roundcube-core roundcube-mysql roundcube-plugins roundcube-plugins-extra javascript-common libjs-jquery-mousewheel php-net-sieve tinymce Установщик спросит: Configure database for roundcube with dbconfig-common? <-- Yes MySQL application password for roundcube: <-- Press enter Configure database for roundcube with dbconfig-common? <-- Yes MySQL application password for roundcube: <-- Press enterОткорректируем конфигурацию RoundCube config.inc.php: vi /etc/roundcube/config.inc.php И поменяем the default host на localhost: $config['default_host'] = 'localhost'; Создадим ссылку чтобы использовать конфигурацию SquirrelMail configuration в ISPConfig для Roundcube: ln -s /usr/share/roundcube /usr/share/squirrelmailУстановим ISPConfig 3.2Перезапустим nginx service nginx restart Скачаем и запусти установщик с помощью команд: cd /tmp wget -O ispconfig.tar.gz https://www.ispconfig.org/downloads/ISPConfig-3-stable.tar.gz tar xfz ispconfig.tar.gz cd ispconfig3*/install/ php -q install.phpУстановка выполняется согласно подсказкам установщика:процесс установкиroot@ispnginx:/tmp/ispconfig3_install/install# php -q install.php -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- >> Initial configuration Operating System: Ubuntu 20.04.2 LTS (Focal Fossa) 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]: Installation mode (standard,expert) [standard]: Full qualified hostname (FQDN) of the server, eg server1.domain.tld [ispnginx.cat-a.ru]: MySQL server hostname [localhost]: MySQL server port [3306]: MySQL root username [root]: MySQL root password []: MySQL database to create [dbispconfig]: MySQL charset [utf8]: Configuring Postgrey Configuring Postfix Generating a 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]:RU State or Province Name (full name) [Some-State]:Spb Locality Name (eg, city) []:Spb Organization Name (eg, company) [Internet Widgits Pty Ltd]:cat-a Organizational Unit Name (eg, section) []:it Common Name (e.g. server FQDN or YOUR name) []:ispnginx.cat-a.ru Email Address []:admin@cat-a.ru [INFO] service Mailman not detected Configuring Dovecot Creating new DHParams file, this takes several minutes. Do not interrupt the script. Configuring Spamassassin Configuring Amavisd [INFO] service Rspamd not detected Configuring Getmail Configuring Jailkit Configuring Pureftpd [INFO] service BIND not detected [INFO] service MyDNS not detected Configuring nginx [INFO] service OpenVZ not detected Configuring Ubuntu Firewall [INFO] service Metronome XMPP Server not detected Configuring Fail2ban Installing ISPConfig ISPConfig Port [8080]: Admin password [fb07e95d]: Do you want a secure (SSL) connection to the ISPConfig web interface (y,n) [y]: y Checking / creating certificate for ispnginx.cat-a.ru Using certificate path /etc/letsencrypt/live/ispnginx.cat-a.ru --2021-05-29 05:51:24-- https://get.acme.sh/ Resolving get.acme.sh (get.acme.sh)... 104.21.34.62, 172.67.199.16, 2606:4700:3031::ac43:c710, ... Connecting to get.acme.sh (get.acme.sh)|104.21.34.62|:443... connected. HTTP request sent, awaiting response... 200 OK Length: unspecified [text/html] Saving to: ‘STDOUT’ - [ <=> ] 937 --.-KB/s in 0s 2021-05-29 05:51:25 (3.73 MB/s) - written to stdout [937] Installed acme.sh and using it for certificate creation during install. Using nginx for certificate validation acme.sh is installed, overriding certificate path to use /root/.acme.sh/ispnginx.cat-a.ru Symlink ISPConfig SSL certs to Postfix? (y,n) [y]: y Symlink ISPConfig SSL certs to Pure-FTPd? Creating dhparam file may take some time. (y,n) [y]: y Generating DH parameters, 2048 bit long safe prime, generator 2 This is going to take a long time .................................................. Configuring Apps vhost Configuring DBServer Installing ISPConfig crontab no crontab for getmail Detect IP addresses Restarting services ... Installation completed. root@ispnginx:/tmp/ispconfig3_install/install#После установки наша панель будет доступна на 8080 порту. Авторизуемся, используя пароль, указанный при установке: =========== Источник: habr.com =========== Похожие новости:
Системное администрирование ), #_php, #_mysql, #_itinfrastruktura ( IT-инфраструктура ), #_nginx |
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 03:23
Часовой пояс: UTC + 5