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

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 = /var/run/mysqld/mysqld.sock
[mysql_upgrade]
host = localhost
user = root
password = twoje hasło root dla MariaDB
socket = /var/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