When renting VPS, to run a WordPress website you need a set of the necessary software.
LEMP is the popular software group today. You must have heard the term accidentally. So what is LEM?
What is LEMP?
LEMP is an acronym for the following software groups: Linux, NGINX (called x engines), Maria DB and PHP.
Linux is an operating system line. Ubutun and CentOS are two popular Linux operating systems when building a VPS running WordPress website.
NGINX is a software web server responsible for handling requests from the browser. It is a web server with good performance compared to Apache.
Maria DB is the optimal version of the MySQL database.
PHP-FPM is responsible for handling PHP code, the language used to develop a WordPress website.
In the article today, I will show you how to install LEMP on CentOS 7 system.
After completing the article, you will install the complete LEMP using the latest software versions such as PHP 7.
Prepare
To perform the installation steps as below, you need to prepare:
- A brand new Linux server installs CentOS. You can buy VPS at Ramnode, Vultr or Linode
- Putty software to connect to the server with user root.
Step 1: Install NGINX on CentOS 7
Because NGINX does not have CentOS repository available, we must install the EPEL repository with the following command:
yum install epel-release -y
Next, we install NGINX:
yum install nginx -y
They start with Nginx with the following statement:
systemctl start nginx
Let nginx run when restarting VPS you use the following command:
systemctl enable nginx
To check if Nginx has successfully installed, open the browser and access the server’s IP address. If you see the following page is successful:
Step 2 Installing PHP 7.1 on CentOS 7
Your server is still new, so it may not have the wget utility. First, you need to install it:
yum instal wget -y
Now you need to install the repository containing the PHP 7.1 package
yum install yum-utils -y yum-config-manager --enable remi-php71
Next, install the PHP package:
yum --enablerepo=remi,remi-php71 install php-fpm php-common
Install some additional PHP modules. If you need to install later, refer to this command:
yum --enablerepo=remi,remi-php71 install php-opcache php-pecl-apcu php-cli php-pear php-pdo php-mysqlnd php-pgsql php-pecl-mongodb php-pecl-redis php-pecl-memcache php-pecl-memcached php-gd php-mbstring php-mcrypt php-xml -y
We need to take some steps to configure PHP to increase security and work with nginx.
First, you need to open php.ini with nano:
nano /etc/php.ini
Navigate to the line with cgi.fix_pathinfo to remove a comment as a # and change the value from 1 to 0.
After finishing editing press Ctrl + O and enter to save and Ctrl + X to exit.
By default, PHP will execute the latest PHP file if it can’t find the requested php file. Configuration like this prevents unwanted PHP execution.
cgi.fix_pathinfo=0
Tip : in nano you can use the shortcut Ctrl + W to find the word you want.
Next open the file /etc/php-fpm.d/ww w.conf
nano /etc/php-fpm.d/www.conf
Find the line where listen is listening to localhost with port 9000. You need to convert it to Unix socket. That is when the PHP engine will execute PHP at the server and send it to this address.
listen = /run/php-fpm/php-fpm.sock
Next, find listen.owner and listen. group , remove the comment and change the following:
listen.owner = nginx listen.group = nginx
Next change the line user = apache and group = apache to
user = nginx group = nginx
When the change is complete, save and exit nano. Then restart PHP-FPM:
systemctl restart php-fpm
Secure php-fpm.sock with the following 2 statements:
chmod 666 /run/php-fpm/php-fpm.sock chown nginx:nginx /run/php-fpm/php-fpm.sock
Restart php again:
systemctl restart php-fpm
NGINX shaped bridge
Above you have configured nginx working php. On the nginx side you also need to configure.
Open /etc/nginx/nginx.conf with nano:
nano /etc/nginx/nginx.conf
Surely the following line is in the server section:
include /etc/nginx/default.d/*.conf;
Get rid of nano. Create new file /etc/nginx/default.d/default.conf nano:
nano /etc/nginx/conf.d/default.conf
Copy and paste the code line into the open file in nano: (like replacing your_server_ip with your ip server)
server { listen 80; server_name your_server_ip; # note that these lines are originally from the "location /" block root /usr/share/nginx/html; index index.php index.html index.htm; location / { try_files $uri $uri/ =404; } error_page 404 /404.html; error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } location ~ \.php$ { try_files $uri =404; fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
This code will ensure how Nginx handles PHP code with FAST CGI.
Restart Nginx:
systemctl restart nginx
Has PHP test been run or not
Create file info.php in the following position:
nano /usr/share/nginx/html/info.php
Copy and paste the following line of code into the open file in nano:
< ? php phpinfo (); ?>
Now you can access the following address: http://yourserver’s IP address / info.php. If you see the screen the following is OK:
Step 3: Install Maria DB
Run the following command to install Maria DB:
yum install mariadb mariadb-server
Run Maria DB with the following command:
systemctl start mariadb.service
Run Maria DB when starting VPS with the following command:
systemctl enable mariadb.service
By default, Maria DB is not very secure. Run the following command to increase security for Maria DB.
/usr/bin/mysql_secure_installation
First, it will ask you to Enter current password for root. Now you don’t have the password for root, so type Enter.
Next, it asks Set Root Password? You type y and enter a password for the root account.
Later questions you go on choosing.
Finally, you restart Maria DB:
systemctl restart mariadb.service
Now that you have installed LEMP for CentOS 7.
If you encounter any difficulty, just leave a comment below.