Thu. Apr 2nd, 2020

How to install LEMP(Nginx PHP FastCGI MariaDB) in CentOS

3 min read

How to install LEMP(Nginx PHP FastCGI MariaDB) in CentOS

Make sure your system is up to date:

yum update

Install Nginx from EPEL

The fastest and easiest way to install Nginx is to use a third-party source EPEL

sudo yum install epel-release
yum update
yum install nginx

These commands refer to installing the EPEL repository, pulling the latest metadata, and then installing Nginx
Configure Nginx
After the Nginx installation is complete, it needs to be activated and started on systemd. You can use the systemctl command to do this.

systemctl enable nginx.service
systemctl start nginx.service

You can then check its status to ensure that nginx is always started

systemctl status nginx.service

Configure Nginx virtual host
Once nginx is installed, you need to configure the server block in the configuration file. Each server block requires a server and location directive. You can create separate files for the server block, or put them directly into a file /etc/nginx/nginx.conf. In this example, we use multiple configuration files. By default, Nginx will reference the .conf file in the /etc/nginx/conf.d directory.

/etc/nginx/conf.d/example.com.conf:

server {
listen 80;
server_name www.example.com example.com;
access_log /var/www/example.com/logs/access.log;
error_log /var/www/example.com/logs/error.log;

location / {
root /var/www/example.com/public_html;
index index.html index.htm index.php;
}
}

When you want to host additional websites, you can put the configuration file in the /etc/nginx/conf.d directory. Once the configuration file is created, you need to create a directory for your public html file and log directory:

mkdir -p /var/www/example.com/{public_html,logs}

After configuring the file virtual host, you need to restart nginx for the configuration to take effect

systemctl restart nginx.service

Deploying PHP FastCGI
If your website is written in PHP, you need to implement PHP-FastCGI in order for Nginx to properly process and parse PHP code. You can install using YUM from EPEL repository

yum install php-cli php spawn-fcgi

After PHP-FastCGI is installed, you need to create a script to start and control the php-cgi process.

/usr/bin/php-fastcgi:

#!/bin/sh
if [ `grep -c “nginx” /etc/passwd` = “1” ]; then
FASTCGI_USER=nginx
elif [ `grep -c “www-data” /etc/passwd` = “1” ]; then
FASTCGI_USER=www-data
elif [ `grep -c “http” /etc/passwd` = “1” ]; then
FASTCGI_USER=http
else
# Set the FASTCGI_USER variable below to the user that
# you want to run the php-fastcgi processes as

FASTCGI_USER=
fi

/usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -C 6 -u $FASTCGI_USER -f /usr/bin/php-cgi

After the script is created, set it to have executed permissions

chmod +x /usr/bin/php-fastcgi

Configure PHP-FastCGI as a service
After PHP-FastCGI is installed, it does not automatically register as a service with systemd. If you want to manage PHP-FastCGI more conveniently with systemd, you can configure it as a systemd service. Need to create a service file pointing to / usr / bin / php-fastcgi:

/etc/systemd/system/php-fastcgi.service:

[Unit]
Description=php-fastcgi systemd service script

[Service]
Type=forking
ExecStart=/usr/bin/php-fastcgi start

[Install]
WantedBy=multi-user.target

After the service file is created, you need to reload the systemd daemon to activate the service and then start it.

systemctl daemon-reload
systemctl enable php-fastcgi.service
systemctl start php-fastcgi.service

Install MariaDB
The official source of CentOS 7 is no longer MySQL, and MariaDB has been replaced, but rest assured that this is fully compatible with MySQL and the usage is the same.
Install MariaDB from official sources

yum install mariadb-server

After installation is complete, use systemctl to activate and start mariadb

systemctl enable mariadb.service
systemctl start mariadb.service

Use mysql_secure_installation command to configure MariaDB
mysql_secure_installation