Tehnologija

Visokodostupni WordPress – kompletan setup

WordPress setup

Uvod

U ovom tekstu opisaćemo kako da sami podesite visokodostupnu WordPress instalaciju korišćenjem distribucije CentOS, distribuiranog fajl sistema GlusterFS i Percona XtraDB klastera. Komande koje treba pokretati su prikazane plavom bojom, njihov izlaz je belom, a crvenom bojom je obojen deo komande koji treba promeniti i prilagoditi vašem okruženju. Ukoliko ispred komande stoji [ALL]# onda se komanda izvršava na svim serverima, inače je unutar uglastih zagrada navedeno ime servera na kom treba pokrenuti tu komandu i direktorijum u kom se komanda pokreće. Obratiti pažnju na here-doc cat komande koje se prostiru u više redova do ključne reči END.

Podizanje mCloud mServer SSD1 instanci

Uzećemo 3 mCloud SSD servera, za početak sa 1GB RAM memorije i 2 CPU-a. Izabraćemo Centos 7 template.

wordpress high availability order servers
Odabir mCloud SSD servera za visokodostupni WordPress sajt

Nazvaćemo ih u obliku mns-wp-N.ha.rs i popisati dobijene IP adrese.

servers-1
Zabeležite imena i adrese vaših mCloud SSD servera za visokodostupni WordPress sajt.

Na svakoj od mašina instaliraćemo neke uobičajene pakete. Nisu svi neophodni, ali ih je zgodno imati:

[ALL]# yum -y install bash bc bind-utils elinks ftp htop html2text iotop iptraf joe jwhois logwatch lsof lynx mailx man man-pages mytop net-snmp net-snmp-utils nfs-utils ntp openssh-clients rsync screen strace sysstat tcpdump tcptraceroute vim vim-enhanced wget wireshark yum-plugin-security yum-utils pciutils dmidecode telnet attr net-tools https://download.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-5.noarch.rpm

Za početak, dopustićemo kompletan saobraćaj između ovih mašina. Ove korake radimo na svakoj mašini.

[ALL]# iptables -I INPUT -s 87.237.205.1/32 -j ACCEPT
[ALL]# iptables -I INPUT -s 87.237.205.2/32 -j ACCEPT
[ALL]# iptables -I INPUT -s 87.237.205.3/32 -j ACCEPT
[ALL]# iptables-save > /etc/sysconfig/iptables
[ALL]# echo 'iptables-restore < /etc/sysconfig/iptables' >> /etc/rc.local
[ALL]# chmod +x /etc/rc.local

Instalacija i podešavanje GlusterFS-a

Na svakoj od mašina zakucaćemo imena hostova u hosts fajlu:

[ALL]# cat >> /etc/hosts <<"END"
87.237.205.1 mns-wp-1.ha.rs mns-wp-1
87.237.205.2 mns-wp-2.ha.rs mns-wp-2
87.237.205.3 mns-wp-3.ha.rs mns-wp-3
END

Instaliraćemo i pokrenuti glusterfs:

[ALL]# wget -P /etc/yum.repos.d https://download.gluster.org/pub/gluster/glusterfs/LATEST/CentOS/glusterfs-epel.repo
[ALL]# yum -y install glusterfs glusterfs-fuse glusterfs-server
[ALL]# systemctl start glusterd

Omogućićemo i proveriti status:

[ALL]# systemctl enable glusterd
[ALL]# systemctl status glusterd
glusterd.service - GlusterFS, a clustered file-system server
   Loaded: loaded (/usr/lib/systemd/system/glusterd.service; enabled)
   Active: active (running) since Fri 2015-04-03 15:46:31 CEST; 3min 47s ago
  Process: 11199 ExecStart=/usr/sbin/glusterd -p /var/run/glusterd.pid (code=exited, status=0/SUCCESS)
 Main PID: 11200 (glusterd)
   CGroup: /system.slice/glusterd.service
           └─11200 /usr/sbin/glusterd -p /var/run/glusterd.pid

Povezaćemo servere u gluster pool. Ovo je dovoljno uraditi na jednom od servera.

[mns-wp-1 ~]# gluster peer probe mns-wp-2
peer probe: success.
[mns-wp-1 ~]# gluster peer probe mns-wp-3
peer probe: success.
[mns-wp-1 ~]# gluster peer probe mns-wp-1
peer probe: success. Probe on localhost not needed

Sada možemo proveriti status pool-a:

[ALL]# gluster pool list
UUID                                    Hostname        State
a32d208c-7966-4af2-80d0-a42ec3568bbe    mns-wp-2        Connected
6ed8f0c7-01f2-4951-a663-5e73dba405b1    mns-wp-3        Connected
c96c8c8e-5b30-448f-8177-a7ef0d9a325e    localhost       Connected

Na jednoj od mašina pravimo klaster od tri mašine i tri replike podataka. Koristimo opciju force jer /srv/vol0 nije na zasebnom fajl sistemu:

[mns-wp-1 ~]# gluster volume create vol0 rep 3 transport tcp mns-wp-1:/srv/vol0 mns-wp-2:/srv/vol0 mns-wp-3:/srv/vol0 force
volume create: vol0 success
[mns-wp-1 ~]# gluster volume start vol0
volume start: vol0: success

Proveravamo status novog volumena. Svi brick-ovi i self-heal daemoni bi trebalo da budu online.

[mns-wp-1 ~]# gluster vol status vol0
Status of volume: vol0
Gluster process                                         Port    Online  Pid
------------------------------------------------------------------------------
Brick mns-wp-1:/srv/vol0                                49152   Y       1316
Brick mns-wp-2:/srv/vol0                                49152   Y       1899
Brick mns-wp-3:/srv/vol0                                49152   Y       859
NFS Server on localhost                                 N/A     N       N/A
Self-heal Daemon on localhost                           N/A     Y       2593
NFS Server on mns-wp-2                                  N/A     N       N/A
Self-heal Daemon on mns-wp-2                            N/A     Y       1997
NFS Server on mns-wp-3                                  N/A     N       N/A
Self-heal Daemon on mns-wp-3                            N/A     Y       871

Task Status of Volume vol0
------------------------------------------------------------------------------
There are no active volume tasks

Pošto su glusterfs serveri u isto vreme i klijenti možemo koristiti localhost da prikačimo glusterfs volumen na svim serverima:

[ALL]# mkdir -p /var/www/html/
[ALL]# mount -t glusterfs localhost:/vol0 /var/www/html
[ALL]# echo "localhost:/vol0 /var/www/html glusterfs defaults,_netdev 0 0" >> /etc/fstab

Preporučene opcije za bolje performanse:

[mns-wp-1 ~]# gluster vol set vol0 performance.quick-read on
volume set: success
[mns-wp-1 ~]# gluster vol set vol0 performance.read-ahead on
volume set: success
[mns-wp-1 ~]# gluster vol set vol0 performance.io-cache on
volume set: success
[mns-wp-1 ~]# gluster vol set vol0 performance.cache-size 256MB
volume set: success
[mns-wp-1 ~]# gluster vol set vol0 performance.stat-prefetch on 
volume set: success 
[mns-wp-1 ~]# gluster vol set vol0 performance.write-behind-window-size 4MB 
volume set: success 
[mns-wp-1 ~]# gluster vol set vol0 performance.flush-behind on 
volume set: success

Ove opcije se prikazuju zajedno sa informacijama o volumenu:

[ALL]# gluster vol info vol0
Volume Name: vol0
Type: Replicate
Volume ID: c8cf45c4-bff5-42fb-b065-516de82ebb03
Status: Started
Number of Bricks: 1 x 3 = 3
Transport-type: tcp
Bricks:
Brick1: mns-wp-1:/srv/vol0
Brick2: mns-wp-2:/srv/vol0
Brick3: mns-wp-3:/srv/vol0
Options Reconfigured:
performance.write-behind-window-size: 4MB
performance.flush-behind: on
performance.stat-prefetch: on
performance.io-cache: on
performance.read-ahead: on
performance.quick-read: on
performance.cache-size: 256MB

Instalacija i podešavanje Percona XtraDB cluster-a

Instaliramo i podešavamo osnovni my.cnf fajl za Percona XtraDB Cluster na svakom serveru:

[ALL]# yum -y install https://www.percona.com/downloads/percona-release/redhat/0.1-3/percona-release-0.1-3.noarch.rpm
[ALL]# yum -y install Percona-XtraDB-Cluster-56
[ALL]# cat > /etc/my.cnf <<END
[mysqld]
datadir=/var/lib/mysql
user=mysql
# Path to Galera library
wsrep_provider=/usr/lib64/libgalera_smm.so
# Cluster connection URL contains the IPs of node#1, node#2 and node#3
wsrep_cluster_address=gcomm://87.237.205.1,87.237.205.2,87.237.205.3
# In order for Galera to work correctly binlog format should be ROW
binlog_format=ROW
# MyISAM storage engine has only experimental support
default_storage_engine=InnoDB
# This changes how InnoDB autoincrement locks are managed and is a requirement for Galera
innodb_autoinc_lock_mode=2
# SST method
wsrep_sst_method=xtrabackup-v2
# Cluster name
wsrep_cluster_name=my_wordpress_cluster
# My name
wsrep_node_name=$(hostname -s)
# Authentication for SST method
wsrep_sst_auth="sstuser:s3cr3t"
# Try to replicate even MyISAM
wsrep_replicate_myisam=1
END

Na jednom serveru pokrećemo bootstrap XtraDB klastera:

[mns-wp-1 ~]# systemctl start mysql@bootstrap.service

Za state transfer između članova klastera potreban je zaseban mysql korisnik. Ovde odaberite neku komplikovanu šifru:

[mns-wp-1 ~]# mysql -e 'CREATE USER "sstuser"@"localhost" IDENTIFIED BY "s3cr3t";'
[mns-wp-1 ~]# mysql -e 'GRANT RELOAD, LOCK TABLES, REPLICATION CLIENT ON *.* TO "sstuser"@"localhost";'

Na drugim serverima samo startujemo mysql nakon što smo instalirali Percona XtraDB Cluster i podesili my.cnf:

[mns-wp-2 ~]# systemctl start mysql
[mns-wp-3 ~]# systemctl start mysql

Omogućićemo mysql servis da bi se automatski startovao prilikom starta sistema:

[ALL]# systemctl enable mysql

WordPress treba da ima svog mysql korisnika, izaberite mu neku komplikovanu šifru:

[mns-wp-1 ~]# mysql -e 'CREATE DATABASE wordpress;'
[mns-wp-1 ~]# mysql -e 'CREATE USER "wpuser"@"%" IDENTIFIED BY "mojavrloduGcka_iKOmplik0v4na_sifra";'
[mns-wp-1 ~]# mysql -e 'GRANT ALL PRIVILEGES ON wordpress.* TO "wpuser"@"%";'

Za proveru zdravlja noda u klasteru može se koristiti komanda clustercheck koja se podrazumevano kači kao korisnik „clustercheckuser“ sa šifrom „clustercheckpassword!“. Poželjno je da ne koristite tu šifru, već da je promenite.

[mns-wp-1 ~]# mysql -e 'GRANT PROCESS ON *.* TO `clustercheckuser`@`localhost` IDENTIFIED BY "clustercheckpassword!";'
[ALL]# clustercheck
HTTP/1.1 200 OK
Content-Type: text/plain
Connection: close
Content-Length: 40

Percona XtraDB Cluster Node is synced.

Parametri i status klastera mogu se videti u sistemskim promenljivama čija imena počinju sa wsrep:

[ALL]# mysql -e 'show status like "wsrep_cluster_size";'
+--------------------+-------+
| Variable_name      | Value |
+--------------------+-------+
| wsrep_cluster_size | 3     |
+--------------------+-------+
[ALL]# mysql -e 'show status like "wsrep_cluster_status";'
+----------------------+---------+
| Variable_name        | Value   |
+----------------------+---------+
| wsrep_cluster_status | Primary |
+----------------------+---------+
[ALL]# mysql -e 'show status like "wsrep_local_state_comment";'
+---------------------------+--------+
| Variable_name             | Value  |
+---------------------------+--------+
| wsrep_local_state_comment | Synced |
+---------------------------+--------+

Takođe, preporuka je da obezbedite svoje mysql instalacije uklanjanjem anonimnog pristupa i postavljanjem šifre root korisnika mysql-a:

[ALL]# mysql_secure_installation

Instalacija WordPress-a korišćenjem NginX, PHP-FPM, WP-CLI

Instaliraćemo osnovne PHP pakete. Već smo ranije importovali EPEL repozitorijum iz kog su neki od ovih paketa.

[ALL]# yum -y install 
        php-common              
        php-fpm                 
        php-gd                  
        php-cli                 
        php-pdo                 
        php-mysqlnd             
        php-bcmath              
        php-mcrypt              
        php-xml                 
        php-mbstring            
        php-xmlrpc              
        php-pecl-memcache       
        php-pecl-memcached      
        php-pecl-apc            
        php-devel               
        php-dba                 
        php-odbc                
        php-pecl-amqp           
        php-pgsql               
        php-pspell              
        php-recode              
        php-redis               
        php-snmp                
        php-soap                
        php-tidy                
        php-pecl-mongo          
        php-pecl-solr           
        php-pecl-sphinx

Dodaćemo sistemskog korisnika wpuser i grupu wpuser. WordPress fajlovi će pripadati ovom korisniku.

[ALL]# useradd -d /var/www/html/wordpress -m wpuser
[mns-wp-1 ~]# chmod go+rx /var/www/html/wordpress

Za instalaciju i podešavanje samog WordPress-a koristićemo WP-CLI kog pokrećemo kao korisnik wpuser:

[mns-wp-1 ~]# cd /var/www/html/
[mns-wp-1 /var/www/html]# wget https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
[ALL]# sudo -u wpuser php /var/www/html/wp-cli.phar --info
PHP binary:     /usr/bin/php
PHP version:    5.4.16
php.ini used:   /etc/php.ini
WP-CLI root dir:        phar://wp-cli.phar
WP-CLI global config:
WP-CLI project config:
WP-CLI version: 0.18.0

[ALL]# echo alias wp='"sudo -u wpuser php /var/www/html/wp-cli.phar"' >> ~/.bashrc
[ALL]# source ~/.bashrc

Instaliramo i podešavamo WordPress:

[mns-wp-1 ~]# cd /var/www/html/wordpress
[mns-wp-1 /var/www/html/wordpress]# wp core download
Success: WordPress downloaded.
[mns-wp-1 /var/www/html/wordpress]# wp core config --dbname=wordpress --dbuser=wpuser --dbpass=mojavrloduGcka_iKOmplik0v4na_sifra
Success: Generated wp-config.php file.
[mns-wp-1 /var/www/html/wordpress]# wp core install --url=wp.ha.rs --title=MyHAWP --admin_user=wpadmin --admin_password=drugaduGack4_iCooomplikv4na_fra --admin_email=marko@ha.rs
Success: WordPress installed successfully.
[mns-wp-1 /var/www/html/wordpress]# wp option update home https://wp.ha.rs
Success: Updated 'home' option.
[mns-wp-1 /var/www/html/wordpress]# wp option update siteurl https://wp.ha.rs
Success: Updated 'siteurl' option.

Iako sam WordPress ne koristi PHP sesije, mnogi plugin-ovi ih koriste, pa ćemo podesiti memcache za čuvanje sesija:

[ALL]# yum -y install memcached
[ALL]# systemctl enable memcached
[ALL]# systemctl start memcached
[ALL]# cat >> /etc/php.d/memcache.ini <<END
session.save_handler=memcache
session.save_path='tcp://87.237.205.1:11211, tcp://87.237.205.2:11211, tcp://87.237.205.3:11211'
END

Zbog bezbednosti, nećemo izvršavati PHP-FPM kao korisnik wpuser, već kao korisnik apache, ali kao grupa wpuser. Korisnik wpuser će tako moći da dodeli svojoj grupi da može da piše po određenim fajlovima i direktorijumima. Takođe, podesićemo vremensku zonu, omogućiti php-fpm servis i startovati ga:

[ALL]# sed -i 's/group = apache/group = wpuser/' /etc/php-fpm.d/www.conf
[ALL]# sed -i 's/;date.timezone.*/date.timezone = Europe/Belgrade/g' /etc/php.ini
[ALL]# systemctl enable php-fpm
ln -s '/usr/lib/systemd/system/php-fpm.service' '/etc/systemd/system/multi-user.target.wants/php-fpm.service'
# systemctl start php-fpm

Nakon starta, trebalo bi da se php-fpm procesi nadju u listi procesa:

[ALL]# ps -Leo pid,user,group,args | grep php-fpm
17464 root     root     php-fpm: master process (/etc/php-fpm.conf)
17465 apache   wpuser   php-fpm: pool www
17466 apache   wpuser   php-fpm: pool www
17467 apache   wpuser   php-fpm: pool www
17468 apache   wpuser   php-fpm: pool www
17469 apache   wpuser   php-fpm: pool www
18576 root     root     grep --color=auto php-fpm

Instaliraćemo najnoviji nginx:

[ALL]# yum -y install https://nginx.org/packages/rhel/7/noarch/RPMS/nginx-release-rhel-7-0.el7.ngx.noarch.rpm
[ALL]# yum -y install nginx

A konfigurisaćemo ga prema standardnim preporukama za WordPress sajt (npr. na https://github.com/Romke-vd-Meulen/nginx-config ):

[ALL]# echo 'fastcgi_param   SCRIPT_FILENAME         $document_root$fastcgi_script_name;' >> /etc/nginx/fastcgi_params
[ALL]# echo 'fastcgi_param   PATH_TRANSLATED         $document_root$fastcgi_path_info;' >> /etc/nginx/fastcgi_params
[ALL]# cat > /etc/nginx/nginx.conf <<"END"
# Generic startup file.
user nginx wpuser;
worker_processes  2;
error_log  /var/log/nginx/error.log;
pid        /var/run/nginx.pid;
events {
        worker_connections  1024;
}

http {
        include       /etc/nginx/mime.types;
        default_type       application/octet-stream;
        access_log         /var/log/nginx/access.log;
        sendfile           on;
#       tcp_nopush         on;
        keepalive_timeout  3;
#       tcp_nodelay        on;
        gzip               on;
        # php max upload limit cannot be larger than this
        client_max_body_size 32m;
        index              index.php index.html index.htm;

        # Upstream to abstract backend connection(s) for PHP.
        upstream php {
                #this should match value of "listen" directive in php-fpm pool
#               server unix:/tmp/php-fpm.sock;
                server 127.0.0.1:9000;
        }

    include /etc/nginx/conf.d/*.conf;
}
END

Podrazumevani virtualni host uključuje dodatne konfiguracione fajlove:

[ALL]# cat > /etc/nginx/conf.d/default.conf <<"END"
server {
        server_name  _;
        listen 0.0.0.0:8080;
        rewrite ^ $scheme://wp.ha.rs$request_uri redirect;
}

server {
        server_name wp.ha.rs;
        listen 0.0.0.0:8080;
        root /var/www/html/wordpress;
	index index.php;
        include global/restrictions.conf;
        # Additional rules go here.

	# Only include one of the files below.
        include global/wordpress.conf;
#        include global/wordpress-ms-subdir.conf;
#        include global/wordpress-ms-subdomain.conf;
}
END

Fajl restrictions.conf:

[ALL]# mkdir -p /etc/nginx/global
[ALL]# cat > /etc/nginx/global/restrictions.conf <<"END"
# Global restrictions configuration file.
# Designed to be included in any server {} block.
location = /favicon.ico {
        log_not_found off;
        access_log off;
}

location = /robots.txt {
        allow all;
        log_not_found off;
        access_log off;
}

# Deny all attempts to access hidden files such as .htaccess, .htpasswd, .DS_Store (Mac).
# Keep logging the requests to parse later (or to pass to firewall utilities such as fail2ban)
location ~ /. {
        deny all;
}

# Deny access to any files with a .php extension in the uploads directory
# Works in sub-directory installs and also in multisite network
# Keep logging the requests to parse later (or to pass to firewall utilities such as fail2ban)
location ~* /(?:uploads|files)/.*.php$ {
        deny all;
}
END

Fajl wordpress.conf:

[ALL]# cat > /etc/nginx/global/wordpress.conf <<"END"
# WordPress single blog rules.
# Designed to be included in any server {} block.

# This order might seem weird - this is attempted to match last if rules below fail.
# https://wiki.nginx.org/HttpCoreModule
location / {
        try_files $uri $uri/ /index.php?$args;
}

# Add trailing slash to */wp-admin requests.
rewrite /wp-admin$ $scheme://$host$uri/ permanent;

# Directives to send expires headers and turn off 404 error logging.
location ~* ^.+.(ogg|ogv|svg|svgz|eot|otf|woff|mp4|ttf|rss|atom|jpg|jpeg|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|bmp|rtf)$ {
       access_log off; log_not_found off; expires max;
}

# Uncomment one of the lines below for the appropriate caching plugin (if used).
#include global/wordpress-wp-super-cache.conf;
#include global/wordpress-w3-total-cache.conf;

# Pass all .php files onto a php-fpm/php-fcgi server.
location ~ [^/].php(/|$) {
        fastcgi_split_path_info ^(.+?.php)(/.*)$;
        if (!-f $document_root$fastcgi_script_name) {
                return 404;
	}
	# This is a robust solution for path info security issue and works with "cgi.fix_pathinfo = 1" in /etc/php.ini (default)
        include fastcgi_params;
        fastcgi_index index.php;
#        fastcgi_intercept_errors on;
        fastcgi_pass php;
}
END

Nakon toga možemo omogućiti i startovati nginx:

[ALL]# systemctl enable nginx
ln -s '/usr/lib/systemd/system/nginx.service' '/etc/systemd/system/multi-user.target.wants/nginx.service'
[ALL]# systemctl start nginx

Instalacija i podešavanje HAProxy-a

Instaliramo haproxy i podešavamo ga za proksiranje ka nginx-ovima:

[ALL]# yum -y install haproxy
[ALL]# cat > /etc/haproxy/haproxy.cfg <<"END"
global
    log         127.0.0.1 local2
    chroot      /var/lib/haproxy
    pidfile     /var/run/haproxy.pid
    maxconn     4000
    user        haproxy
    group       haproxy
    daemon
    stats socket /var/lib/haproxy/stats

defaults
    mode                    http
    log                     global
    option                  httplog
    option                  dontlognull
    option http-server-close
    option forwardfor       except 127.0.0.0/8
    option                  redispatch
    retries                 3
    timeout http-request    10s
    timeout queue           1m
    timeout connect         10s
    timeout client          1m
    timeout server          1m
    timeout http-keep-alive 10s
    timeout check           10s
    maxconn                 3000

listen stats :9090
    mode http
    stats enable
    stats realm Haproxy
    stats uri /
    stats auth wpha:wphahapr0

frontend  main *:80
    default_backend             app
backend app
    balance    roundrobin
    option     forwardfor
    option     httpchk GET /hacheck.php HTTP/1.1rnHost:wp.ha.rs
    http-check expect string OK
    server  mns-wp-1 87.237.205.1:8080 check
    server  mns-wp-2 87.237.205.2:8080 check
    server  mns-wp-3 87.237.205.3:8080 check
listen mysql-cluster 0.0.0.0:3307
    mode tcp
    balance roundrobin
    option httpchk
    server mns-wp-1 87.237.205.1:3306 check port 9200 inter 12000 rise 3 fall 3
    server mns-wp-2 87.237.205.2:3306 check port 9200 inter 12000 rise 3 fall 3
    server mns-wp-3 87.237.205.3:3306 check port 9200 inter 12000 rise 3 fall 3
END

Pripremamo haproxy proveru za nginx i php-fpm:

[mns-wp-1 ~]# echo -n '<?php echo "OK";?>' > /var/www/html/wordpress/hacheck.php

Pripremamo haproxy proveru za bazu:

[ALL]# echo 'mysqlchk 9200/tcp # mysqlchk' >> /etc/services
[ALL]# yum -y install xinetd
[ALL]# cat > /etc/xinetd.d/mysqlchk <<"END"
# default: on
# description: mysqlchk
service mysqlchk
{
 disable = no
 flags = REUSE
 socket_type = stream
 port = 9200
 wait = no
 user = nobody
 server = /usr/bin/clustercheck
 log_on_failure += USERID
 only_from = 87.237.205.1 87.237.205.2 87.237.205.3
 per_source = UNLIMITED
}
END

Omogućavamo i startujemo xinetd

[ALL]# systemctl enable xinetd
[ALL]# systemctl start xinetd

Podešavamo WordPress da se kači na haproxy:

[mns-wp-1 ~]# sed -i "s/'DB_HOST', 'localhost'/'DB_HOST', '127.0.0.1:3307'/" /var/www/html/wordpress/wp-config.php

Omogućavamo i startujemo haproxy

[ALL]# systemctl enable haproxy
[ALL]# systemctl start haproxy

Instalacija i aktivacija W3 Total Cache-a

[mns-wp-1 /var/www/html/wordpress]# wp plugin install https://downloads.wordpress.org/plugin/w3-total-cache.0.9.4.1.zip
Downloading install package from https://downloads.wordpress.org/plugin/w3-total-cache.0.9.4.1.zip...
Unpacking the package...
Installing the plugin...
Plugin installed successfully.
[mns-wp-1 /var/www/html/wordpress]# wp plugin list
+----------------+----------+-----------+---------+
| name           | status   | update    | version |
+----------------+----------+-----------+---------+
| akismet        | inactive | available | 3.0.4   |
| hello          | inactive | none      | 1.6     |
| w3-total-cache | inactive | none      | 0.9.4.1 |
+----------------+----------+-----------+---------+
[mns-wp-1 /var/www/html/wordpress]# wp plugin activate w3-total-cache
Success: Plugin 'w3-total-cache' activated.

Podesite W3 Total Cache na standardan način tako da se koriste sva tri memcached servera. Takođe podesite da se Object cache snima u sva tri memcached servera.

 

Gotovo! Srećno HAWP-ovanje! 🙂

Komentari

2 komentara na "Visokodostupni WordPress – kompletan setup"

  1. Apsolutno zanimljivo, i privlacno. Kako je server/i u pitanju HA ima li nekih detalja o brzini i opterecenju koje moze da podnese ovakav setup? Demo ili showcase sa testovima bi bio super.

    1. Hvala na komentaru, drago mi je da Vam je bilo zanimljivo.
      Sa mCloud SSD1 serverima smo iz ovog setupa izvlacili 40tak req/s praznog wordpress-a sa osnovnom temom, bez kesiranja, sto i nije previse obzirom da su u pitanju SSD diskovi, ali je fino jer je citav setup prosiriv-skalabilan pa se mogu dodati novi serveri i/ili podeliti uloge na klasicne web-db-storage tier-e.

      Da li ste isprobali ovakav setup? Kako vam je prosla instalacija? Nadam se da je tekst bio od pomoci…

Ostavi komentar

Vaša adresa neće biti objavljena