Last Revised: October 2, 2021
- Versions to install
- Configuring the Operating System
- Installing MariaDB
- Installing nginx
- Installing PHP
- Installing Redis
- Configuring HTTPS
- About this document
This tutorial has been created on a Clouding.io VPS. You can create your own VPS from 3€/month.
In addition, you have the possibility to create your VPS with the WordPress image in one click.
Versions to install
Operating System: CentOS 7
Control Panel: None
Web server: nginx
Database: MariaDB 10.3
Processor: PHP 7.3
Here we leave you a small installation manual from a basic operating system installation of CentOS 7.
Configuring the Operating System
The first thing is to make a first update and configuration of the operating system base.
yum clean all && yum -y upgrade yum -y install yum-utils curl vim unzip wget yum-config-manager --enable rhui-REGION-rhel-server-extras rhui-REGION-rhel-server-optional
Once the operating system is installed, the first thing we will configure will be the server time. In this case we will configure the time zone of Madrid.
timedatectl set-timezone 'Europe/Madrid' yum -y install ntp systemctl start ntpd systemctl enable ntpd systemctl status ntpd ntpq -p
In order to take full advantage of the latest versions, we will use the EPEL alternate repository.
yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm yum -y install http://rpms.remirepo.net/enterprise/remi-release-7.rpm yum -y install https://mirror.webtatic.com/yum/el7/webtatic-release.rpm yum clean all && yum -y upgrade
The next step will be the installation of the database. In this case we are going to use MariaDB 10.3. The first thing we will do is configure the download, and then its installation.
curl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | bash -s -- --mariadb-server-version=mariadb-10.3 yum clean all && yum -y upgrade yum -y install MariaDB-server MariaDB-client
Now that it is installed, we will proceed to the initial configuration. For this we will use the secure installation system, which will ask us some questions.
To the question of whether we want to change the password, depending on whether or not we have put in the installation, we will change it. In case you have not put any, it is highly recommended to put a strong password.
Set root password? [Y/n]: Y
To the rest of the questions, we will answer the following:
Remove anonymous users? [Y/n]: Y Disallow root login remotely? [Y/n]: Y Remove test database and access to it? [Y/n]: Y Reload privilege tables now? [Y/n]: Y
At this time we will have the database configured. Now we will make it run on the system restarts and start it.
systemctl stop mysql.service systemctl enable mysql.service systemctl start mysql.service
At this moment we have the database configured and we will proceed to the installation of the web server. In this case we are going to use nginx. To be up to date, we will not use the version that comes with the operating system, but a more updated and maintained one.
yum clean all && yum -y upgrade yum -y install nginx
Now that we have nginx installed, we are going to configure it to start at the system restarts automatically.
systemctl stop nginx.service systemctl enable nginx.service systemctl start nginx.service
At this time we already have the web server, so we are going to install and configure PHP to work properly with the database and the web server. In this case we are going to install PHP version 7.3. First we will do the installation of the most updated packages (which are not those that come with the operating system) and that in case of needing it, in addition, they would allow us to have several versions of PHP in parallel.
yum-config-manager --enable remi-php73 yum clean all && yum -y upgrade yum -y install php73-php php73-php-fpm php73-php-common php73-php-devel php73-php-cli php73-php-bcmath php73-php-pecl-crypto php73-php-gd php73-php-pecl-geoip php73-php-pecl-imagick php73-php-imap php73-php-json php73-php-mbstring php73-php-pecl-mcrypt php73-php-mysqlnd php73-php-opcache php73-php-soap php73-php-sodium php73-php-pecl-ssh2 php73-php-pecl-xdebug php73-php-xml php73-php-xmlrpc php73-php-pecl-zip
Now that we have PHP correctly installed, let’s activate it so that when the system restarts it runs automatically.
systemctl stop php-fpm.service systemctl enable php-fpm.service systemctl start php-fpm.service nginx -t nginx -s reload
To work with improvements in the performance of the object cache, we are going to leave Redis ready as a storage system.
yum clean all && yum -y upgrade yum -y install redis php73-php-phpiredis
Later, and in the same way as the rest of the elements, we are going to configure it to start automatically if the server is restarted.
systemctl stop redis.service systemctl enable redis.service systemctl start redis.service
As we are going to mount our website on a secure web server (HTTPS), we will need to install the Let’s Encrypt certificate generator, so that we will previously prepare the systems for the creation of secure keys.
openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
And at this time we will install the certbot certificate creation system.
yum clean all && yum -y upgrade yum -y install certbot-nginx
In order for the certificates to be updated automatically, we will activate a scheduled task (cron) once a day that automatically renews the certificates.
Once inside, we will configure, for example, that it runs at 06:45 every morning.
45 6 * * * certbot renew
From this moment we can restart the machine if we want, and we will have it ready to start its use and assemble the websites.
About this document
This document is regulated by the EUPL v1.2 license, published in WP SysAdmin and created by Javier Casares. Please, if you use this content in your website, your presentation or any material you distribute, remember to mention this site or its author, and having to put the material you create under EUPL license.