WordPress to oprogramowanie typu open source, którego możesz użyć do stworzenia swojej witryny, bloga lub aplikacji. Istnieje wiele projektów i funkcji/wtyczek, które można dodać do instalacji WordPress. WordPress jest darmowym oprogramowaniem, jednak istnieje wiele komercyjnych wtyczek, które ulepszają go w zależności od Twoich wymagań.
WordPress ułatwia zarządzanie treścią i jest naprawdę elastyczny. Twórz wersje robocze, planuj publikację i przeglądaj wersje swoich postów. Ustaw swoją treść jako publiczną lub prywatną oraz zabezpiecz posty i strony hasłem.
Aby uruchomić WordPress, musisz mieć co najmniej PHP w wersji 5.2.4+, MySQL w wersji 5.0+ (lub MariaDB) oraz Apache lub Nginx. Niektóre z tych wersji osiągnęły EOL i możesz narazić swoją witrynę na luki w zabezpieczeniach, więc powinieneś zainstalować najnowszą dostępną wersję w zależności od środowiska.
Jak widzieliśmy, obecnie WordPress obsługuje tylko silniki baz danych MySQL i MariaDB. WPPG to wtyczka oparta na wtyczce PG4WP, która daje możliwość zainstalowania i używania WordPressa z bazą danych PostgreSQL jako zapleczem. Działa poprzez zastąpienie wywołań specyficznych funkcji MySQL wywołaniami ogólnymi, które mapują je na inne funkcje bazy danych i przepisują zapytania SQL w locie, gdy są potrzebne.
W tym blogu zainstalujemy 1 serwer aplikacji z WordPress 5.1.1 i HAProxy, 1.5.18 na tym samym serwerze oraz 2 węzły bazy danych PostgreSQL 11 (Master-Standby). Cały system operacyjny będzie CentOS 7. Do wdrożenia baz danych i systemu równoważenia obciążenia użyjemy systemu ClusterControl.

To jest podstawowe środowisko. Możesz go ulepszyć, dodając więcej funkcji wysokiej dostępności, jak widać tutaj. Więc zacznijmy.
Wdrażanie bazy danych
Najpierw musimy zainstalować naszą bazę danych PostgreSQL. W tym celu założymy, że masz zainstalowany ClusterControl.
Aby przeprowadzić wdrożenie z ClusterControl, po prostu wybierz opcję „Wdróż” i postępuj zgodnie z wyświetlanymi instrukcjami.

Wybierając PostgreSQL, musimy określić Użytkownika, Klucz lub Hasło i port, aby połączyć się przez SSH z naszymi serwerami. Potrzebujemy również nazwy dla naszego nowego klastra i jeśli chcemy, aby ClusterControl zainstalował dla nas odpowiednie oprogramowanie i konfiguracje.

Po skonfigurowaniu informacji dostępowych SSH musimy zdefiniować użytkownika bazy danych, wersję i datadir (opcjonalnie). Możemy również określić, którego repozytorium użyć.
W następnym kroku musimy dodać nasze serwery do klastra, który zamierzamy utworzyć.

Podczas dodawania naszych serwerów możemy wprowadzić adres IP lub nazwę hosta.
W ostatnim kroku możemy wybrać, czy nasza replikacja będzie synchroniczna czy asynchroniczna.

Możemy monitorować stan tworzenia naszego nowego klastra z monitora aktywności ClusterControl.

Po zakończeniu zadania możemy zobaczyć nasz klaster na głównym ekranie ClusterControl.

Po utworzeniu naszego klastra możemy wykonać na nim kilka zadań, takich jak dodanie modułu równoważenia obciążenia (HAProxy) lub nowej repliki.
ClusterControlSingle Console dla całej infrastruktury bazy danychDowiedz się, co jeszcze nowego w ClusterControlZainstaluj ClusterControl ZA DARMOWdrażanie Load Balancer
Aby wykonać wdrożenie load balancera, w tym przypadku HAProxy, wybierz opcję „Dodaj Load Balancer” w działaniach klastra i wypełnij wymagane informacje.

Musimy tylko dodać IP/Nazwę, port, politykę i węzły, których będziemy używać. Domyślnie HAProxy jest konfigurowane przez ClusterControl z dwoma różnymi portami, jednym do odczytu-zapisu i jednym tylko do odczytu. W porcie do odczytu i zapisu tylko master jest UP. W przypadku awarii, ClusterControl będzie promować najbardziej zaawansowane urządzenie podrzędne i zmieni konfigurację HAProxy, aby włączyć nowy master i wyłączyć stary. W ten sposób będziemy mieć automatyczne przełączanie awaryjne w przypadku awarii.

Jeśli wykonaliśmy poprzednie kroki, powinniśmy mieć następującą topologię:

Tak więc mamy jeden punkt końcowy utworzony na serwerze aplikacji za pomocą HAProxy. Teraz możemy użyć tego punktu końcowego w aplikacji jako połączenia z hostem lokalnym.
Instalacja WordPressa
Zainstalujmy WordPress na naszym serwerze aplikacji i skonfigurujmy go do łączenia się z bazą danych PostgreSQL przy użyciu lokalnego portu HAProxy 3307.
Najpierw zainstaluj wymagane pakiety na serwerze aplikacji.
$ yum install httpd php php-mysql php-pgsql postgresql
$ systemctl start httpd && systemctl enable httpd
Pobierz najnowszą wersję WordPressa i przenieś ją do głównego katalogu dokumentów Apache.
$ wget https://wordpress.org/latest.tar.gz
$ tar zxf latest.tar.gz
$ mv wordpress /var/www/html/
Pobierz wtyczkę WPPG i przenieś ją do katalogu wtyczek wordpress.
$ wget https://downloads.wordpress.org/plugin/wppg.1.0.1.zip
$ unzip wppg.1.0.1.zip
$ mv wppg /var/www/html/wordpress/wp-content/plugins/
Skopiuj plik db.php do katalogu wp-content. Następnie edytuj go i zmień ścieżkę „PG4WP_ROOT”:
$ cp /var/www/html/wordpress/wp-content/plugins/wppg/pg4wp/db.php /var/www/html/wordpress/wp-content/
$ vi /var/www/html/wordpress/wp-content/db.php
define( 'PG4WP_ROOT', ABSPATH.'wp-content/plugins/wppg/pg4wp');
Zmień nazwę wp-config.php i zmień informacje o bazie danych:
$ mv /var/www/html/wordpress/wp-config-sample.php /var/www/html/wordpress/wp-config.php
$ vi /var/www/html/wordpress/wp-config.php
define( 'DB_NAME', 'wordpressdb' );
define( 'DB_USER', 'wordpress' );
define( 'DB_PASSWORD', 'wpPassword' );
define( 'DB_HOST', 'localhost:3307' );
Następnie musimy utworzyć bazę danych i użytkownika aplikacji w bazie danych PostgreSQL. W węźle głównym:
$ postgres=# CREATE DATABASE wordpressdb;
CREATE DATABASE
$ postgres=# CREATE USER wordpress WITH PASSWORD 'wpPassword';
CREATE ROLE
$ postgres=# GRANT ALL PRIVILEGES ON DATABASE wordpressdb TO wordpress;
GRANT
I edytuj plik pg_hba.conf, aby zezwolić na połączenie z serwerem aplikacji.
$ Vi /var/lib/pgsql/11/data/pg_hba.conf
host all all 192.168.100.153/24 md5
$ systemctl reload postgresql-11
Upewnij się, że masz do niego dostęp z serwera aplikacji:
$ psql -hlocalhost -p3307 -Uwordpress wordpressdb
Password for user wordpress:
psql (9.2.24, server 11.2)
WARNING: psql version 9.2, server version 11.0.
Some psql features might not work.
Type "help" for help.
wordpressdb=>
Teraz przejdź do pliku install.php w przeglądarce internetowej, w naszym przypadku adres IP serwera aplikacji to 192.168.100.153, więc przechodzimy do:
http://192.168.100.153/wordpress/wp-admin/install.php

Dodaj tytuł witryny, nazwę użytkownika i hasło, aby uzyskać dostęp do sekcji administratora i swojego adresu e-mail.

Na koniec przejdź do Wtyczki -> Zainstalowane wtyczki i aktywuj wtyczkę WPPG.
Wniosek
Teraz mamy WordPressa działającego z PostgreSQL przy użyciu jednego punktu końcowego. Możemy monitorować aktywność naszego klastra w ClusterControl, sprawdzając różne metryki, pulpity nawigacyjne lub wiele funkcji wydajności i zarządzania.
Istnieją różne sposoby implementacji WordPressa z PostgreSQL. Może to być użycie innej wtyczki lub zainstalowanie WordPressa jak zwykle i dodanie wtyczki później, ale w każdym razie, jak wspomnieliśmy, PostgreSQL nie jest oficjalnie obsługiwany przez WordPress, więc musimy przeprowadzić wyczerpujący proces testowania, jeśli chcemy użyj tej topologii w środowisku produkcyjnym.