[NOWY] Poradnik jak zainstalować Apache2, MariaDB, PHP7.4, PHPMyAdmin + SSL + HTTP/2 + Ocena A+ na SSLLabs

Poradniki społeczności
zarządzanie, www, php, ssl, apache2
Glupikocz
Glupikocz

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ć:

  1. Apache2 + MariaDB + PHPMyAdmin + PHP 7.4 + rozszerzenia + SSL + HTTP/2 + Jak dostać ocenę A+ strony na SSLLabs.com
  2. Pterodactyl Panel + jak włączyć na nim Teamspeak 3
  3. TS3AudioBoty z panelem
  4. Status naszych stron lub aplikacji w uptimerobot.com

Jest to pierwszy poradnik z całej serii a wiec zabierajmy się za robotę.

image|679x8

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 upgrade

Jeś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-https

Jeś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 ~/.bashrc

Następnie wpisujemy wklepujemy komendę

nano .bashrc 

Szukamy #force_color_prompt=yes i zmieniamy na force_color_prompt=yes czyli usuwamy # z przodu.

image|540x72

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

image|467x73

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 locales

Jeś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-8

Po wpisaniu tej komendy zobaczymy oto taki wynik.

image|339x67

Teraz wpisujemy komendę która jest poniżej

dpkg-reconfigure locales

Wyświetli nam się bardzo dużo języków ale szukamy języka Polskiego UTF-8 i zaznaczamy go spacją następnie klikamy enter

image|183x88

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

image|119x75

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

image|341x85

Po tym zmieniamy czas na naszym VPS używając tej komendy

dpkg-reconfigure tzdata

Po czym wybieramy Europe i klikamy enter

image|104x253

Następnie szukamy Warsaw i klikamy enter

image|133x82

Po wszystkim zobaczymy taki wynik w konsoli

image|395x124

image|679x8

INSTALACJA APACHE2, MARIADB, PHP7.4, PHPMYADMIN

Zacznijmy instalację od Apache2

apt install apache2

Jeśli będzie trzeba to klikamy Y i Enter

Następnie instalujemy MariaDB

apt install mariadb-server

Jeśli będzie trzeba to klikamy Y i Enter

Teraz konfigurujemy serwer MariaDB do tego użyjemy komendy:

mysql_secure_installation
  1. Klikemy Enter
  2. Klikamy Y i Enter
  3. Wpisujemy nasze hasło do MariaDB
  4. Potwierdzamy nasze hasło do MariaDB wpisując dokładnie to samo co w 3 kroku
  5. Klikamy Y i Enter
  6. Klikamy Y i Enter
  7. Klikamy N i Enter
  8. Klikamy Y i Enter

Po wszystkim zobaczymy taki wynik w konsoli

image|482x87

Teraz naprawiamy błąd z logowaniem się do root'a

mysqld --skip-grant-tables

Teraz otwieramy nową konsolę w putty i wklepujemy

mysql -u root -p
flush privileges;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'lvluppro';
echo "update mysql.user set plugin = 'mysql_native_password' where user='root';" | mysql -u root

Teraz wyłączamy pierwszą konsolę i restartujemy apache

servica mysql restart

Teraz możemy się zalogować do Mysql

mysql -u root -p

i wychodzimy z bazy danych

exit

i 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.zip

Następnie wypakowujemy PHPMyAdmin unzipem

unzip phpMyAdmin-5.0.4-all-languages.zip

Kolejno przenosimy PHPMyAdmin do /usr/share/ i zmieniamy nazwę na phpmyadmin

mv -v phpMyAdmin-5.0.4-all-languages /usr/share/phpmyadmin

Po tym edytujemy plik configu używając komend:

cd /usr/share/phpmyadmin
mv -v config.sample.inc.php /usr/share/phpmyadmin/config.inc.php
nano config.sample.inc.php

I 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.

image|519x186

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 tmp

Teraz usuwamy pliki do phpmyadmin które pobraliśmy i tworzymy subdomenę dla naszej bazy danych

cd ~
rm -r phpMyAdmin-5.0.4-all-languages.zip
nano /etc/apache2/sites-available/phpmyadmin.conf

i 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 phpmyadmin

I restartujemy apache2

systemctl restart apache2

Teraz 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.list
apt update
apt 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-zip

Jeśli będzie trzeba to klikamy Y i Enter

Po wszystkim sprawdzamy czy mamy PHP 7.4

php -v

image|471x99

image|679x8

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 image|161x64 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 image|509x500

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

Dodamy jeszcze od razu jak jesteśmy w panelu DNS CAA Wiec wchodzimy znów w image|161x64 i wybieramy CAA i ustawiamy Flag = 0, Tag = 0 i wklejamy

issue letsencrypt.org

image|523x500

Po tym znów dodajemy nowy rekord CAA wiec klikamy image|161x64 i znów wybieramy CAA i ustawiamy Flag = 0, Tag = 0 i wklejamy

issuewild "letsencrypt.org"

image|529x500

No i już ostatni rekord CAA wiec klikamy image|161x64 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

image|540x500

Gotowe!

image|690x272

image|679x8

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 certbot

Gitarka 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.conf

Usuwamy 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 restart

No i już lecimy z zabezpieczeniem strony Certbotem

certbot --apache

Teraz Certbot poprosi nas żebyśmy podali email na który będą przychodzić maile w moim wypadku jest to kontakt@glupikocz.fun

image|470x42

teraz wpisujemy A i klikamy Enter

image|562x36

teraz Y i Enter

image|564x40

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

image|567x123

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

image|565x390

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

image|311x293

No to co jedziemy z zabezpieczeniem subdomeny baza.glupikocz.fun, a więc wklepujemy

certbot --apache

I wybieramy tym razem 2 czyli baza.glupikocz.fun i klikamy Enter

image|565x127

Pumc! o i to też działa 😛

image|563x323

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

image|690x342

Yikes! Działa :D

image|679x8

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-fpm
a2dismod php7.4
a2enconf php7.4-fpm
a2enmod proxy_fcgi
a2dismod mpm_prefork
a2enmod mpm_event
a2enmod ssl
a2enmod http2
a2enmod headers
systemctl restart apache2

Teraz 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.conf

dodajemy najlepiej w tym samym miejscu gdzie ja linijkę

Protocols h2 http/1.1

image|500x292

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

image|690x351

Jak widać HTTP/2 działa Teraz robimy to samo dla PHPMyAdmin

nano /etc/apache2/sites-available/phpmyadmin-le-ssl.conf

i znów dodajemy tą linijkę najlepiej tam gdzie ja

Protocols h2 http/1.1

image|396x500

Po tym zapisujemy plik klikając Ctrl + X teraz Y i Enter I restartujemy Apache2

systemctl restart apache2

Moż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.conf

Usuwamy 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_common

Po tym zapisujemy plik klikając Ctrl + X teraz Y i Enter I restartujemy Apache2

systemctl restart apache2

No 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.conf

i dodajemy

Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains"
Redirect permanent / https://glupikocz.fun

WAŻNE! Pamiętajcie żeby zmienić nazwę mojej domeny glupikocz.fun na waszą

a za `` dodajemy

SSLStaplingCache shmcb:/tmp/stapling_cache(128000)

image|690x297

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

image|460x500

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.conf

i dodajemy

Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains"

a za ale przed dodajemy

SSLStaplingCache shmcb:/tmp/stapling_cache(128000)

image|608x402

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

image|404x500 Po tym zapisujemy plik klikając Ctrl + X teraz Y i Enter I restartujemy Apache2

systemctl restart apache2

Na końcu warto jeszcze wykonać reboot maszyny

reboot

GOTOWE!

DBanaszewski
DBanaszewski α-tester v3

Glupikocz:

Teraz zmieniamy język VPS na Polski

Czasem boli w oczy, ale ok.

Glupikocz:

apt install apache2 -y -y czasem jest uśmierceniem wszystkiego.

Glupikocz:

apt install mariadb-server -y -y czasem jest uśmierceniem wszystkiego.

i jeszcze raz...

Glupikocz:

apt-get install locales -y -y czasem jest uśmierceniem wszystkiego. Zezwalamy na instalację oprogramowania bez patrzenia, co będzie zainstalowane.

Glupikocz:

wget https://packages.sury.org/php/apt.gpg

Glupikocz:

sudo apt-key add apt.gpg

Wystarczy jedno polecenie: wget -O - https://packages.sury.org/php/apt.gpg | apt-key add -

Glupikocz:

apt install -y snapd

snap install core; sudo snap refresh core

snap install --classic certbot

ln -s /snap/bin/certbot /usr/bin/certbot

To aż w oczy boli, a wystarczy `apt install certbot`.

---

Poradnik fajen, dla początkującego ok.

###### ~~Pomijam wątki takie jak za krótki HSTS (RFC draft), nagłówek HSTS powinien pojawiać się wcześniej, serwer nie daje klientowi możliwości wyboru szyfrów/cipherów, za dużo wspieranych krzywych eliptycznych, brak wsparcia OCSP, klucz DH mógłby być większy.~~
Glupikocz
Glupikocz

Dodałem -y tylko po to żeby nie tłumaczyć ze po wszystkim ludzie muszą Y i Enter klikać a niczego to nie uśmierci jestem przekonany bo to czysta maszyna :P

Co do apt install certbot nie zawsze to dobrze działa sami nie zalecają tak tego instalować tylko snapem

DBanaszewski:

Poradnik fajen, dla początkującego ok.

Właśnie po to, to robię bo właśnie tacy ludzie mają problemy Jeśli @DBanaszewski widzisz coś co można poprawić pisz PV to podmienię to w poradniku Pozmieniałem już w poradniku co zaleciłeś jeśli widzicie jeszcze jakieś błędy piszcie

lolek90
lolek90

Polecam 😃

BrixNW
BrixNW

No poradnik fajny, mam nadzieję, że nikt nie będzie miał już problemów. Przydałby się jeszcze na nginx, imo tam są większe problemy z instalacją.

Glupikocz
Glupikocz

Może jak wrzucę wszystkie poradniki co mam zaplanowane to postaram się okiełznać Ngnix'a i stworzę też taki poradnik. Tam można już chyba aktywować HTTP/3 o ile się nie mylę

Zaaxel
Zaaxel

Glupikocz:

https://files.phpmyadmin.net/phpMyAdmin/5.0.4/phpMyAdmin-5.0.4-all-languages.zip

W sekscji odnośnie PHPMyAdmin masz sam link ;)

Poza tym jest świetnie ❤️

PS. Masz pomysł co do tego? Niby instalowany moduł był

The mbstring extension is missing. Please check your PHP configuration.

Glupikocz
Glupikocz

Zaaxel:

W sekscji odnośnie PHPMyAdmin masz sam link 😉

Dziękuję faktycznie mój błąd poradnik był pisany całą noc i mogłem się pomylic, :D szczególnie że był długi

Zaaxel:

The mbstring extension is missing. Please check your PHP configuration.

sudo apt-get install php7.4-mbstring
sudo apt-get install php7.4-mysql

I sprawdź czy na pewno masz włączone PHP 7.4

php -v

Jak nie ustaw żeby PHP 7.4 było głownym PHP

update-alternatives --set php /usr/bin/php7.4
Axerr
Axerr

Dlaczego to jest w kategorii Pytania i problemy, a nie w kategorii Poradniki społeczności? Co do instalacji SSL to oczu kąpiel

Glupikocz
Glupikocz

Axerr:

Dlaczego to jest w kategorii Pytania i problemy, a nie w kategorii Poradniki społeczności?

Szczerze nie mogłem znaleźć tej kategorii.

Axerr:

Co do instalacji SSL to oczu kąpiel Oj ważne że działa 😛

system
system

Ten temat został automatycznie zamknięty 32 dni po ostatnim wpisie. Tworzenie nowych odpowiedzi nie jest już możliwe.