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
  1. Zainstaluj Amavis, ClamAv oraz SpamAssasin
$ apt -y install 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 libdbd-mysql-perl

Amavis korzysta z filtrów SpamAssasin, sama usługa SpamAssasin jest nam nie potrzebna, więc zatrzymaj ją.

$ service spamassassin stop
$ update-rc.d -f spamassassin remove

Zaktualizuj sygnatury ClamAV i uruchom usługę

$ freshclam
$ systemctl start clamav-daemon
  1. Instalacja Nginx, PHP 7.4 (PHP-FPM), PHP 8.0 (PHP-FPM) i Fcgiwrap
$ apt install nginx

Następnie zatrzymaj i usuń Apache jeżeli posiadasz ten serwer

$ systemctl stop apache2

oraz

$ update-rc.d -f apache2 remove

uruchom server nginx

$ systemctl start nginx

Zainstaluj PHP

$ apt -y install php7.4-fpm

oraz

$ apt -y install php8.0-fpm

następnie

$ apt -y install php7.4 php7.4-common php7.4-gd php7.4-mysql php7.4-imap php7.4-cli php7.4-cgi php-pear mcrypt imagemagick libruby php7.4-curl php7.4-intl php7.4-pspell php7.4-sqlite3 php7.4-tidy php7.4-xmlrpc php7.4-xsl memcached php-memcache php7.4-memcached php-imagick php7.4-gettext php7.4-zip php7.4-mbstring php-soap php7.4-soap

oraz

$ apt -y install php8.0 php8.0-common php8.0-gd php8.0-mysql php8.0-imap php8.0-cli php8.0-cgi php8.0-curl php8.0-intl php8.0-pspell php8.0-sqlite3 php8.0-tidy php8.0-xmlrpc php8.0-xsl php8.0-memcached php8.0-gettext php8.0-zip php8.0-mbstring php8.0-soap

sprawdź domyślną wersję php jaką posiadasz w systemie, wydając polecenie

$ php -v

Pewnie wyświetli ci się coś jak poniżej

PHP 8.0.9 (cli) (built: Jul 30 2021 13:03:39) ( NTS )
Copyright (c) The PHP Group
Zend Engine v4.0.9, Copyright (c) Zend Technologies
with Zend OPcache v8.0.9, Copyright (c), by Zend Technologies

Niestety IspConfig3 nie działa poprawnie z PHP8, więc specjalnie dla niego będziesz musiał przywrócić wersję 7.4

Wydaj polecenie

$ update-alternatives --config php

Wyświetli ci się menu jak poniżej

There are 2 choices for the alternative php (providing /usr/bin/php).

  Selection    Path             Priority   Status
------------------------------------------------------------
* 0            /usr/bin/php8.0   80        auto mode
  1            /usr/bin/php7.4   74        manual mode
  2            /usr/bin/php8.0   80        manual mode

Press <enter> to keep the current choice[*], or type selection number: 1

Wybierz php 7.4, w moim przypadku jest to :1 (w twoim przypadku może być inaczej) i wciśnij enter

Podobnie zrób dla php-cgi

$ update-alternatives --config php-cgi

następnie sprawdź, czy operacja zmiany domyślnej wersji PHP przebiegła pomyślnie

$ php -v

Powinieneś dostać informacje jak poniżej

PHP 7.4.22 (cli) (built: Jul 30 2021 13:08:17) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
    with Zend OPcache v7.4.22, Copyright (c), by Zend Technologies

Jeśli tak jest, przejdź do kolejnych kroków instalacji

Wyedytuj plik

/etc/php/7.4/fpm/php.ini

Dodając lub zmieniając dyrektywy, aby wyglądały jak poniżej

[...]
cgi.fix_pathinfo=0
[...]
date.timezone="Europe/Warsaw"
[...]

to samo zrób dla

/etc/php/8.0/fpm/php.ini

przeładuj usługi

$ systemctl reload php7.4-fpm

oraz

$ systemctl reload php8.0-fpm

Zainstaluj fcgiwrap

$ apt -y install fcgiwrap
  1. Instalacja Let’s Encrypt

Uruchomienie darmowego certyfikatu dla własnej strony internetowej, na pewno będzie miłym akcentem. Zainstalujmy więc Let’s Encrypt na serwerze, same certyfikaty dla naszych stron będziemy generować z panelu IspConfig3

$ apt -y install certbot
$ certbot register
  1. Instalacja PureFTPd i Quota
$ apt -y install pure-ftpd-common pure-ftpd-mysql quota quotatool

i konfiguracja usług

Wyedytuj plik

/etc/default/pure-ftpd-common

zmień dyrektywy, aby wyglądały jak poniżej

[...]
STANDALONE_OR_INETD=standalone
[...]
VIRTUALCHROOT=true
[...]

Następnie z konsoli wykonaj polecenie

$ echo 1 > /etc/pure-ftpd/conf/TLS

załóż katalog

$ mkdir -p /etc/ssl/private

i wygeneruj certyfikat dla ProFTPd

$ openssl req -x509 -nodes -days 7300 -newkey rsa:2048 -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pem

Na pytania odpowiedz jak poniżej, dostosowując je oczywiście pod siebie

Country Name (2 letter code) [AU]: <-- Kod twojego kraju (e.g., "PL").
State or Province Name (full name) [Some-State]:<-- Podaj swój stan lub prowincję.
Locality Name (eg, city) []:<-- Nazwa miasta.
Organization Name (eg, company) [Internet Widgits Pty Ltd]:<-- Organizacja.
Organizational Unit Name (eg, section) []:<-- Nazwa jednostki organizacyjnej.
Common Name (eg, YOUR name) []:<-- Twoje imię.
Email Address []:<-- Twój adres email.

Nadaj wygenerowanemu certyfikatowi odpowiednie prawa

$ chmod 600 /etc/ssl/private/pure-ftpd.pem

zrestartuj usługę

$ systemctl restart pure-ftpd-mysql

uruchomienie quota. Do pliku /etc/fstab dopisz na poniższy wzór, wytłuszczona treść

/dev/mapper/server1--vg-root / ext4 errors=remount-ro,usrjquota=quota.user,grpjquota=quota.group,jqfmt=vfsv0 0 1

następnie w konsoli wydaj polecenie

$ mount -o remount /

oraz

$ quotacheck -avugm
$ quotaon -avug

Jeśli wystąpią błędy jak poniżej

quotacheck: Scanning /dev/mapper/server1--vg-root [/] 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 18566 directories and 110119 files
quotacheck: Old file not found.
quotacheck: Old file not found.

zignoruj je, to jest normalne

  1. Instalacja serwera DNS Bind
$ apt -y install bind9 dnsutils haveged
$ systemctl enable haveged
$ systemctl start haveged
  1. Instalacja Vlogger, Webalizer, And AWStats

Wydaj w konsoli polecenie

$ apt -y install vlogger webalizer awstats geoip-database libclass-dbi-mysql-perl

następnie wyedytuj plik /etc/cron.d/awstats

i wstaw # (zakomentuj zawarte tam dyrektywy) jak poniżej

#MAILTO=root

#*/10 * * * * www-data [ -x /usr/share/awstats/tools/update.sh ] && /usr/share/awstats/tools/update.sh

# Generate static reports:
#10 03 * * * www-data [ -x /usr/share/awstats/tools/buildstatic.sh ] && /usr/share/awstats/tools/buildstatic.sh

Strony: 1 2 3