The Perfect Server – Ubuntu 20.04 (Nginx, MySQL, PHP8.0, Brotli, Postfix, BIND, Dovecot, Pure-FTPD and ISPConfig 3.2)

The Perfect Server – Ubuntu 20.04 (Nginx, MySQL, PHP8.0, Brotli, Postfix, BIND, Dovecot, Pure-FTPD and ISPConfig 3.2)

14 sierpnia 2021 6 przez gielo

Tutorial pokazuje krok po kroku jak postawić swój własny serwer hostingowy na maszynie vps z wykorzystaniem takich popularnych usług jak Nginx, MySQL, PHP w najnowszej wersji 8.0, z serwerem pocztowym, serwerem FTP, serwerem DNS, zarządzanych w łatwy sposób poprzez przeglądarkę za pośrednictwem darmowego panelu ISPConfig w wersji 3.2.

Tutorial bazuje na podobnym rozwiązaniu dostępnym w internecie, przystosowanym pod nowszą wersję Ubuntu 20.04 i rozszerzony został o kilka dodatkowych usług takich jak kompresja Brotli, najnowsza wersja PHP 8.0 itp.

  1. Zdobądź prawa super użytkownika

Instalacja prezentowanych w niniejszym poradniku usług, wymaga praw super użytkownika root, i aby nie pisać za każdym razem sudo, właściwym jest uzyskać stałe prawa super użytkownika, aby to zrobić wpisz w konsoli

$ sudo -s

Instalację poniższych usług najlepiej wykonywać na świeżo zainstalowanym systemie Ubuntu 20.04, wtedy masz pewność, że wszystko będzie działać jak należy i instalacja przebiegnie bezproblemowo.

  1. Zaktualizuj pakiety do najnowszej wersji
$ apt update && apt upgrade
  1. Dodaj wymagane repozytoria

Jako, że będziemy instalować brotli, musimy skorzystać z repozytorium, które udostępnia serwer nginx z wymaganym modułem. Skorzystamy z repozytorium Ondřej Surý. Z tego repozytorium zainstalujemy także PHP w wersji 7.4 (wymagane przez panel ispconfig i inne starsze skrypty nie przystosowane do najnowszej wersji PHP) oraz najnowsza na dzień dzisiejszy wersję PHP 8.0.

$ add-apt-repository ppa:ondrej/nginx-mainline
$ add-apt-repository ppa:ondrej/php
$ apt update
  1. Zmień defaultowy shell
$ dpkg-reconfigure dash

Wybierz

No

i wciśnij enter

  1. Zatrzymaj i usuń AppArmor

Jest to rozszerzenie bezpieczeństwa podobne do SElinux. W celu uniknięcia wielu problemów powinniśmy go zatrzymać i usunąć. Nie jest on wymagany do stworzenia bezpiecznego systemu, a w wielu sytuacjach może powodować niepotrzebne problemy.

$ service apparmor stop
$ update-rc.d -f apparmor remove
$ apt remove apparmor apparmor-utils
  1. Zsynchrinizuj swój zegar systemowy z serwerem czasu NTP
$ apt -y install ntp ntpdate
  1. Zainstaluj Postfix, Dovecot, MariaDB, rkhunter, Binutils

Przed instalacją postfixa sprawdź, czy w systemie nie jest zainstalowany serwer pocztowy Sendmail.

$ service sendmail stop; update-rc.d -f sendmail remove

Jeśli jest, zostanie on zatrzymany i usunięty z systemu, Jeśli nie ma, zobaczysz informację jak poniżej

Failed to stop sendmail.service: Unit sendmail.service not loaded.

Teraz instalujemy wymagane oprogramowanie

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

Wybierz Internet Site i zatwierdź Ok

Wpisz nazwę swojego serwera. Najczęściej będzie ona prawidłowa, więc zatwierdź tylko Ok

Otwórz plik /etc/postfix/master.cf swoim ulubionym edytorem tekstu (np. Nano). Odkomentuj lub dopisz kilka linii, aby wyglądało to jak na zdjęciu poniżej.

następnie zrestartuj postfix

$ systemctl restart postfix

Wyedytuj

/etc/mysql/mariadb.conf.d/50-server.cnf

i dodaj # przed bind-adress, aby wyglądało to jak poniżej

#bind-address           = 127.0.0.1

Ustaw hasło root w MariaDB. Uruchom w konsoli

$ mysql_secure_installation

i postępuj zgodnie z poniższym schematem

Enter current password for root (enter for none): <-- wciśnij enter
Set root password? [Y/n] <-- y
New password: <-- Tutaj wpisz swoje hasło root dla mysql i wciśnij enter
Re-enter new password: <-- Powtórz hasło i wciśnij enter
Remove anonymous users? [Y/n] <-- y
Disallow root login remotely? [Y/n] <-- y
Reload privilege tables now? [Y/n] <-- y

W konsoli uruchom polecenie

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

W zależności od tego, czy instalację ispconfig3 przeprowadzasz na świeżym systemie Ubuntu 20.04, czy też aktualizowanym z wcześniejszej stabilnej wersji wersji 16.04. może wystąpić problem tego typu, że pomimo ustawienia hasła root dla MariaDB, po wydaniu polecenia systemctl status mariadb lub też po uruchomieniu MySQL Tuner (skrypt pomocny przy tuningu MySQL/MariaDB) znajdziesz informację o nieprawidłowościach w haśle root dla twojej instalacji MariaDB. W takim przypadku wykonaj dodatkowe komendy oznaczone na zielono.

$ mysql -u root -p

podaj swoje hasło root dla mysql i następnie po zalogowaniu się do mysql wpisz poniższe polecenie

MariaDB [(none)]> SET PASSWORD FOR root@localhost = PASSWORD('twoje hasło mysql root');

Wyedytuj plik /etc/mysql/debian.cnf dopisz swoje hasło root do pliku, aby wyglądało to jak w poniższym schemacie

# Automatically generated for Debian scripts. DO NOT TOUCH!
[client]
host = localhost
user = root
password = twoje hasło root dla MariaDB
socket = /run/mysqld/mysqld.sock
[mysql_upgrade]
host = localhost
user = root
password = twoje hasło root dla MariaDB
socket = /run/mysqld/mysqld.sock
basedir = /usr

W wytłuszczonych polach oczywiście wpisujesz swoje hasło

przeładuj mysql

$ systemctl restart mysql

Uruchom polecenie

$ netstat -tap | grep mysql

Jeśli wszystko poszło jak powinno, powinieneś zobaczyć komunikat podobny do poniższego

tcp6 0 0 [::]:mysql [::]:* LISTEN 12210/mysqld

Strony: 1 2 3