How to Install Nginx, MariaDB, PHP ( LEMP ) on Centos 7

centos-lemp

LEMP is a complete package to run any web application on a server. LEMP signifies the Linux, Nginx, MySQL and Php. Nginx is used as the web server for hosting of an application whereas MySQL is used as systematic data storage of application & Php is popular server-side scripting language which is used for web development as well bridging the gap between application and the database.

 

Step 1. Open your EC2 Terminal and update your Packages.

# yum update

Step 2. Add the Centos EPEL Repository in your system..

# yum install epel-release -y

Step 3. Install Nginx webserver.

# yum install nginx -y

Step 4. Start Nginx server.

# service nginx start

Step 5. Now direct your browser to http://ip and you should see the Nginx page like this.

nginx-main-page

Step 6. Install MariaDB in your Machine by running bellow command from your terminal.

# yum install mariadb-server -y

Step 7. Start MariaDB Service.

# service mariadb start

Step 8. Configure MariaDB server by using below command.

# mysql_secure_installation
In order to log into MariaDB to secure it, we’ll need the current password for the root user. If you’ve just installed MariaDB, and you haven’t set the root password yet, the password will be blank, so you should just press enter here.

Enter current password for root (enter for none):

Note: – Press Enter to proceed further.
  
OK, successfully used password, moving on…Setting the root password ensures that nobody can log into the MariaDB root user without the proper authorisation.

Set root password? [Y/n] y


New password:  
                               Specify New Password for MariaDB
Re-enter new password:              Confirm Password by specifying again
 
Password updated successfully!
Reloading privilege tables..
… Success!
By default, a MariaDB installation has an anonymous user, allowing anyone to log into MariaDB without having to have a user account created for them. This is intended only for testing, and to make the installation
go a bit smoother. You should remove them before moving into a production environment.
  
Remove anonymous users? [Y/n] y
… Success!Normally, root should only be allowed to connect from ‘localhost’. This ensures that someone cannot guess at the root password from the network.
  
Disallow root login remotely? [Y/n] y

… Success!By default, MariaDB comes with a database named ‘test’ that anyone can access. This is also intended only for testing, and should be removed before moving into a production environment.
 
Remove test database and access to it? [Y/n] y

– Dropping test database…
… Success!
– Removing privileges on test database…
… Success!Reloading the privilege tables will ensure that all changes made so far will take effect immediately.
 
Reload privilege tables now? [Y/n] y
… Success!Cleaning up…All done! If you’ve completed all of the above steps, your MariaDB installation should now be secure.
Thanks for using MariaDB!

 

Step 9.  Execute below lines to get PHP 7 Repository in your system.

# rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
# rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
# rpm -Uvh http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm

Step 10. Install Php 7 by running bellow command from your terminal.

# yum install php70w php70w-mysql php70w-fpm -y

Step 11. Configure PHP 7 by modify the config file of php. Make sure to uncomment & change the ;cgi.fix_pathinfo=1 to cgi.fix_pathinfo=0.

# vi /etc/php.ini
cgi.fix_pathinfo=0

Step 12. Open php-fpm configuration file and modify the lines same as below.

# vi /etc/php-fpm.d/www.conf
user = nginx
group = nginx

listen = /var/run/php-fpm/php-fpm.sock
 
listen.owner = nginx
listen.group = nginx

Step 13. Restart php-fpm service.

# service php-fpm restart

Step 14. Configure Nginx for php by modify the config file of nginx.

# vi /etc/nginx/conf.d/default.conf
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;
	}
}

Step 15. Restart Nginx.

# service nginx restart

Step 16. The document root of the nginx webserver is /usr/share/nginx/html. Now we will create  PHP file (info.php) in /usr/share/nginx/html/  directory and call it through a browser. The file will display lots of useful details about our PHP installation, such as the installed PHP version.

# vi /usr/share/nginx/html/info.php
<?php
	phpinfo();
?>

Step 17.Restart Web Server.

# service nginx restart

Step 18. Finish up by visiting your php info page.The page should look like this.

http://ip/info.php

php-version-page-pic