WSTĘP
Wszystko co robię jest wykonywane na Debianie 10, konto root
Zauważyłem ze w ostatnim czasie dużo osób ma problemy z zainstalowaniem podstawowych rzeczy, takich jak Apache2, MariaDB, PHP7.4, PHPMyAdmin, bo poradniki na forum mogą być już stare lub coś jest nie dokładnie wytłumaczone.
W serii moich poradników dowiecie się jak zainstalować:
- Apache2 + MariaDB + PHPMyAdmin + PHP 7.4 + rozszerzenia + SSL + HTTP/2 + Jak dostać ocenę A+ strony na SSLLabs.com
- Pterodactyl Panel + jak włączyć na nim Teamspeak 3
- TS3AudioBoty z panelem
- Status naszych stron lub aplikacji w uptimerobot.com
Jest to pierwszy poradnik z całej serii a wiec zabierajmy się za robotę.

PODSTAWY KTÓRE UŁATWIĄ NAM PRACĘ.
Zacznijmy od tego że wykonamy update i upgrade, całej maszyny, a także zmienimy język i czas na Polski.
Zmienimy jeszcze kolory w konsoli żeby łatwiej się korzystało z putty.
Wiec zaczynajmy, pierwsze co robimy to wykonujemy update i upgrade nowej maszyny używając komendy poniżej.
apt update && apt upgradeJeśli będzie trzeba to klikamy Y i Enter
Potrzebne nam będzie jeszcze kilka pakietów, a pobieramy je komendą:
apt install wget unzip curl wget gnupg2 ca-certificates lsb-release apt-transport-httpsJeśli będzie trzeba to klikamy Y i Enter
Teraz zmieniamy kolory na naszym VPS żeby to wykonać wpisujemy
mv ~/.bashrc ~/.bashrc.messed
cp /etc/skel/.bashrc ~/.bashrcNastępnie wpisujemy wklepujemy komendę
nano .bashrc Szukamy #force_color_prompt=yes i zmieniamy na force_color_prompt=yes czyli usuwamy # z przodu.

Po tym zapisujemy plik klikając Ctrl + X teraz Y i Enter
Po restarcie putty czy innego terminalu którego używamy powinniśmy zobaczyć taki oto zielony kolorek

Teraz zmieniamy język VPS na Polski a także godzinę (spokojnie, gdy mamy Polski język nadal możemy używać skrótów angielskich).
Więc zacznijmy od zmiany języka wpisujemy
apt-get install localesJeśli będzie trzeba to klikamy Y i Enter
Zainstaluje nam to pakiet o nazwie locales który umożliwia zmianę języka na VPS Teraz wpisujemy
locale-gen pl_PL.UTF-8Po wpisaniu tej komendy zobaczymy oto taki wynik.

Teraz wpisujemy komendę która jest poniżej
dpkg-reconfigure localesWyświetli nam się bardzo dużo języków ale szukamy języka Polskiego UTF-8 i zaznaczamy go spacją następnie klikamy enter

Teraz dostaniemy okno w którym wybieramy jaki język ma być na VPS i wybieramy nasz język Polski i klikamy enter

Po wszystkim dostaniemy taki wynik w konsoli, po czym restartujemy jeszcze raz putty

Po tym zmieniamy czas na naszym VPS używając tej komendy
dpkg-reconfigure tzdataPo czym wybieramy Europe i klikamy enter

Następnie szukamy Warsaw i klikamy enter

Po wszystkim zobaczymy taki wynik w konsoli


INSTALACJA APACHE2, MARIADB, PHP7.4, PHPMYADMIN
Zacznijmy instalację od Apache2
apt install apache2Jeśli będzie trzeba to klikamy Y i Enter
Następnie instalujemy MariaDB
apt install mariadb-serverJeśli będzie trzeba to klikamy Y i Enter
Teraz konfigurujemy serwer MariaDB do tego użyjemy komendy:
mysql_secure_installation- Klikemy Enter
- Klikamy Y i Enter
- Wpisujemy nasze hasło do MariaDB
- Potwierdzamy nasze hasło do MariaDB wpisując dokładnie to samo co w 3 kroku
- Klikamy Y i Enter
- Klikamy Y i Enter
- Klikamy N i Enter
- Klikamy Y i Enter
Po wszystkim zobaczymy taki wynik w konsoli

Teraz naprawiamy błąd z logowaniem się do root'a
mysqld --skip-grant-tablesTeraz otwieramy nową konsolę w putty i wklepujemy
mysql -u root -pflush privileges;ALTER USER 'root'@'localhost' IDENTIFIED BY 'lvluppro';echo "update mysql.user set plugin = 'mysql_native_password' where user='root';" | mysql -u rootTeraz wyłączamy pierwszą konsolę i restartujemy apache
servica mysql restartTeraz możemy się zalogować do Mysql
mysql -u root -pi wychodzimy z bazy danych
exiti klikamy Enter
Ważne! Zmień na swoje hasło ja akurat ustawiłem lvluppro
Teraz instalujemy PHPMyAdmin
wget https://files.phpmyadmin.net/phpMyAdmin/5.0.4/phpMyAdmin-5.0.4-all-languages.zipNastępnie wypakowujemy PHPMyAdmin unzipem
unzip phpMyAdmin-5.0.4-all-languages.zipKolejno przenosimy PHPMyAdmin do /usr/share/ i zmieniamy nazwę na phpmyadmin
mv -v phpMyAdmin-5.0.4-all-languages /usr/share/phpmyadminPo tym edytujemy plik configu używając komend:
cd /usr/share/phpmyadminmv -v config.sample.inc.php /usr/share/phpmyadmin/config.inc.phpnano config.sample.inc.phpI szukamy $cfg['blowfish_secret'] = ' '; tu wklejamy nasz sekretny kod który możemy wygenerować na tej stronie: https://phpsolved.com/phpmyadmin-blowfish-secret-generator/
Czyli wchodzimy na tą stronę i widzimy nasz kod który strona wygenerowała automatycznie nie trzeba odświeżać strony wystarczy go skopiować i wkleić prawym przyciskiem myszy, jak widać na dole.

Po tym zapisujemy plik klikając Ctrl + X teraz Y i Enter
Teraz trzeba utworzyć plik tmp i nadać mu uprawnienia 755 wiec wykonujemy komendy które są poniżej
mkdir tmp && chmod 777 tmpTeraz usuwamy pliki do phpmyadmin które pobraliśmy i tworzymy subdomenę dla naszej bazy danych
cd ~rm -r phpMyAdmin-5.0.4-all-languages.zipnano /etc/apache2/sites-available/phpmyadmin.confi wklejamy to co jest poniżej, ale trzeba zmienić na nazwę swojej domeny ServerName w moim przypadku jest to glupikocz.fun
ServerName baza.glupikocz.fun
ServerAdmin webmaster@localhost
DocumentRoot /usr/share/phpmyadmin
Options FollowSymLinks
DirectoryIndex index.php
AddType application/x-httpd-php .php
SetHandler application/x-httpd-php
php_flag magic_quotes_gpc Off
php_flag track_vars On
php_flag register_globals Off
php_admin_flag allow_url_fopen Off
php_value include_path .
php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp
php_admin_value open_basedir /usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/php/php-gettext/:/usr/share/javascript/:/usr/share/php/tcpdf/
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
Po tym zapisujemy plik klikając Ctrl + X teraz Y i Enter Teraz włączymy naszą subdomenę komendą
a2ensite phpmyadminI restartujemy apache2
systemctl restart apache2Teraz zajmiemy się instalacją PHP 7.4 i rozszerzeń
wget -O - https://packages.sury.org/php/apt.gpg | apt-key add -echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/php7.listapt updateapt install php7.4 php7.4-cli php7.4-common libapache2-mod-php7.4 php7.4-mysql php7.4-mysql php7.4-dom php7.4-simplexml php7.4-ssh2 php7.4-xml php7.4-xmlreader php7.4-curl php7.4-exif php7.4-ftp php7.4-gd php7.4-iconv php7.4-imagick php7.4-json php7.4-mbstring php7.4-posix php7.4-sockets php7.4-tokenizer php7.4-pdo php7.4-bcmath php7.4-fpm php7.4-zipJeśli będzie trzeba to klikamy Y i Enter
Po wszystkim sprawdzamy czy mamy PHP 7.4
php -v

PRZYPISUJEMY IPv4 VPS DO NASZEJ DOMENY
WAŻNE!!! Moja domena jest zarejestrowana w home.pl, ale w innych hostingach powinno być podobnie.
Teraz czas na dodanie naszego IPv4 VPS do rekordu A domeny i utworzenia subdomen w moim przypadku jest to 34.89.248.181, a moja domena to glupikocz.fun.
Dobra zabieramy się za robotę więc wchodzimy na hosting naszej domeny, logujemy się do panelu klienta, wybieramy z listy naszą domenę i wchodzimy w zarządzanie DNS.
Teraz klikamy
lub podobny przycisk w waszym hostingu.
Wybieramy rekord A wpisujemy nasze IP VPS w moim przypadku jest to 34.89.248.181 i klikamy OK

Teraz dodajemy subdomenę baza i panel, wiec robimy to samo co wyżej tylko dodajemy w polu HOST(Opcjonalne) "baza" i "panel"

Dodamy jeszcze od razu jak jesteśmy w panelu DNS CAA
Wiec wchodzimy znów w
i wybieramy CAA i ustawiamy Flag = 0, Tag = 0 i wklejamy
issue letsencrypt.org
Po tym znów dodajemy nowy rekord CAA wiec klikamy
i znów wybieramy CAA i ustawiamy Flag = 0, Tag = 0 i wklejamy
issuewild "letsencrypt.org"
No i już ostatni rekord CAA wiec klikamy
i znów wybieramy CAA i ustawiamy Flag = 0, Tag = 0, zmieniamy email w moim przypadku jest to kontakt@glupikocz.fun a zmieniacie na swój email i wklejamy
iodef mailto:kontakt@glupikocz.fun
Gotowe!


ZABEZPIECZENIE STRONY SSL
W tym poradniku użyję certbota który automatycznie wygeneruje SSL dla naszej strony
Wiec jedziemy z koksem, zaczynamy od instalacji Certbota.
apt update && apt install certbotGitarka Certbot zainstalowany ale zanim zabezpieczymy stronę musimy pierwszę edytować plik 000-default.conf w /etc/apache2/sites-available, no to lecimy
nano /etc/apache2/sites-available/000-default.confUsuwamy stąd wszystko i wklejamy,
ServerName glupikocz.fun
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
WAŻNE! Pamiętaj żeby zmienić moją domenę glupikocz.fun na twoją
Po tym zapisujemy plik klikając Ctrl + X teraz Y i Enter Teraz restartujemy apache2
service apache2 restartNo i już lecimy z zabezpieczeniem strony Certbotem
certbot --apacheTeraz Certbot poprosi nas żebyśmy podali email na który będą przychodzić maile w moim wypadku jest to kontakt@glupikocz.fun

teraz wpisujemy A i klikamy Enter

teraz Y i Enter

Teraz Certbot zapyta nas którą stronę chcemy zabezpieczyć wiec zacznijmy od głownej w moim wypadku jest to glupikocz.fun, czyli wpisujemy 1 i klikamy Enter

Teraz Certbot wygenerował nam certyfikat SSL, pojawi wam się coś takiego jeśli dobrze to zrobiliście

Jak widać wszystko bardzo ładnie działa :P

No to co jedziemy z zabezpieczeniem subdomeny baza.glupikocz.fun, a więc wklepujemy
certbot --apacheI wybieramy tym razem 2 czyli baza.glupikocz.fun i klikamy Enter

Pumc! o i to też działa 😛

Oj dobra dla niedowiarków wejdziemy na https://baza.glupikocz.fun i sprawdzimy czy jest certyfikat

Yikes! Działa :D

DODANIE HTTP/2 DO STRON I SPRAWDZENIE CZY MAMY OCENĘ A+ NA SLLLABS.COM
WAŻNE!
Co to jest tak naprawdę ten wymysł nauki HTTP/2? Ekhem już tłumacze, znaczy ta strona za dużo pisania 😛 https://www.whitepress.pl/baza-wiedzy/201/http-2-co-to-jest-i-czy-warto-to-wdrazac
Wiec jedziemy z koksem, jak zawsze kopiujcie to co niżej jest
apt-get install php7.4-fpma2dismod php7.4a2enconf php7.4-fpma2enmod proxy_fcgia2dismod mpm_preforka2enmod mpm_eventa2enmod ssla2enmod http2a2enmod headerssystemctl restart apache2Teraz robi się cięzko, musimy dodać jedną linijkę do 000-default-le-ssl.conf w /etc/apache2/sites-available, no to jazda
nano /etc/apache2/sites-available/000-default-le-ssl.confdodajemy najlepiej w tym samym miejscu gdzie ja linijkę
Protocols h2 http/1.1
Po tym zapisujemy plik klikając Ctrl + X teraz Y i Enter I restartujemy Apache2
systemctl restart apache2Żeby sprawdzić czy to działa wchodzimy na https://tools.keycdn.com/http2-test
I wklepujemy naszą domenę z https:// i klikamy Test

Jak widać HTTP/2 działa Teraz robimy to samo dla PHPMyAdmin
nano /etc/apache2/sites-available/phpmyadmin-le-ssl.confi znów dodajemy tą linijkę najlepiej tam gdzie ja
Protocols h2 http/1.1
Po tym zapisujemy plik klikając Ctrl + X teraz Y i Enter I restartujemy Apache2
systemctl restart apache2Możecie mi zaufać że to działa już nie będę testował na tej stronie czy to działa, ale jeśli sami nie wierzycie to sprawdźcie żeby mieć pewność że wszystko jest dobrze zrobione.
Teraz jedziemy z oceną strony na SSLLabs.com, nasza strona ma słabą ocenę wiec co z tym zrobić? Jak to co jedziemy z configiem letsencrypta
nano /etc/letsencrypt/options-ssl-apache.confUsuwamy wszystko i wklejamy to
SSLEngine on
SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384
SSLHonorCipherOrder on
SSLCompression off
SSLSessionTickets off
SSLUseStapling on
SSLOptions +StrictRequire
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\"" vhost_combined
LogFormat "%v %h %l %u %t \"%r\" %>s %b" vhost_commonPo tym zapisujemy plik klikając Ctrl + X teraz Y i Enter I restartujemy Apache2
systemctl restart apache2No i musimy jeszcze dodać kilka linijek do naszych VirtualHostów więc jedziemy (najlepiej tak samo jak u mnie)
nano /etc/apache2/sites-available/000-default.confi dodajemy
Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains"
Redirect permanent / https://glupikocz.funWAŻNE! Pamiętajcie żeby zmienić nazwę mojej domeny glupikocz.fun na waszą
a za `` dodajemy
SSLStaplingCache shmcb:/tmp/stapling_cache(128000)
Po tym zapisujemy plik klikając Ctrl + X teraz Y i Enter I jedziemy z kolejnym plikiem teraz PHPMyAdmin
nano /etc/apache2/sites-available/phpmyadmin.conf
Po tym zapisujemy plik klikając Ctrl + X teraz Y i Enter No i jeszcze edytujemy VirtualHosty z SSL
nano /etc/apache2/sites-available/000-default-le-ssl.confi dodajemy
Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains"a za ale przed dodajemy
SSLStaplingCache shmcb:/tmp/stapling_cache(128000)
Po tym zapisujemy plik klikając Ctrl + X teraz Y i Enter No i jeszcze PHPMyAdmin z SSL
nano /etc/apache2/sites-available/phpmyadmin-le-ssl.conf
Po tym zapisujemy plik klikając Ctrl + X teraz Y i Enter
I restartujemy Apache2
systemctl restart apache2Na końcu warto jeszcze wykonać reboot maszyny
reboot
