{"id":2649,"date":"2020-05-22T14:50:52","date_gmt":"2020-05-22T12:50:52","guid":{"rendered":"https:\/\/tech.lobobrothers.com\/balance-wordpress\/"},"modified":"2025-02-01T13:26:07","modified_gmt":"2025-02-01T12:26:07","slug":"balance-wordpress","status":"publish","type":"post","link":"https:\/\/tech.lobobrothers.com\/en\/balance-wordpress\/","title":{"rendered":"WORDPRESS BALANCING"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"2649\" class=\"elementor elementor-2649 elementor-1061\" data-elementor-post-type=\"post\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-3b7133a9 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"3b7133a9\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-5979138\" data-id=\"5979138\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-35afda22 elementor-widget elementor-widget-text-editor\" data-id=\"35afda22\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h2>Where to start<\/h2>\n<div><\/div>\n<p>For our scenario we have purchased 2 vps and a balancer from OVH, the vps deployed are Ubuntu 18.04. In this post we will not talk about the balancer itself, as each service provider uses different dashboards and technologies so we focus on the vps that will be behind.<\/p>\n<p>The first thing we do is to change the root password of each VPS so that they are identical and we don&#8217;t go crazy.<\/p>\n<p>We authorize root to login by ssh:<\/p>\n<p style=\"padding-left: 40px;\"><strong> nano \/etc\/ssh\/sshd_config<\/strong><\/p>\n<p>we look for root and where it says PermitRootLogin we change it to yes, also for the following configurations that we will do we make sure in this file to configure the following.<\/p>\n<p style=\"padding-left: 40px;\"><strong> RSAAuthentication yes<\/strong><\/p>\n<p style=\"padding-left: 40px;\"><strong> PubkeyAuthentication yes <\/strong><\/p>\n<p style=\"padding-left: 40px;\"><strong> StrictModes yes<\/strong><\/p>\n<p>Restart the service<\/p>\n<p style=\"padding-left: 40px;\"><strong> service sshd restart<\/strong><\/p>\n<p align=\"left\">Edit the \/etc\/hosts file of all servers to point to all servers other than the same one with a short name, e.g. vps1,vps2,vps3,&#8230;., leaving<\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong>ip.ip.ip.ip vps1<\/strong><\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong> ip.ip.ip.ip vps2<\/strong><\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong> ip.ip.ip.ip vps3<\/strong><\/p>\n<p align=\"left\">We generate an ssh key in all vps with:<\/p>\n<p style=\"padding-left: 40px;\"><strong> ssh-keygen<\/strong><\/p>\n<p align=\"left\">We copy this key to all the hosts that we have added in the hosts file:<\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong> ssh-copy-id root@vps1<\/strong><\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong> ssh-copy-id root@vps2<\/strong><\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong> ssh-copy-id root@vps3<\/strong><\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong> ssh-copy-id \u2026.<\/strong><\/p>\n<p align=\"left\">As we have set the StrictModes to yes we need to set the permissions of the path $HOME\/.ssh\/authorized_keys. This file must have permissions 600 and the .ssh directory must have permissions 700, this is a way of securitizing to make sure that the public keys are not compromised, you can also leave it set to no and you would not have to perform this step but it would be less secure, now we are fine tuning points.<\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong> chmod 600 ~\/.ssh\/authorized_keys<\/strong><\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong> chmod 700 ~\/.ssh\/<\/strong><\/p>\n<p align=\"left\">Once we have done all the authentication issue and as in any other deployment we first update all the vps, everything that are common tasks we could use some tool, I for example in Linux I use Asbru since it allows us to create a cluster of servers and all the commands we execute in a console will be reflected in the others, as a good time optimizer the less I write the better hehe.<\/p>\n<p style=\"padding-left: 40px;\"><img decoding=\"async\" class=\"aligncenter wp-image-1072 size-large\" src=\"https:\/\/tech.lobobrothers.com\/wp-content\/uploads\/2020\/06\/Selecci\u00f3n_999426-1024x126.png\" alt=\"asbru interface\" width=\"800\" height=\"98\" srcset=\"https:\/\/tech.lobobrothers.com\/wp-content\/uploads\/2020\/06\/Selecci\u00f3n_999426-1024x126.png 1024w, https:\/\/tech.lobobrothers.com\/wp-content\/uploads\/2020\/06\/Selecci\u00f3n_999426-300x37.png 300w, https:\/\/tech.lobobrothers.com\/wp-content\/uploads\/2020\/06\/Selecci\u00f3n_999426-768x95.png 768w, https:\/\/tech.lobobrothers.com\/wp-content\/uploads\/2020\/06\/Selecci\u00f3n_999426-1536x189.png 1536w, https:\/\/tech.lobobrothers.com\/wp-content\/uploads\/2020\/06\/Selecci\u00f3n_999426-700x86.png 700w, https:\/\/tech.lobobrothers.com\/wp-content\/uploads\/2020\/06\/Selecci\u00f3n_999426.png 1922w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/><br \/>\n<strong>apt update -y<\/strong><\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong> apt upgrade -y<\/strong><\/p>\n<p align=\"left\">We start to install:<\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong> apt install apache2 libapache2-mod-fastcgi -y<\/strong><\/p>\n<p align=\"left\">Depending on your distribution you may have to download it, for example for Ubuntu 18.04, remembering as always in our posts that whatever is going to be garbage we do it in \/tmp and if it does not exist the previous command will not install apache2 and we will have to install it again.<\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong> cd \/tmp &amp;&amp; wget http:\/\/mirrors.kernel.org\/ubuntu\/pool\/multiverse\/liba\/libapache-mod-fastcgi\/libapache2-mod-fastcgi_2.4.7~0910052141-1.2_amd64.deb<\/strong><\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong> apt install apache2 &amp;&amp; dpkg -i libapache2-mod-fastcgi_2.4.7~0910052141-1.2_amd64.deb; sudo apt install -f<\/strong><\/p>\n<p align=\"left\">It may be that the version of php you want to use is not in the repositories of the distribution to use either, if so for example for Debian and Ubuntu<\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong> apt install software-properties-common -y<\/strong><\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong> add-apt-repository ppa:ondrej\/php <\/strong><\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong> apt update<\/strong><\/p>\n<p>As a note in Centos\/RHEL install the fedoraproject repo and remi<\/p>\n<p>Now everyone install the php-fpm version corresponding to your project and its necessary modules, in our case for a wordpress we use the version 7.2 and the following modules, in case you want for example the php7.3 version replace 7.2 by 7.3 in all the following line.<\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong> apt-get install php7.2 php7.2-fpm php7.2-mysql php7.2-mbstring php7.2-curl php7.2-dom php7.2-gd php7.2-xml php7.2-xmlrpc php7.2-zip php7.2-soap php7.2-intl php7.2-common php7.2-bcmath php7.2-imagick -y<\/strong><\/p>\n<p align=\"left\">We enable Apache and SSH in the firewall and activate it:<\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong> ufw allow in &#8220;Apache Full&#8221;<\/strong><\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong> ufw allow in &#8220;Apache&#8221;<\/strong><\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong> ufw allow in &#8220;OpenSSH&#8221;<\/strong><\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong> ufw enable<\/strong><\/p>\n<p align=\"left\">We activate the installed and some more apache modules:<\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong> a2enmod proxy_fcgi setenvif actions alias rewrite<\/strong><\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong> a2enconf php7.2-fpm<\/strong><\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong> a2enmod http2 headers cache cache_disk expires proxy_https2 ssl<\/strong><\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong> systemctl restart apache2<\/strong><\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong> systemctl start apache-htcacheclean<\/strong><\/p>\n<p align=\"left\">We change the mpm prefork to event for better performance and reload Apache:<\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong> a2dismod mpm_prefork<\/strong><\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong> a2enmod mpm_event<\/strong><\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong> systemctl reload apache2<\/strong><\/p>\n<p align=\"left\">We check that the MPM is not in prefork, if it says Server MPM: and empty it is ok.<\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong> apache2 -V<\/strong><\/p>\n<p align=\"left\">Edit the apache address file:<\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong> nano \/etc\/apache2\/mods-enabled\/dir.conf<\/strong><\/p>\n<p align=\"left\">in it we write the following:<\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong> DirectoryIndex index.php index.cgi index.pl index.html index.xhtml index.htm<\/strong><\/p>\n<p align=\"left\">We create the following file:<\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong> nano \/etc\/apache2\/sites-available\/web.conf<\/strong><\/p>\n<p align=\"left\">with the following content, we must replace the serverN by the number that touches, in addition to the documentroot where will be located the files of the web and the logs to identify this web in case of having more sites on the same server, in our case we will use \/var\/www\/html, as we will use lsyncd and its home will be \/var\/www, not activate any site in root for security, as the directory .ssh of www-data will be in \/var\/www<\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong>ServerName servidorN.dominioweb.com<\/strong><\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong> DocumentRoot \/var\/www\/html\/<\/strong><\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong> &lt;Directory &#8220;\/var\/www\/html&#8221;&gt;<\/strong><\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong> Options Indexes FollowSymLinks MultiViews<\/strong><\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong> AllowOverride All<\/strong><\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong> Require all granted<\/strong><\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong>ErrorLog ${APACHE_LOG_DIR}\/dominioweb_error.log<\/strong><\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong> CustomLog ${APACHE_LOG_DIR}\/dominioweb_access.log combined<\/strong><\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong>RewriteEngine on<\/strong><\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong> RewriteCond %{SERVER_NAME} =servidorN.dominioweb.com<\/strong><\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong> RewriteRule ^ https:\/\/%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]<\/strong><\/p>\n<p align=\"left\">We create the following file for ssl:<\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong>nano \/etc\/apache2\/sites-available\/webssl.conf<\/strong><\/p>\n<p align=\"left\">with the following content<\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong>ServerAdmin webmaster@dominio.com<\/strong><\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong>DocumentRoot \/var\/www\/html<\/strong><\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong>ErrorLog ${APACHE_LOG_DIR}\/dominioweb_error.log<\/strong><\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong>CustomLog ${APACHE_LOG_DIR}\/dominioweb-access.log combined<\/strong><\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong>SSLEngine on<\/strong><\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong>SSLCertificateFile \/etc\/ssl\/certs\/ssl-cert-snakeoil.pem<\/strong><\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong>SSLCertificateKeyFile \/etc\/ssl\/private\/ssl-cert-snakeoil.key<\/strong><\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong>&lt;FilesMatch &#8220;\\.(cgi|shtml|phtml|php)$&#8221;&gt;<\/strong><\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong>SSLOptions +StdEnvVars<\/strong><\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong>SSLOptions +StdEnvVars<\/strong><\/p>\n<p align=\"left\">Enable the sites and deactivate the default site<\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong>a2ensite web webssl &amp;&amp; a2dissite 000-default &amp;&amp; systemctl reload apache2<\/strong><\/p>\n<p align=\"left\">We move on to edit the php config files:<\/p>\n<p style=\"padding-left: 40px;\"><strong>nano \/etc\/apache2\/mods-enabled\/mpm_event.conf<\/strong><\/p>\n<p align=\"left\">We configure it like this for a server with a 1 core and 2 gb of ram, there are many tutorials on the web so we will not go into detail but you have to adjust it to get the best performance:<\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong>ServerLimit 16<\/strong><\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong>StartServers 4<\/strong><\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong>MinSpareThreads 25<\/strong><\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong>MaxSpareThreads 75<\/strong><\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong>ThreadLimit 64<\/strong><\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong>ThreadsPerChild 25<\/strong><\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong>MaxRequestWorkers 150<\/strong><\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong>MaxConnectionsPerChild 0<\/strong><\/p>\n<p align=\"left\">We changed the php7.2-fpm configuration to extend some limits and not to have problems in the wordpress installation:<\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong>nano \/etc\/php\/7.2\/fpm\/php.ini<\/strong><\/p>\n<p align=\"left\">We look for the following lines and leave them with these values or to the consumer&#8217;s taste:<\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong>upload_max_filesize = 64M<\/strong><\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong>post_max_size = 70M<\/strong><\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong>max_execution_time = 300<\/strong><\/p>\n<p align=\"left\">Restart Apache and PHP<\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong>service apache2 restart<\/strong><\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong>service php7.2-fpm restart<\/strong><\/p>\n<p align=\"left\">We upload the wordpress file by scp to one of the servers in \/var\/www\/ in our case<\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong>scp wordpress.zip <a href=\"mailto:root@vps1\">root@vps1<\/a>:\/var\/www\/<\/strong><\/p>\n<p align=\"left\">or we use wget from \/var\/www\/ to download the latest version<\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong>wget https:\/\/es.wordpress.org\/latest-es_ES.zip<\/strong><\/p>\n<p align=\"left\">Install unzip if not already installed<\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong>apt install unzip -y<\/strong><\/p>\n<p align=\"left\">We unzip it being in the server path \/var\/www:<\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong>unzip latest-es_ES.zip<\/strong><\/p>\n<p align=\"left\">and move it to html which is where our sites point to<\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong>rm -rf html<\/strong><\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong>mv wordpress html<\/strong><\/p>\n<p align=\"left\">We install wordpress and change the ownership and permissions of all files inside the folder using wordpress best practices being in the \/var\/www\/html folder:<\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong>cd \/var\/www\/html<\/strong><\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong>chown www-data:www-data -R \/var\/www\/html<\/strong><\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong>find . -type d -exec chmod 755 {} \\;<\/strong><\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong>find . -type f -exec chmod 644 {} \\;<\/strong><\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong>chmod 600 wp-config.php<\/strong><\/p>\n<p align=\"left\">We create the index2.html file in each server, it will serve as a probe to know that the server is up:<\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong>nano index2.html<\/strong><\/p>\n<p align=\"left\">Its content will be the following (change N for the server number):<\/p>\n<p style=\"padding-left: 120px;\" align=\"left\"><strong>Test Ok! Servidor N<\/strong><\/p>\n<p align=\"left\">We change the owner of the file:<\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong>chown www-data:www-data index2.html<\/strong><\/p>\n<p>We install wordpress as usual and after the installation we copy all the content to the other server.<\/p>\n<p style=\"padding-left: 40px;\"><strong>rsync -r \/var\/www\/html* vps2:\/var\/www\/html\/.<\/strong><\/p>\n<p style=\"padding-left: 40px;\"><strong>rsync -r \/var\/www\/html* vps3:\/var\/www\/html\/.<\/strong><\/p>\n<p style=\"padding-left: 40px;\"><strong>rsync -r \/var\/www\/html* &#8230;:\/var\/www\/html\/.<\/strong><\/p>\n<p align=\"left\">Now we will synchronize the vps with lsyncd, for this we first install it:<\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong>apt install lsyncd -f<\/strong><\/p>\n<p align=\"left\">Create the \/etc\/lsyncd\/ folder with the following command:<\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong>mkdir \/etc\/lsyncd<\/strong><\/p>\n<p align=\"left\">We create the configuration file in that folder:<\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong>nano \/etc\/lsyncd\/lsyncd.conf.lua<\/strong><\/p>\n<p align=\"left\">with the following content to point to the servers that we want to synchronize changing the targetlist in each node according to who it is, leaving it something like this:<\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong>settings {<\/strong><\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong>logfile = &#8220;\/var\/log\/lsyncd\/lsyncd.log&#8221;,<\/strong><\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong>statusFile = &#8220;\/var\/log\/lsyncd\/lsyncd.status&#8221;,<\/strong><\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong>}<\/strong><\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong>www_target_list = {<\/strong><\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong>&#8220;vps2:\/var\/www\/html&#8221;,<\/strong><\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong>&#8220;vps3:\/var\/www\/html&#8221;,<\/strong><\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong>&#8220;vps4:\/var\/www\/html&#8221;<\/strong><\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong>&#8211;Watch out if we add more servers, the last one is the only one without comma at the end.<\/strong><\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong>}<\/strong><\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong>for _, server in ipairs(www_target_list) do<\/strong><\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong>sync {<\/strong><\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong>default.rsync,<\/strong><\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong>source = &#8220;\/var\/www\/html&#8221;,<\/strong><\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong>target = server,<\/strong><\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong>delete = &#8220;running&#8221;,<\/strong><\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong>delay = 1,<\/strong><\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><b>exclude <\/b><b>=<\/b> <b>{<\/b> <b>&#8220;wp-config.php&#8221;<\/b><b>, <\/b><b>&#8220;index2.html&#8221;<\/b> <b>}<\/b><b>,<\/b><\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong>rsync = {<\/strong><\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong>rsh = &#8220;ssh -l www-data -i \/var\/www\/.ssh\/id_rsa&#8221;,<\/strong><\/p>\n<p style=\"padding-left: 80px;\" align=\"left\"><strong>}<\/strong><\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong>}<\/strong><\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong>end<\/strong><\/p>\n<p align=\"left\">We must also create the folder \/var\/log\/lsyncd with the following command we create the folder and the files:<\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong>mkdir \/var\/log\/lsyncd<\/strong><\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong>touch \/var\/log\/lsyncd\/lsyncd.{log,status}<\/strong><\/p>\n<p align=\"left\">Then we define a password for www-data like this:<\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong>passwd www-data<\/strong><\/p>\n<p align=\"left\">We install rssh:<\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong>apt-get install rssh<\/strong><\/p>\n<p align=\"left\">Edit the configuration file:<\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong>nano \/etc\/rssh.conf<\/strong><\/p>\n<p align=\"left\">To remove comments from the following lines:<\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong>allowscp<\/strong><\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong>allowrsync<\/strong><\/p>\n<p align=\"left\">Edit the \/etc\/passwd file<\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong>nano \/etc\/passwd<\/strong><\/p>\n<p align=\"left\">and replace the www-data line with this one:<\/p>\n<p style=\"padding-left: 40px;\"><strong>www-data:x:33:33:www-data:\/var\/www:\/bin\/bash<\/strong><\/p>\n<p align=\"left\">Edit the ssh file to allow login to www-data:<\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong>nano \/etc\/ssh\/sshd_config<\/strong><\/p>\n<p align=\"left\">And we go to the bottom and add this line:<\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong>AllowUsers www-data root<\/strong><\/p>\n<p><strong>If you have more users accessing via ssh add them with spaces after root<\/strong><\/p>\n<p align=\"left\">Now that we have the user www-data logable we do the following where serverN is the name of the server we want to access with www-data:<\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong>su www-data<\/strong><\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong>ssh-keygen<\/strong><\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong>ssh-copy-id vps2<\/strong><\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong>ssh-copy-id vps3<\/strong><\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong>ssh-copy-id vpsx<\/strong><\/p>\n<p align=\"left\">We do this on each server to be able to synchronize files between them and run exit in the console to return to root, edit \/etc\/passwd and now we restrict it by replacing the line where www-data is with this other one<\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong>www-data:x:33:33:www-data:\/var\/www:\/usr\/bin\/rssh<\/strong><\/p>\n<p align=\"left\">We activate lsync:<\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong>service lsyncd start<\/strong><\/p>\n<p align=\"left\">We check for errors with:<\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong>service lsyncd status<\/strong><\/p>\n<p align=\"left\">And we create a test file inside the folder to see what is created on the other server:<\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong>touch prueba.html<\/strong><\/p>\n<p align=\"left\">Once we are on the sidewalk, we install the mailsutils:<\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong>apt install -y mailutils<\/strong><\/p>\n<p>Select &#8220;Internet Site&#8221;.<\/p>\n<p align=\"left\">we type: dominioweb.com<\/p>\n<p align=\"left\">Edit the file \/etc\/postfix\/main.cf<\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong>nano \/etc\/postfix\/main.cf<\/strong><\/p>\n<p align=\"left\">We go to the bottom and where it says inet_interfaces = all we replace it with:<\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong>inet_interfaces = loopback-only<\/strong><\/p>\n<p align=\"left\">Restart postfix:<\/p>\n<p style=\"padding-left: 40px;\" align=\"left\"><strong>systemctl restart postfix<\/strong><\/p>\n<p align=\"left\">And finally the certificates, if you do not want to complicate your life in this scenario use the free service of cloudflare as it is a joy which provides us with their certificates and on the server with the self-signed more than enough choosing the flexible option of the ssl part in cloudflare, saving us work and trouble because they have changed for example the version of the API if we use Lets encrypt.<\/p>\n<p style=\"text-align: right;\">Miguel A. Romero in collaboration with TL.<\/p>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Where to start For our scenario we have purchased 2 vps and a balancer from OVH, the vps deployed are Ubuntu 18.04. In this post we will not talk about the balancer itself, as each service provider uses different dashboards and technologies so we focus on the vps that will be behind. The first thing [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":2651,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[48,49,50],"tags":[],"class_list":["post-2649","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-cloud-infraestructures","category-linux-world","category-open-source"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>WORDPRESS BALANCING - LBT<\/title>\n<meta name=\"description\" content=\"In this scenario we will have a balancer and 2 vps from a service provider, the procedure for more servers is exactly the same, being...\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/tech.lobobrothers.com\/en\/balance-wordpress\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"WORDPRESS BALANCING - LBT\" \/>\n<meta property=\"og:description\" content=\"In this scenario we will have a balancer and 2 vps from a service provider, the procedure for more servers is exactly the same, being...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/tech.lobobrothers.com\/en\/balance-wordpress\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog sobre linux y el mundo opensource\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/LoboBrothers\/\" \/>\n<meta property=\"article:published_time\" content=\"2020-05-22T12:50:52+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-02-01T12:26:07+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/tech.lobobrothers.com\/wp-content\/uploads\/2020\/05\/server-2891812_1920.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1920\" \/>\n\t<meta property=\"og:image:height\" content=\"1440\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"TL\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"TL\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/tech.lobobrothers.com\/en\/balance-wordpress\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/tech.lobobrothers.com\/en\/balance-wordpress\/\"},\"author\":{\"name\":\"TL\",\"@id\":\"https:\/\/tech.lobobrothers.com\/en\/#\/schema\/person\/11c359ab9896aa196007651fa6208beb\"},\"headline\":\"WORDPRESS BALANCING\",\"datePublished\":\"2020-05-22T12:50:52+00:00\",\"dateModified\":\"2025-02-01T12:26:07+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/tech.lobobrothers.com\/en\/balance-wordpress\/\"},\"wordCount\":1891,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/tech.lobobrothers.com\/en\/#organization\"},\"image\":{\"@id\":\"https:\/\/tech.lobobrothers.com\/en\/balance-wordpress\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/tech.lobobrothers.com\/wp-content\/uploads\/2020\/05\/server-2891812_1920.jpg.webp\",\"articleSection\":[\"Cloud Infraestructures\",\"Linux World\",\"Open Source\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/tech.lobobrothers.com\/en\/balance-wordpress\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/tech.lobobrothers.com\/en\/balance-wordpress\/\",\"url\":\"https:\/\/tech.lobobrothers.com\/en\/balance-wordpress\/\",\"name\":\"WORDPRESS BALANCING - LBT\",\"isPartOf\":{\"@id\":\"https:\/\/tech.lobobrothers.com\/en\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/tech.lobobrothers.com\/en\/balance-wordpress\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/tech.lobobrothers.com\/en\/balance-wordpress\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/tech.lobobrothers.com\/wp-content\/uploads\/2020\/05\/server-2891812_1920.jpg.webp\",\"datePublished\":\"2020-05-22T12:50:52+00:00\",\"dateModified\":\"2025-02-01T12:26:07+00:00\",\"description\":\"In this scenario we will have a balancer and 2 vps from a service provider, the procedure for more servers is exactly the same, being...\",\"breadcrumb\":{\"@id\":\"https:\/\/tech.lobobrothers.com\/en\/balance-wordpress\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/tech.lobobrothers.com\/en\/balance-wordpress\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/tech.lobobrothers.com\/en\/balance-wordpress\/#primaryimage\",\"url\":\"https:\/\/tech.lobobrothers.com\/wp-content\/uploads\/2020\/05\/server-2891812_1920.jpg.webp\",\"contentUrl\":\"https:\/\/tech.lobobrothers.com\/wp-content\/uploads\/2020\/05\/server-2891812_1920.jpg.webp\",\"width\":1920,\"height\":1440,\"caption\":\"Quincecreative\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/tech.lobobrothers.com\/en\/balance-wordpress\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\/\/tech.lobobrothers.com\/en\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"WORDPRESS BALANCING\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/tech.lobobrothers.com\/en\/#website\",\"url\":\"https:\/\/tech.lobobrothers.com\/en\/\",\"name\":\"Tech LBT\",\"description\":\"Como apasionados de la tecnolog\u00eda y amantes del open source creamos este blog con art\u00edculos interesantes obre linux, cloud, open source, criptomonedas y ciberseguridad\",\"publisher\":{\"@id\":\"https:\/\/tech.lobobrothers.com\/en\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/tech.lobobrothers.com\/en\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/tech.lobobrothers.com\/en\/#organization\",\"name\":\"Lobo Brothers Technology\",\"url\":\"https:\/\/tech.lobobrothers.com\/en\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/tech.lobobrothers.com\/en\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/tech.lobobrothers.com\/wp-content\/uploads\/2019\/06\/logo_red.png\",\"contentUrl\":\"https:\/\/tech.lobobrothers.com\/wp-content\/uploads\/2019\/06\/logo_red.png\",\"width\":110,\"height\":50,\"caption\":\"Lobo Brothers Technology\"},\"image\":{\"@id\":\"https:\/\/tech.lobobrothers.com\/en\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/LoboBrothers\/\",\"https:\/\/www.linkedin.com\/company\/lobobrothers\/about\/?viewAsMember=true\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/tech.lobobrothers.com\/en\/#\/schema\/person\/11c359ab9896aa196007651fa6208beb\",\"name\":\"TL\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/tech.lobobrothers.com\/en\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/a2d3b9e0b67bd28fe8248346c09cbe07?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/a2d3b9e0b67bd28fe8248346c09cbe07?s=96&d=mm&r=g\",\"caption\":\"TL\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"WORDPRESS BALANCING - LBT","description":"In this scenario we will have a balancer and 2 vps from a service provider, the procedure for more servers is exactly the same, being...","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/tech.lobobrothers.com\/en\/balance-wordpress\/","og_locale":"en_US","og_type":"article","og_title":"WORDPRESS BALANCING - LBT","og_description":"In this scenario we will have a balancer and 2 vps from a service provider, the procedure for more servers is exactly the same, being...","og_url":"https:\/\/tech.lobobrothers.com\/en\/balance-wordpress\/","og_site_name":"Blog sobre linux y el mundo opensource","article_publisher":"https:\/\/www.facebook.com\/LoboBrothers\/","article_published_time":"2020-05-22T12:50:52+00:00","article_modified_time":"2025-02-01T12:26:07+00:00","og_image":[{"width":1920,"height":1440,"url":"https:\/\/tech.lobobrothers.com\/wp-content\/uploads\/2020\/05\/server-2891812_1920.jpg","type":"image\/jpeg"}],"author":"TL","twitter_card":"summary_large_image","twitter_misc":{"Written by":"TL","Est. reading time":"9 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/tech.lobobrothers.com\/en\/balance-wordpress\/#article","isPartOf":{"@id":"https:\/\/tech.lobobrothers.com\/en\/balance-wordpress\/"},"author":{"name":"TL","@id":"https:\/\/tech.lobobrothers.com\/en\/#\/schema\/person\/11c359ab9896aa196007651fa6208beb"},"headline":"WORDPRESS BALANCING","datePublished":"2020-05-22T12:50:52+00:00","dateModified":"2025-02-01T12:26:07+00:00","mainEntityOfPage":{"@id":"https:\/\/tech.lobobrothers.com\/en\/balance-wordpress\/"},"wordCount":1891,"commentCount":0,"publisher":{"@id":"https:\/\/tech.lobobrothers.com\/en\/#organization"},"image":{"@id":"https:\/\/tech.lobobrothers.com\/en\/balance-wordpress\/#primaryimage"},"thumbnailUrl":"https:\/\/tech.lobobrothers.com\/wp-content\/uploads\/2020\/05\/server-2891812_1920.jpg.webp","articleSection":["Cloud Infraestructures","Linux World","Open Source"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/tech.lobobrothers.com\/en\/balance-wordpress\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/tech.lobobrothers.com\/en\/balance-wordpress\/","url":"https:\/\/tech.lobobrothers.com\/en\/balance-wordpress\/","name":"WORDPRESS BALANCING - LBT","isPartOf":{"@id":"https:\/\/tech.lobobrothers.com\/en\/#website"},"primaryImageOfPage":{"@id":"https:\/\/tech.lobobrothers.com\/en\/balance-wordpress\/#primaryimage"},"image":{"@id":"https:\/\/tech.lobobrothers.com\/en\/balance-wordpress\/#primaryimage"},"thumbnailUrl":"https:\/\/tech.lobobrothers.com\/wp-content\/uploads\/2020\/05\/server-2891812_1920.jpg.webp","datePublished":"2020-05-22T12:50:52+00:00","dateModified":"2025-02-01T12:26:07+00:00","description":"In this scenario we will have a balancer and 2 vps from a service provider, the procedure for more servers is exactly the same, being...","breadcrumb":{"@id":"https:\/\/tech.lobobrothers.com\/en\/balance-wordpress\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/tech.lobobrothers.com\/en\/balance-wordpress\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/tech.lobobrothers.com\/en\/balance-wordpress\/#primaryimage","url":"https:\/\/tech.lobobrothers.com\/wp-content\/uploads\/2020\/05\/server-2891812_1920.jpg.webp","contentUrl":"https:\/\/tech.lobobrothers.com\/wp-content\/uploads\/2020\/05\/server-2891812_1920.jpg.webp","width":1920,"height":1440,"caption":"Quincecreative"},{"@type":"BreadcrumbList","@id":"https:\/\/tech.lobobrothers.com\/en\/balance-wordpress\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/tech.lobobrothers.com\/en\/"},{"@type":"ListItem","position":2,"name":"WORDPRESS BALANCING"}]},{"@type":"WebSite","@id":"https:\/\/tech.lobobrothers.com\/en\/#website","url":"https:\/\/tech.lobobrothers.com\/en\/","name":"Tech LBT","description":"Como apasionados de la tecnolog\u00eda y amantes del open source creamos este blog con art\u00edculos interesantes obre linux, cloud, open source, criptomonedas y ciberseguridad","publisher":{"@id":"https:\/\/tech.lobobrothers.com\/en\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/tech.lobobrothers.com\/en\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/tech.lobobrothers.com\/en\/#organization","name":"Lobo Brothers Technology","url":"https:\/\/tech.lobobrothers.com\/en\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/tech.lobobrothers.com\/en\/#\/schema\/logo\/image\/","url":"https:\/\/tech.lobobrothers.com\/wp-content\/uploads\/2019\/06\/logo_red.png","contentUrl":"https:\/\/tech.lobobrothers.com\/wp-content\/uploads\/2019\/06\/logo_red.png","width":110,"height":50,"caption":"Lobo Brothers Technology"},"image":{"@id":"https:\/\/tech.lobobrothers.com\/en\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/LoboBrothers\/","https:\/\/www.linkedin.com\/company\/lobobrothers\/about\/?viewAsMember=true"]},{"@type":"Person","@id":"https:\/\/tech.lobobrothers.com\/en\/#\/schema\/person\/11c359ab9896aa196007651fa6208beb","name":"TL","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/tech.lobobrothers.com\/en\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/a2d3b9e0b67bd28fe8248346c09cbe07?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/a2d3b9e0b67bd28fe8248346c09cbe07?s=96&d=mm&r=g","caption":"TL"}}]}},"post_mailing_queue_ids":[],"_links":{"self":[{"href":"https:\/\/tech.lobobrothers.com\/en\/wp-json\/wp\/v2\/posts\/2649","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tech.lobobrothers.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/tech.lobobrothers.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/tech.lobobrothers.com\/en\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/tech.lobobrothers.com\/en\/wp-json\/wp\/v2\/comments?post=2649"}],"version-history":[{"count":0,"href":"https:\/\/tech.lobobrothers.com\/en\/wp-json\/wp\/v2\/posts\/2649\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/tech.lobobrothers.com\/en\/wp-json\/wp\/v2\/media\/2651"}],"wp:attachment":[{"href":"https:\/\/tech.lobobrothers.com\/en\/wp-json\/wp\/v2\/media?parent=2649"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/tech.lobobrothers.com\/en\/wp-json\/wp\/v2\/categories?post=2649"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/tech.lobobrothers.com\/en\/wp-json\/wp\/v2\/tags?post=2649"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}