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

Tagi: #<Tag:0x00007f8a37599110> #<Tag:0x00007f8a37599048> #<Tag:0x00007f8a37598f58> #<Tag:0x00007f8a37598e90> #<Tag:0x00007f8a37598dc8>

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

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

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

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

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

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

image

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

image

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

dpkg-reconfigure tzdata

Po czym wybieramy Europe i klikamy enter

image

Następnie szukamy Warsaw i klikamy enter

image

Po wszystkim zobaczymy taki wynik w konsoli

image

image

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

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:

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

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

<VirtualHost *:80>

    ServerName baza.glupikocz.fun
	ServerAdmin webmaster@localhost
    DocumentRoot /usr/share/phpmyadmin

    <Directory /usr/share/phpmyadmin>
        Options FollowSymLinks
        DirectoryIndex index.php

        <IfModule mod_php5.c>
            <IfModule mod_mime.c>
                AddType application/x-httpd-php .php
            </IfModule>
            <FilesMatch ".+\.php$">
                SetHandler application/x-httpd-php
            </FilesMatch>

            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/
        </IfModule>
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
    
</VirtualHost>

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

image

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 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 image i wybieramy CAA i ustawiamy Flag = 0, Tag = 0 i wklejamy

issue letsencrypt.org

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

issuewild "letsencrypt.org"

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

image

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,

<VirtualHost *:80>

    ServerName glupikocz.fun
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>

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

teraz wpisujemy A i klikamy Enter

image

teraz Y i Enter

image

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

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

image

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

image

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

Pumc! o i to też działa :stuck_out_tongue:

image

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

Yikes! Działa :smiley:

image

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

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

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

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

i 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 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 </VirtualHost> 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.conf

i dodajemy

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

a za </VirtualHost> ale przed </IfModule> dodajemy

SSLStaplingCache shmcb:/tmp/stapling_cache(128000)

image

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 apache2

Na końcu warto jeszcze wykonać reboot maszyny

reboot

GOTOWE!

2 polubienia

Czasem boli w oczy, ale ok.

-y czasem jest uśmierceniem wszystkiego.

-y czasem jest uśmierceniem wszystkiego.

i jeszcze raz…

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

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

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.
3 polubienia

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

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

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

Polecam :smiley:

1 polubienie

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

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ę

1 polubienie

W sekscji odnośnie PHPMyAdmin masz sam link :wink:

Poza tym jest świetnie :heart:

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

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

1 polubienie

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

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

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

1 polubienie

Szczerze nie mogłem znaleźć tej kategorii.

Oj ważne że działa :stuck_out_tongue:

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