Instalacja apache2, PHP, MariaDB (MySQL), phpMyAdmin oraz SSL na Ubuntu i Debianie

Poradniki
zarządzanie, www, poradnik-miesiąca, apache2, mariadb
KMatuszak
KMatuszak Weteran

Witam, w tym poradniku opiszę jak zainstalować apache2, PHP, MariaDB (MySQL) i phpMyAdmin oraz jak skonfigurować wiele stron na jednym serwerze (wirtualne hosty) i zainstalować dla nich darmowy certyfikat SSL od Let's Encrypt 😄

Wiem że na forum znajduje się już kilka takich poradników, jednak nie są one zbyt świeże i nie ma takiego, gdzie wszystko jest w jednym miejscu, więc postanowiłem napisać własny :slight_smile:

Całość została dokładnie przetestowana i jest kompatybilna z następującymi systemami:

  • Ubuntu 22.04
  • Ubuntu 20.04
  • Ubuntu 18.04
  • Debian 11
  • Debian 10
  • Debian 9

Zalecam instalację na czystym systemie, gdzie wcześniej nie był instalowany serwer www.

Aktualizacja repozytoriów:

apt update

Uwaga! W przypadku pracy na koncie użytkownika innym niż root, należy przed komendą dopisać sudo.

Aktualizacja pakietów:

apt upgrade

Uwaga! W przypadku pracy na koncie użytkownika innym niż root, należy przed komendą dopisać sudo.

Instalacja pakietów pomocniczych:

# dla Ubuntu: (jedna komenda)
apt install zip sudo nano wget software-properties-common
 
# dla Debiana: (jedna komenda)
apt install zip sudo nano wget lsb-release apt-transport-https ca-certificates

Uwaga! W przypadku pracy na koncie użytkownika innym niż root, należy przed komendą dopisać sudo. To była ostania komenda różniąca się w zależności od użytkownika, kolejne można wykonywać zawsze z przedrostkiem sudo.

Dodawanie repozytoriów PHP

# dla Ubuntu: (jedna komenda)
LC_ALL=C.UTF-8 sudo add-apt-repository ppa:ondrej/php
 
# dla Debiana: (dwie komendy)
sudo wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/php.list

Ponowna aktualizacja repozytoriów:

sudo apt update

Instalacja apache2 i PHP wraz z podstawowymi rozszerzeniami

Jeżeli potrzebujesz innej wersji php, możesz ją podmienić w każdej komendzie 😉

sudo apt install apache2 php8.0 libapache2-mod-php8.0 php8.0-mysql php8.0-mbstring php8.0-curl

Jeżeli potrzebujesz dodatkowe rozszerzenia, możesz zainstalować je teraz używając komendy sudo apt install php8.0-nazwa_rozszerzenia

Przeładowanie serwera apache2

sudo systemctl restart apache2

Instalacja serwera WWW wraz z obsługą PHP została zakończona, kolejne kroki możesz wykonać opcjonalnie jeżeli potrzebujesz na przykład bazy danych MySQL.

Instalacja serwera bazy danych MariaDB (MySQL)

MariaDB to nowsza wersja MySQL, która posiada wyższą wydajność i więcej funkcji zachowując przy tym pełną kompatybilność.

sudo apt install mariadb-server mariadb-client

Konfiguracja bazy danych MariaDB

Najpierw uruchomimy skrypt, który zabezpieczy bazę danych (zmieni kilka domyślnych opcji na bardziej bezpieczne)

sudo mysql_secure_installation

Zostaniesz zapytany o obecne hasło do konta root bazy danych - domyślnie jest ono puste więc wystarczy wcisnąć tutaj enter. image|636x199, 75% Następnie zostaniesz zapytany, czy chcesz ustawić hasło dla konta root. Zalecam wyrazić zgodę i ustawić hasło. image|645x163, 75% W kolenym kroku zostaniesz zapytany czy usunąć anonimowych użytkowników, zalecam zrobić to. image|690x125, 75% Kolejny krok to pytanie o zablokowanie logowania zdalnego do bazy danych, zalecam zgodzić się na to nawet, jeżeli chcesz z niego korzystać, wróćę do tego w dalszej części poradnika. image|690x81, 75% Przedostatni krok to pytanie o usunięcie testowej bazy danych, zalecam zgodzić się na to. image|660x97, 75% Ostatni już krok to pytanie o przeładowanie uprawnień. Oczywiście należy zgodzić się. image|661x233, 75%

Tworzenie nowego użytkownika bazy danych

Korzystanie z konta root nie jest zbyt dobrym pomysłem, a niektóre aplikacje, np. phpMyAdmin nie pozwalają nawet na korzystanie z niego. Warto utworzyć więc dodatkowego użytkownika.

Uruchom klienta MySQL wykonując poniższe polecenie:

sudo mysql

Twoim oczom powninien ukazać się taki oto ekran: image|690x179, 75% (dzięki użyciu sudo nie musimy podawać żadnego hasła, po prostu zostajemy wpuszczeni od razu i mamy dostęp do wszystkiego :nosacz:)

Teraz wykonujemy poniższe polecenia, podmieniając w nich nazwę użytkownika, hasło i adres IP

# jeżeli chcemy aby z użytkownika można było korzystać tylko lokalnie
CREATE USER 'nazwa_użytkownika'@'localhost' IDENTIFIED BY 'hasło';
GRANT ALL PRIVILEGES ON * . * TO 'nazwa_użytkownika'@'localhost';
FLUSH PRIVILEGES;
 
# jeżeli chcemy aby z użytkownika można było korzystać lokalnie oraz zdalnie z każdego adresu IP
CREATE USER 'nazwa_użytkownika'@'%' IDENTIFIED BY 'hasło';
GRANT ALL PRIVILEGES ON * . * TO 'nazwa_użytkownika'@'%';
FLUSH PRIVILEGES;
 
# jeżeli chcemy aby z użytkownika można było korzystać lokalnie oraz zdalnie tylko z wybranego adresu IP
CREATE USER 'nazwa_użytkownika'@'123.123.123.123' IDENTIFIED BY 'hasło';
GRANT ALL PRIVILEGES ON * . * TO 'nazwa_użytkownika'@'123.123.123.123';
FLUSH PRIVILEGES;

... i wychodzimy z klienta bazy danych poleceniem quit 😉 image|688x234, 75%

Zezwalanie na zdalny dostęp do bazy danych (opcjonalnie)

Edytujemy plik przy pomocy edytora nano:

sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf

Wstawiamy znak # przed linijką zaczynającą się od bind-address: image|690x461, 75% Zapisujemy plik i wychodzimy z edytora nano wciskając kolejno Ctrl O, Enter, Ctrl X. Następnie uruchamiamy ponownie serwer MariaDB:

sudo systemctl restart mariadb

Wirtualne hosty (kilka stron na jednym serwerze, opcjonalnie)

Edytuj plik przy pomocy edytora nano:

sudo nano /etc/apache2/sites-available/000-default.conf

Następnie usuń całą jego zawartość i wklej tam poniższy tekst o jeden raz więcej (będzie to konfiguracja używana w przypadku gdy adres przez który użytkownik próbuje wejść na stronę nie będzie pasował do żadnej ze zdefiniowanych stron) niż ilość stron którą chcesz mieć wpisując uprzednio twój adres e-mail w odpowiednie miejsce.


ServerAdmin twoj@adres.email
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined

Teraz w każdym takim wklejonym bloku z wyjątkiem tego jednego dodatkowego pierwszego (koniecznie pierwszego!) dodaj linijkę ServerName nad linijką ServerAdmin i wpisz tam domenę lub subdomenę z domeną pod którą dostępna ma być strona. Możesz dodać też więcej takich adresów do jednej strony poprzez linijki ServerAlias. Zmień też DocumentRoot /var/www/html na np. DocumentRoot /var/www/mojadomena.pl, i stwórz taki katalog przy pomocy komendy sudo mkdir /var/www/mojadomena.pl (ważne aby utworzyć ten podfolder w katalogu /var/www, w innym przypadku będą występowały problemy z uprawnieniami).

Przykładowa prawidłowa konfiguracja może wyglądać w taki sposób:


ServerAdmin twoj@adres.email
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined



ServerName pma.mojadomena.pl
ServerAdmin twoj@adres.email
DocumentRoot /var/www/pma.mojadomena.pl
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined

Po wejściu na stronę pma.mojadomena.pl zostanie wyświetlona strona z katalogu /var/www/pma.mojadomena.pl, w przypadku użycia innego adresu zostanie wyświetlona strona z katalogu /var/www/html 🙂

Zapisujemy plik i wychodzimy z edytora nano wciskając kolejno Ctrl O, Enter, Ctrl X. Następnie uruchamiamy ponownie serwer apache2:

sudo systemctl restart apache2

Zezwalanie na pliki .htaccess (opcjonalnie)

Edytuj plik przy pomocy edytora nano:

sudo nano /etc/apache2/apache2.conf

Przy pomocy kombinacji klawiszy Ctrl W wyszukaj w pliku tekst AllowOverride None i zmień None na All w bloku gdzie jest ``. image|690x451, 75%

Zapisujemy plik i wychodzimy z edytora nano wciskając kolejno Ctrl O, Enter, Ctrl X. Następnie uruchamiamy ponownie serwer apache2:

sudo systemctl restart apache2

Wyłączanie listowania plików i katalogów (opcjonalnie)

Edytuj plik przy pomocy edytora nano:

sudo nano /etc/apache2/apache2.conf

Przy pomocy kombinacji klawiszy Ctrl W wyszukaj w pliku tekst Options Indexes i usuń Indexes w bloku gdzie jest ``. image|690x451, 75%

Zapisujemy plik i wychodzimy z edytora nano wciskając kolejno Ctrl O, Enter, Ctrl X. Następnie uruchamiamy ponownie serwer apache2:

sudo systemctl restart apache2

Instalacja i konfiguracja phpMyAdmin (opcjonalnie)

Przejdź do katalogu z plikami strony w której chcesz zainstalować phpMyAdmin, ja użyję do tego utworzonego wcześniej wirtualnego hosta.

cd /var/www/pma.mojadomena.pl

Pobierz najnowszą wersję phpMyAdmin

sudo wget https://www.phpmyadmin.net/downloads/phpMyAdmin-latest-all-languages.zip

Rozpakuj pobrane pliki

sudo unzip phpMyAdmin-latest-all-languages.zip

Usuń zbędne już pobrane wcześniej archiwum

sudo rm phpMyAdmin-latest-all-languages.zip

Zmień nazwę wypakowanego folderu dla łatwiejszego dostępu

sudo mv phpMyAdmin-* phpMyAdmin

Przejdź do wypakowanego katalogu

cd phpMyAdmin

Skopiuj przykładowy plik konfiguracyjny

sudo cp config.sample.inc.php config.inc.php

Edytuj skopiowany plik konfiguracyjny przy pomocy edytora nano

sudo nano config.inc.php

Wpisz losowe 32 znaki w miejscu pokazanym poniżej image|690x451, 75% Do wygenerowania takiego ciągu znaków możesz użyc na przykład tego generatora haseł: https://generator.blulink.pl/ Zapisujemy plik i wychodzimy z edytora nano wciskając kolejno Ctrl O, Enter, Ctrl X.

Teraz utwórz katalog dla plików tymczasowych phpMyAdmina i nadaj mu odpowiednie uprawnienia:

sudo mkdir tmp
sudo chmod 777 tmp

phpMyAdmin powinien już działać i powinieneś mieć możliwość zalogowania się. Jeżeli nie działa, upewnij się że wielkość liter w adresie jest prawidłowa, ma to bardzo duże znaczenie! Po zalogowaniu na dole strony zobaczysz taki komunikat: image|690x58, 75% Kliknij w link tutaj który się tam znajduje, a następnie utwórz: image|690x85, 75% Powinna zostać utworzona baza danych dla phpMyAdmina i powinieneś zobaczyć taki oto ekran: image|690x411, 75% Instalacja oraz konfiguracja phpMyAdmin została ukończona :slight_smile:

Instalacja darmowego certyfikatu SSL od Let's Encrypt (opcjonalnie, zalecane)

Obecnie połączenie ze stroną nie jest bezpieczne, warto więc zainstalować SSL. image|107x46

Ten krok wymaga przeprowadzenia konfiguracji związanej z wirtualnymi hostami.

Dodawanie repozytoriów

# dla Ubuntu: (jedna komenda)
sudo add-apt-repository ppa:certbot/certbot
 
# dla Debiana: (jedna komenda)
echo "deb http://ftp.debian.org/debian $(lsb_release -sc)-backports main" | sudo tee -a /etc/apt/sources.list.d/sources.list

Uwaga! Jeżeli twój system to Ubuntu 20.04, wykonaj dodatkowo tą komendę:

sudo sed -i 's/focal/bionic/g' /etc/apt/sources.list.d/certbot-ubuntu-certbot-focal.list

Aktualizacja repozytoriów:

sudo apt update

Instalacja pakietu

# dla Ubuntu: (jedna komenda)
sudo apt install python-certbot-apache
 
# dla Debiana: (jedna komenda)
sudo apt install python-certbot-apache -t $(lsb_release -sc)-backports

Generowanie certyfikatu Możesz podać tutaj dowolną ilość domen oraz subdomen, ważne jest jedynie aby przed każdą podać -d oraz aby każda była w pliku z wirtualnymi hostami, bez znaczenia czy w ServerName czy w ServerAlias, po prostu gdzieś musi być 😄

sudo certbot --apache -d mojadomena.pl -d www.mojadomena.pl -d pma.mojadomena.pl

Zostaniesz zapytany o adres e-mail do powiadomień o odnowieniu certyfikatu, wpisz go i wciśnij enter aby przejść dalej. image|690x50, 75% Następnie musisz zaakceptować warunki, wpisz A i wciśnij enter aby przejść dalej. image|690x50, 75% Kolejny krok to pytanie o otrzymywanie informacji dotyczących bezpieczeństwa na podany wcześniej adres e-mail, wybierz według uznania i wciśnij enter aby przejść dalej. image|690x119, 75% Ostatni krok to pytanie czy zapytania http mają być automatycznie przekierowywane na https, wybierz według uznania i wciśnij enter. image|690x130, 75%

Certyfikat został pomyślnie zainstalowany, każda z podanych domen/subdomen powinna być już zabezpieczona 🙂 image|168x45

Dzięki za przeczytanie do końca, w razie problemów lub pytań pisz poniżej, a postaram się pomóc 😄

|84x126Poradnik miesiąca: lipiec 2020

Keendi
Keendi

Super, poradnik niestety mam problem przy ostatniej praktycznie rzeczy... Po instalacji phpmyadmin, gdy wchodzę w przez MOJEIP/phpmyadmin - to pokazuje mi że taka strona nie istnieje 😦

Zainstalowałem to w folderze html, nie wiem czy zrobiłem dobrze... Nie chce miec phpmyadmin na domenie ale chce miec zainstalowane zeby moc korzystac z tego panelu, i baz danych. Czy jednak musze miec domene podpieta?

KMatuszak
KMatuszak Weteran

Nie potrzebujesz domeny. Czy na pewno wpisujesz prawidłowe wielkości znaków? W poradniku jest phpMyAdmin, a ty napisałeś phpmyadmin :thinking:

Keendi
Keendi

KMatuszak:

phpMyAdmin

O kurcze, nie wiedziałem że ilość znaków ma znaczenie. Dzięki Panie nosaczu, ale mam jeszcze pytanie bo chyba zrobiłem sobie znowu burdel w plikach jak odinstalować phpmyadmin? Bo tamten recznie usunalem i zainstalowalem w innym katalogu znowu, nie zrobilem czegos źle?

KMatuszak
KMatuszak Weteran

Keendi:

jak odinstalować phpmyadmin?

wystarczy usunąć katalog z nim, można zrobić to przez jakiegoś klienta sftp, lub wykonując polecenie

rm -rf phpmyadmin

Keendi:

nie zrobilem czegos źle? jeżeli użyłeś jednego z powyższych sposobów to zrobiłeś wszystko jak najbardziej prawidłowo 😉

Keendi
Keendi

Panie nosaczu a czy jak podpialbym domene kiedys, i zrobilbym ten SSL, i wczesniej .htaccess to wszystko bedzie mi dzialac tak samo prawidlowo jak na gotowym hostingu?

KMatuszak
KMatuszak Weteran

tak 🙂

Keendi
Keendi

KMatuszak:

phpMyAdmin

Super! Udało mi się to zrobić, natomiast taki błąd się pojawił, uprawnień brakuje jakiś, nie wiem czy to uprawnienia konta, czy jak?image|690x92

KMatuszak
KMatuszak Weteran

KMatuszak:

Teraz wykonujemy poniższe polecenia, podmieniając w nich nazwę użytkownika, hasło i adres IP

# jeżeli chcemy aby z użytkownika można było korzystać tylko lokalnie
CREATE USER 'nazwa_użytkownika'@'localhost' IDENTIFIED BY 'hasło';
GRANT ALL PRIVILEGES ON * . * TO 'nazwa_użytkownika'@'localhost';
FLUSH PRIVILEGES;

# jeżeli chcemy aby z użytkownika można było korzystać lokalnie oraz zdalnie z każdego adresu IP
CREATE USER 'nazwa_użytkownika'@'%' IDENTIFIED BY 'hasło';
GRANT ALL PRIVILEGES ON * . * TO 'nazwa_użytkownika'@'%';
FLUSH PRIVILEGES;

# jeżeli chcemy aby z użytkownika można było korzystać lokalnie oraz zdalnie tylko z wybranego adresu IP
CREATE USER 'nazwa_użytkownika'@'123.123.123.123' IDENTIFIED BY 'hasło';
GRANT ALL PRIVILEGES ON * . * TO 'nazwa_użytkownika'@'123.123.123.123';
FLUSH PRIVILEGES;

czy na pewno nie pominąłeś żadnej z tych komend?

Keendi
Keendi

Nie, wpisywałem je osobno linijka po linijce, dobrze? A jak coś źle zrobiłem to musze usunąć swój nick i jeszcze raz zrobić? Jak to sie usuwa?

KMatuszak
KMatuszak Weteran

spróbuj jeszcze raz wykonać komendę zaczynającą się od GRANT pamiętając o podmianie nazwy użytkownika i przeładuj uprawnienia komendą FLUSH PRIVILEGES;

Keendi
Keendi

KMatuszak:

FLUSH PRIVILEGES;

Zrobiłem i nie działa 😕

CREATE USER 'Keendi'@'%' IDENTIFIED BY 'UKRYŁEM_HASŁO';
GRANT ALL PRIVILEGES ON * . * TO 'Keendi'@'%';
FLUSH PRIVILEGES;

Może muszę usunąć konto moje i dodac jeszcze raz??

KrEdEnS
KrEdEnS Moderator Freebies

wykonaj komendę GRANT ALL PRIVILEGES ON *.* TO 'Keendi'@'%' WITH GRANT OPTION; FLUSH PRIVILEGES;

Keendi
Keendi

KrEdEnS:

GRANT ALL PRIVILEGES ON *.* TO 'Keendi'@'%' WITH GRANT OPTION; FLUSH PRIVILEGES;

Nadal nie mam uprawnień 😦 Moze naprawdę trzeba usunąć moje konto i dodać ponownie? Tylko zielonego pojęcia nie mam jak to zrobić

KrEdEnS
KrEdEnS Moderator Freebies

Spróbuj utworzyć bazę obraz|416x179

Keendi
Keendi

Klikam w to, i nic się nie dzieje 😦, innych czystych baz danych też nie mogę tworzyć

EDIT: Może podaj mi komendę na usunięcie mnie z mariaDB, może dzięki temu stworzę jeszcze raz konto i zadziała?

KMatuszak
KMatuszak Weteran

spróbuj utworzyć użytkownika bez dużych liter w jego nazwie, lub zaloguj się do PMA bez użycia dużych liter.

KrEdEnS
KrEdEnS Moderator Freebies

KMatuszak:

jeżeli chcemy aby z użytkownika można było korzystać tylko lokalnie

CREATE USER 'nazwa_użytkownika'@'localhost' IDENTIFIED BY 'hasło'; GRANT ALL PRIVILEGES ON * . * TO 'nazwa_użytkownika'@'localhost'; FLUSH PRIVILEGES;

Utwórz użytkownika lokalnego  

Wywal tego starego

DROP USER 'Keendi'@'%';

Keendi
Keendi

KrEdEnS:

DROP USER 'Keendi@'%';

Teraz to już na pewno coś zepsułem są 2 te same Nicki 😦 Komenda na usuwanie nie działa mi albo ją źle wpisuję.. 😕

image|690x321

Keendi
Keendi

Dobra jakimś cudem usunąłem te 2 konta, ale była na to inna trochę komenda.

Nie mam jednej bazy tutaj stworzonej, mimo to wszystko jest już dobrze?image|538x129

KMatuszak
KMatuszak Weteran

@KrEdEnS zrobił mały błąd, powinno być

 DROP USER 'Keendi'@'%';

Keendi:

Nie mam jednej bazy tutaj stworzonej, mimo to wszystko jest już dobrze? utwórz tą dla phpMyAdmina 😉

Keendi
Keendi

Dzięki wielkie już wszystko śmiga :D

KrEdEnS
KrEdEnS Moderator Freebies

+1 dzięki za poprawkę :)

Keendi
Keendi

Mam jeszcze pytanie odnośnie tego poradnika. Zrobiłem " Wirtualne hosty (kilka stron na jednym serwerze, opcjonalnie)" według poradnika, i mimo to jak zwykle u mnie nie działa to 😅

ServerAdmin twoj@adres.email
DocumentRoot /var/www/keendi.pl
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined



ServerName mysql.keendi.pl
ServerAdmin twoj@adres.email
DocumentRoot /var/www/mysql.keendi.pl
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined

Co tym razem jest nie tak? Na cloudflare domena mysql.keendi.pl jest już przekierowana na mojego vps

image|690x21

KMatuszak
KMatuszak Weteran

co konkretnie nie działa? podaj więcej szczegółów 😉

czy oba te katalogi istnieją? pokaż ich zawartość.

KrEdEnS
KrEdEnS Moderator Freebies

Wykonałeś komendę?

sudo systemctl restart apache2
Keendi
Keendi

KrEdEnS:

sudo systemctl restart apache2

tak, nawet upewniłem się i reboot zrobiłem

image|524x130

image|514x115 (dla testu index.html wrzuciłem)

image|517x101

Keendi
Keendi

Panie Januszu zadziałało, chyba cloudflare tak długo aktualizował ALE mam pytanie, czy nie da się usunąć tego mysql.keendi.pl/phpMyAdmin ? mogę przenieść pliki z folderu i wrzucić bezpośrednio do tego folderu pod domeną?

EDIT: Chodzi mi o to, czy nic sie nie zbuguje? Czy nie zrobię jakiegoś syfu w plikach przez to. Wolę się upewnić ;)

KrEdEnS
KrEdEnS Moderator Freebies
  1. Nie pisz double postów
  2. Tak możesz przenieść zawartość katalogu phpMyAdmin do mysql.keendi.pl (wywal tylko index.html) oczywiście potem usuń katalog phpMyAdmin @Keendi

EDIT. Utwórz plik .htaccess i wrzuć go do katalogu z plikami stroki: Przekierowanie na ssla

RewriteEngine On RewriteCond %{HTTPS} !=on RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Keendi
Keendi

Ok :D Jeszcze pytanie odnośnie certyfikatu, z tego co tu pisze to rozumiem że na tamtych zadziałało, ale na samej domenie keendi.pl już nie? Jak to naprawić?

image|690x407

KrEdEnS
KrEdEnS Moderator Freebies

Generowałeś pewnie certyfikat będąc pod tzw "chmurką" - to się nie może udać :kappa:

KMatuszak
KMatuszak Weteran

KrEdEnS:

EDIT. Utwórz plik .htaccess i wrzuć go do katalogu z plikami stroki: Przekierowanie na ssla

RewriteEngine On RewriteCond %{HTTPS} !=on RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

nie rozumiem po co to, przecież przy instalacji certyfikatu jest pytanie czy ma automatycznie przekierować :thinking:

dodatkowo można włączyć automatyczne przekierowanie na cloudflare, i warto tutaj zaznaczyć żeby wybrać albo jedno albo drugie, w przeciwnym przypadku zrobi się pętla i strona nie będzie działać.

KrEdEnS
KrEdEnS Moderator Freebies

Patrzyłem na jego stronkę i ani na cfie ani przy generowaniu certyfikatu nie włączył tej opcji.

EDIT. Ale tak zgadzam, się lepiej jest włączyć to na cfie / ewentualnie używać ssla od cfa

Keendi
Keendi

Czyli muszę stworzyć .htaccess z tym co napisał Kredens i bedzie git?

KrEdEnS
KrEdEnS Moderator Freebies

.htaccess który Ci wysłałem przekieruje tylko ruch z http na https

Keendi
Keendi

A ok czyli co jeszcze muszę zrobić, pisaliście coś o cloudflare ale nie wiem gdzie dokładnie co mam zrobić 😕

KrEdEnS
KrEdEnS Moderator Freebies

Wyłącz chmurkę i wygeneruj ssla :thinksmart:

Keendi
Keendi

Wyłączyłem w cloudflare to, wpisałem ponownie tą komendę z generowaniem ssl i nadal to samo 😕 Potem wpisałem na te 2 inne domeny, wykluczając keendi.pl i zadziałało ale teraz te obie domeny panel.keendi.pl oraz mysql.keendi.pl nie działają 😅 Zbyt wiele przekierowań, coś jeszcze muszę wyłączyć?

Teraz pojawia mi się coś takiego, tego już nie wiem jak mam rozwiązać:

image|690x407

Oraz tutaj którą mam opcję wybrać, bo totalnie nie wiem 😕 image|690x309

KrEdEnS
KrEdEnS Moderator Freebies

obraz|600x20 Musisz dodać servername dla swojej domeny w configu apache

Jakubeq
Jakubeq

Witam, zainstalowałem phpMyAdmin w ścieżce /var/www/html/phpMyAdmin/ i uzyskuje taki efekt nie mam panelu w ogóle 😛 aha|690x282

KrEdEnS
KrEdEnS Moderator Freebies

jakiego masz php? EDIT. A ok pewnie 7.4 | Dla pewności wpisz php -ver

KMatuszak
KMatuszak Weteran

zainstalowałeś php? restartowałeś serwer apache?

Jakubeq
Jakubeq

O kurczę nie spodziewałem się tak szybkiej odpowiedzi więc sam zacząłem coś działać

moja wersja PHP:

PHP 7.4.9 (cli) (built: Aug 7 2020 14:55:48) ( NTS )

Na githubie znalazłem mój problem i wykonałem następujące czynności:

sudo apt-get purge php* sudo apt-get install libapache2-mod-php7.4

i teraz panel zaczął się odzywać phpmyadmin|690x43

resetowałem apache

KrEdEnS
KrEdEnS Moderator Freebies

wywaliłeś wszystkie rozszerzenia php także, musisz je teraz ponownie zainstalować

sudo apt install php7.4 libapache2-mod-php7.4 php7.4-mysql php7.4-mbstring php7.4-curl
sudo systemctl restart apache2
Jakubeq
Jakubeq

Dobra poszło, wielkie dzięki. Dziwne że za pierwszym razem nie zadziałało :roll_eyes:

KrEdEnS
KrEdEnS Moderator Freebies

Widocznie kliknąłeś N przy instalacji - bywa ;)

Keendi
Keendi

Witam panie @KMatuszak , mam następujący problem. Domena mysql.keendi.pl i keendi.pl przekierowują do tego samego miejsca mimo że wszystko jest zrobione jak na poradniku, nie wiem co się stało totalnie 😕

@KrEdEnS a może ty będziesz wiedział? EDIT: Let's Encrypt dodał te linijki

ServerAdmin keendiyt@gmail.com
DocumentRoot /var/www/keendi.pl
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
RewriteEngine on
RewriteCond %{SERVER_NAME} =keendi.pl
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]



ServerName mysql.keendi.pl
ServerAdmin keendiyt@gmail.com
DocumentRoot /var/www/mysql.keendi.pl/phpMyAdmin
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
RewriteEngine on
RewriteCond %{SERVER_NAME} =mysql.keendi.pl [OR]
RewriteCond %{SERVER_NAME} =mysql.keendi.pl
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
KrEdEnS
KrEdEnS Moderator Freebies

Prywatnie polecam zrobić vhosty w osobnych plikach. dzięki temu unika się takich sytuacji ( ͡° ͜ʖ ͡°) No dobra, ale jak już mamy tak to zostawiamy tak. Dodał bym do pierwszego vhosta

ServerName domena.pl
anon51326702
anon51326702

Forbidden

You don't have permission to access this resource.

Co mogę zrobić?

KMatuszak
KMatuszak Weteran

pod jakim url widzisz ten komunikat?

anon51326702
anon51326702

//http://adresvps.pl/phpmyadmin/ (bez sleshy na początku)

KMatuszak
KMatuszak Weteran

pokaż zawartość folderu z plikami strony

anon51326702
anon51326702

Przepraszam błąd tym razem po mojej stronie zamiast wpisywać:

phpMyAdmin

Wpisywałem:

phpmyadmin

Aktualnie jest tylko problem gdyż wyświetla się kod "php"

KMatuszak
KMatuszak Weteran

anon51326702:

Aktualnie jest tylko problem gdyż wyświetla się kod “php”

zainstalowałeś php? uruchamiałeś ponownie serwer apache2?

podaj wynik polecenia

php -v

oraz uruchom ponownie serwer apache

sudo systemctl restart apache2
anon51326702
anon51326702

KMatuszak:

podaj wynik polecenia

PHP 7.4.9 (cli) (built: Aug  7 2020 14:55:48) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
    with Zend OPcache v7.4.9, Copyright (c), by Zend Technologies
SerkoV
SerkoV

image|634x205 Ktoś wie o co chodzi?

KMatuszak
KMatuszak Weteran

Nie posiadasz PHP 7.4 w swoich repozytoriach, jest to opisane prawie na samym początku poradnika.

SerkoV
SerkoV

Gdy próbuje wejść na php wyskakuje takie coś image|435x123

KMatuszak
KMatuszak Weteran

undefined

co to znaczy

SerkoV:

wejść na php

SerkoV
SerkoV

ip/phpmyadmin

KMatuszak
KMatuszak Weteran

wielkość liter ma znaczenie 😉

KMatuszak:

Przejdź do wypakowanego katalogu

cd phpMyAdmin
SerkoV
SerkoV

KMatuszak:

phpMyAdmin

Gdy próbuję przez stronę wejść do bazy danych. Z phpMyAdmin również wyskakuje ten sam błąd ;/

KMatuszak
KMatuszak Weteran

w takim razie nie masz phpMyAdmina, pokaż zawartość katalogu z plikami strony.

SerkoV
SerkoV

image|690x52 podczas

sudo apt update

KMatuszak
KMatuszak Weteran

pokaż zawartość pliku do którego ścieżka pokazała Ci się.

SerkoV
SerkoV

Usunąłem zawartość pliku i na nowo instaluje php

SerkoV
SerkoV

Cały czas przy "sudo apt install apache2 php7.4 libapache2-mod-php7.4 php7.4-mysql php7.4-mbstring php7.4-curl"

image|613x203

KMatuszak
KMatuszak Weteran

Nadal nie dodałeś repozytoriów lub nie wykonałeś którejś komendy z poradnika.

PS. staraj się nie tworzyć double postów, edytuj poprzedni jeżeli masz taką możliwość.

KrEdEnS
KrEdEnS Moderator Freebies

Po dodaniu repo wpisz

less /etc/apt/sources.list.d/php.list

I wyślij nam odpowiedz

SerkoV
SerkoV

Co do edycji raczej nie mam takiej możliwości. Wracając, wykonuje krok po kroku i dalej to samo ;/

KMatuszak
KMatuszak Weteran

SerkoV:

Co do edycji raczej nie mam takiej możliwości.

masz image|58x45

SerkoV:

Wracając, wykonuje krok po kroku i dalej to samo ;/ podaj logi z wszystkich komend które wykonujesz, i zrób to co @KrEdEnS napisał wyżej.

SerkoV
SerkoV

image|532x69

KMatuszak
KMatuszak Weteran

Masz Debiana 8, poradnik nie obejmuje tej wersji systemu ponieważ nie jest ona wspierana.

KMatuszak:

Całość została dokładnie przetestowana i jest kompatybilna z następującymi systemami:

  • Ubuntu 20.04
  • Ubuntu 18.04
  • Debian 10
  • Debian 9
SerkoV
SerkoV

Nie możliwe że mam 8 :thinking:

SerkoV
SerkoV

Podczas instalacji na VPS wybierałem 10

KrEdEnS
KrEdEnS Moderator Freebies

Wpisz proszę komendę

less /etc/os-release

I podziel się z nami twoimi wynikami :)

@SerkoV

SerkoV
SerkoV

Udało mi się coś zdziałać i chyba działa. Wiecie może jak mogę sprawdzić lub stworzyć adreas tej bazy danych, aby się do niej dostać?

KMatuszak
KMatuszak Weteran

w sieci lokalnej adresem bazy danych jest localhost lub 127.0.0.1. poza nią jest nim adres serwera vps

max337
max337

Poradnik sztos!

Serwer ładnie stoi, zmigrowałem pliki z hostingu na VPS, zmigrowałem bazę, ale mam problem.

Kiedy wchodzę na ip strony to mam komunikat Unable to connect, phpmyadmin mam na ip/phpmyadmin i normalnie mi chodzi. Najciekawsze jest to, że jak wpiszę ip/katalog_pod_którym_mam_pliki_strony to strona przekierowuje mi się na obecną domenę, która jest na hostingu postawiona.

Nie mam pojęcia jak sobie z tym poradzić i o co chodzi. Przecież strona powinna normalnie chodzić, nawet bez domeny, tylko na samym IP. Podpowiecie coś?

Nieznajomy11
Nieznajomy11 Moderator forum.lvlup.pro

Istnieje duża szansa, że oprogramowanie, którego używasz, przy instalacji zapisuje w pliku konfiguracji adres strony i jeśli ten się nie zgadza, to automatycznie na niego przekierowuje.

max337
max337

Dobra, ogarnąłem - wtedy okazało się, że miałem błędnie przypisane Virtual Hosty.

Obecnie problemem jest fakt, że strona główna sklepu działa i ładuje się poprawnie, ale jak wejdę na jakiekolwiek podkatalogi czy też produkt, to pojawia mi się błąd:

Not Found

The requested URL was not found on this server.

Czyli tak jakby kompletnie nie wyszukiwało danych. Próbowałem ponownie zmigrować bazę, ale nic to nie dało.

Dzieje się tak zarówno na IP, jak i na subdomenie.

Do tego włączyłem rewrite mod, próbowałem zmieniać port virtual hosta czy edytować apache2.conf - kompletnie nic nie działa.

michal12504
michal12504

witam mam problem z phpmyadmin po wejsciu na ip serwera /phpmyadmin wyswietla się ciąg znaków jakis kod

Glupikocz
Glupikocz

Dlatego kożysta się z najnowszych poradników :P https://lvlup.rok.ovh/t/nowy-poradnik-jak-zainstalowac-apache2-mariadb-php7-4-phpmyadmin-ssl-http-2-ocena-a-na-ssllabs/16838

Nie działa ci bo nie masz rozszerzenia mbstring

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

wklep tą komendę co podałem wyżej i wykonaj restart apache2

service apache2 restart

PS. JEŚLI MASZ INNE PHP NIŻ 7.4 TO ZMIEŃ NA SWOJĄ WERSJĘ NP. 7.3

KMatuszak
KMatuszak Weteran

Glupikocz:

Dlatego kożysta się z najnowszych poradników

Ale ten poradnik pachnie świeżością, po prostu @michal12504 musiał coś źle zrobić :thinking:

SimSora
SimSora

Zrzut ekranu 2021-05-31 171602|680x205 Ktoś wie jak to naprawić?

Dudix
Dudix
Po wejściu na /phpmyadmin nie działa strona i wyskakuje informacja z zrzutu ekranu poniżej?

|474x70 Wpisz komendę ln -s /usr/share/phpmyadmin /var/www/html/phpmyadmin, aby przenieść do plików strony.

Od @Timo

Jakubk15
Jakubk15

Po wykonaniu powyższych czynności, po wejściu na stronę phpMyAdmina wyskakuje następujący błąd: Obraz|690x124 Chciałem dodać, że wcześniej instalowałem phpMyAdmina z poradnika Głupiegokocza, na innym VPS i wszystko działało. Zauważyłem, że w /etc/apache2/sites-available/ nie stworzył się plik phpmyadmin.conf, tak jak na poprzednim VPS.

Skopiowałem nawet pliki konfiguracyjne (podmieniłem domenę oczywiście) z poprzedniego VPSa, ale wciąż to samo.

LinGruby
LinGruby Pionier

Jakubk15:

Skopiowałem nawet pliki konfiguracyjne (podmieniłem domenę oczywiście) z poprzedniego VPSa, ale wciąż to samo.

a po tym zabiegu restartowałeś usługę phpMyAdmin? ( coby nowe ustawienia zadziałały )

Jakubk15
Jakubk15

Nie, ale zrebootowałem całego VPS. Zauważyłem jeszcze, że pliki phpMyAdmina znajdują się w dwóch lokalizacjach. /usr/share/phpmyadmin i var/www/pma.nbcraft.pl

W error logach apache2 zauważyłem coś takiego: [Mon Jun 14 03:11:27.549281 2021] [autoindex:error] [pid 759] [client MOJE_IP] AH01276: Cannot serve directory /var/www/pma.nbcraft.pl/: No matching DirectoryIndex (index.html,index.cgi,index.pl,index.php,index.xhtml,index.htm) found, and server-generated directory index forbidden by Options directive

Konfiguracja VirtualHosta:



    ServerName pma.nbcraft.pl
    ServerAdmin webmaster@localhost
    DocumentRoot /usr/share/phpmyadmin

    
        Options FollowSymLinks
        DirectoryIndex index.php
        Require all granted

        
            
                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
    
RewriteEngine on
RewriteCond %{SERVER_NAME} =pma.nbcraft.pl
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]