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 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.
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 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.
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
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 tzdata
Po 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 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
- 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-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.
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
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 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
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 --apache
I 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-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
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.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 `` 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 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 apache2
Na końcu warto jeszcze wykonać reboot maszyny
reboot