Cześć,
Opiszę tutaj krok po kroku konfigurację WordPress w konfiguracji dwóch serwerów. Mogą to być serwery fizyczne, lub zainstalowane na wirtualnych maszynach, czy to za pomocą VirtualBox , czy HyperV.
Zazwyczaj spotykamy się z tymi konfiguracjami powyżej, oczywiście są też inne rozwiązania, jak np. w przypadku usługodawcy hostingu, który ma w innym miejscu bazę danych, a w innym trzyma katalog na pliki strony internetowej, lecz ja zajmę się przypadkiem klasycznym, gdy rozróżniamy dwa różne serwery.
Dlaczego takie rozwiązanie? Z prostego powodu – bezpieczeństwo. Do serwera bazy danych nie ma dostępu z zewnątrz, czyli z Internetu. Jest on za tzw. NAT-em.
Opiszę rozwiązanie, które wdrożyłem u siebie na dwóch laptopach, które pełnią rolę serwerów w domu w celach nauki własnej.
Dotarłeś do tego miejsca? Świetnie! Zaczynajmy.
Konfiguracja WordPress do połączenia ze zdalną bazą danych
- Serwer bazy danych – CentOS 7.6
- Serwer www – Debian 9.8.0 , ewentualnie Red Hat, CentOS, Fedora.
- Serwer bazy danych: Serwer z CentOS, na którym jest zainstalowana baza danych.
- Server www: Serwer z Debian na którym jest zainstalowany WordPress.
wordpress
: Nazwa bazy danych.user
: Użytkownik – klient bazy danych WordPresshaslo_uzytkownika_bazy_danych
: hasło użytkownika bazy danych SQL – wordpress.192.168.0.11
: Prywatny adres IP serwera bazy danych.192.168.0.10
: Prywatny adres IP serwera www.example_user
: Lokalny użytkownik z prawami sudo, który nie jest rootem.190.100.100.90/example.com
: Publiczny adres serwera , lub nazwa domeny (FQDN).
Zainstaluj serwer bazy danych MariaDB 10.3 na CentOS poleceniem:
|
|
Jeśli nie masz nano, to zainstaluj je poleceniem. Używanie jest łatwiejsze, niż vi.
|
|
wklej tę zawartość:
|
|
Wciśnij ctrl+o , aby zapisać. Wciśnij ctrl+x , aby wyjść z nano.
Zainstaluj serwer MariaDB oraz klienta:
|
|
Wystartuj MariaDB serwer
|
|
Włącz na stałe serwer MariaDB
|
|
Sprawdź status usługi MariaDB
|
|
Uruchom obsługę MariaDB poleceniem, ponieważ nie masz nadanego hasła użytkownika root bazy danych.
|
|
Po zalogowaniu się ustal hasło roota do MariaDB poleceniem:
|
|
Zaloguj się do MariaDB wcześniej ustalonym hasłem:
|
|
Sprawdź status MariaDB:
|
|
Wykonaj poniższe polecenie:
|
|
Wyświetli się poniższe okno, w którym na pytanie o zmianę hasła root odpowiadasz literą n, ponieważ ustalone zostało wcześniej. Pozostałe pozycje potwierdzasz drukowaną literą Y.
W CentOS firewall jest zainstalowany domyślnie. Sprawdź, czy jest włączony.
|
|
Listowanie portów i serwisów firewall
|
|
Dodaj usługę mysql
|
|
Zrestartuj firewall
|
|
Usunięcie usługi lub portu. Nie jest to potrzebne w tym momencie, ale może się przydać kiedyś. Z portu 3360 korzysta MariaDB oraz MySQL. Jeśi chcesz dodać ten port zamiast usługi, co czasem może być rozwiązaniem problemu, to zastąp remove słowem add.
|
|
Zaloguj się do MariaDB
|
|
Wykonaj poniższe polecenie aby dodać bazę danych o nazwie wordpress
|
|
Wykonaj polecenie, aby utworzyć użytkownika, który będzie korzystać z tej bazy. Nie powinien być to użytkownik root ze względów bezpieczeństwa.
|
|
Przydziel uprawnienia użytkownikowi user
|
|
Utwórz użytkownika oraz przydziel uprawnienia do zdalnego dostępu do bazy danych wordpress dla użytkownika user. Adres IP to lokalny adres IP serwera www, na którym znajduje się WordPress. Hasło jest takie samo, jak hasło użytkownika, utworzonego wyżej.
|
|
Wykonaj poniższe polecenia:
|
|
Sprawdź, czy jesteś w stanie zalogować się stworzonym użytkownikiem:
|
|
Na serwerze www z Debian wykonaj następujące polecenie:
|
|
Sprawdź, czy możesz się zalogować przy pomocy poniższego polecenia:
|
|
Sprawdź status MariaDB
|
|
Zamknij połączenie wychodząc z MariaDB.
|
|
Instalacja WordPress
Utwórz katalog o nazwie src w katalogu swojej witryny, aby przechowywać nowe kopie plików źródłowych WordPress. W tym przewodniku jako przykład wykorzystano katalog domowy /var/www/html/example.com/. Przejdź do tego nowego katalogu:
|
|
Ustaw użytkownika serwera WWW, www-data, jako właściciela katalogu domowego swojej witryny. www-data jest grupą.
|
|
Zainstaluj najnowszą wersję WordPress i wypakuj ją:
|
|
Zmień nazwę pliku latest.tar.gz na wordpress, a następnie ustaw datę przechowywania kopii zapasowej oryginalnych plików źródłowych. Będzie to przydatne, jeśli zainstalujesz nowe wersje w przyszłości i będzie potrzeba powrócić do poprzedniej wersji:
|
|
Utwórz katalog public_html, który będzie katalogiem głównym WordPress. Przenieś pliki WordPress do folderu public_html:
|
|
Nadaj folderowi public_html uprawnienia dla grupy www-data:
|
|
Przejdź do katalogu, do którego wyodrębniono WordPress, skopiuj przykładową konfigurację i ustaw ją tak, aby korzystała ze zdalnej bazy danych:
|
|
Zmień zmienne logowania tak, aby pasowały do bazy danych i użytkownika. Zastąp 192.168.0.11 prywatnym adresem IP serwera bazy danych. Edytuj plik:
/var/www/html/example.com/public_html/wp-config.php
|
|
Dodaj klucze bezpieczeństwa, aby zabezpieczyć wp-admin.
Użyj Generatora kluczy bezpieczeństwa WordPress, aby utworzyć losowe, skomplikowane hashe, których WordPress użyje do zaszyfrowania danych logowania. Skopiuj wynik i zastąp odpowiednią sekcję w pliku wp-config.php:
|
|
Zabezpieczenie ruchu do i z bazy danych WordPress za pomocą SSL
Domyślnie CentOS ma utworzony katalog z certyfikatami i nie trzeba żadnego katalogu tworzyć. Wejść do niego można:
|
|
Wygeneruj klucz urzędu certyfikacji i utwórz certyfikat oraz klucz prywatny. Odpowiadaj na odpowiednie monity. Klucz w tym przykładzie wygasa za 100 lat. Zmień wartość dni-dni 36500 w tym i następnych krokach, aby ustawić certyfikaty do wygaśnięcia w razie potrzeby:
|
|
Common Name ustaw na
|
|
Utwórz certyfikat serwera i zapisz klucz RSA. Nazwa zwykła (common name) powinna być nazwą FQDN lub adresem IP twojego serwera WWW. W tym przypadku
|
|
|
|
Podpisz certyfikat:
|
|
Przenieś klucze i certyfikat na stałe miejsce:
|
|
Wygeneruj klucz klienta. Odpowiadaj na odpowiednie monity i ustaw wspólną nazwę na FQDN lub adres IP swojego serwera WWW: 190.100.100.90
|
|
Zapisz jako klucz RSA
|
|
Podpisz certyfikat klienta
|
|
Zweryfikuj certyfikaty
|
|
Powinien przy obu wyświetlić OK.
Wyedytuj plik server.cnf na CentOS
|
|
Dodaj w sekcji [mysqld]:
|
|
Znajdź zakomentowaną linię #bind-address, usuń # , co spowoduje odkomentowanie i ustaw jak poniżej. Adres IP oczywiście zmień na lokalny adres IP serwera CentOS, na którym jest zainstalowana baza danych MariaDB.
|
|
Wciśnij ctrl+o, a następnie ctrl+x
Przenieś plik server-key do folderu private
|
|
Zaloguj się do MariaDB i wymagaj protokołu SSL dla wszystkich logowań do bazy danych. Zastąp 192.168.0.10 prywatnym adresem IP
|
|
|
|
Zrestartuj serwer MariaDB:
|
|
Skopiuj certyfikaty i klucz do serwera WWW. Zamień użytkownika example_user na użytkownika serwera WWW, a 192.168.0.10 na prywatny adres IP serwera WWW:
|
|
Na serwerze www utwórz katalog i przenieś certyfikaty i klucz do /etc/mysql/ssl:
|
|
Jeśli katalog /etc/mysql/ssl już istnieje, to wykonaj samo polecenie po znaczkach &&.
Skonfiguruj klienta MariaDB serwera WWW do korzystania z SSL. Znajdź sekcję [mysql] w pliku 50-mysql-clients.cnf i dodaj lokalizacje dla certyfikatów i klucza:
|
|
wklej poniższą zawartość w sekcji [mysql]
|
|
W przypadku, gdy masz dwa serwery oparte o Red Hat, CentOS, lub Fedora, wyedytuj plik mysql-clients.cnf
|
|
wklej do niego poniższa zawartość w sekcję [mysql]
|
|
Zaloguj się z serwera www z Debian do serwera bazy danych MariaDB z CentOS przy pomocy poniższego polecenia:
|
|
Jeśli się połączy, wyświetlony zostanie wiersz zachęty MariaDB. Wpisz polecenie:
|
|
Dodaj dyrektywę przed zdalną bazą danych w wp-config, która zmusza WordPress do używania SSL do połączenia z bazą danych:
|
|
Uzyskaj dostęp do interfejsu instalacyjnego WordPress poprzez wp-admin. Użyj przeglądarki, aby przejść do example.com/wp-admin. Jeśli połączenie z bazą danych zakończy się powodzeniem, zobaczysz ekran instalacji: