Install Nginx Php Fpm Centos 7


Install Nginx Php Fpm Centos 7

Prerequisites

Before you start installing Nginx and Php-Fpm on CentOS 7, make sure the following prerequisites are in place.

  • CentOS 7 must be installed onto your machine.
  • Create a new user to run the Nginx web server.
  • The firewall should be disabled or opened up to allow access to Nginx server.
  • If you are using SELinux, ensure it is in permissive mode.
  • Make sure all the packages are up to date.

Now let’s start the installation.

Installing Nginx

Nginx is available in the default CentOS 7 repositories. To install it, issue the following command.


$ yum install nginx

Confirm if you need to install any additional packages and type y to continue.


Is this ok [y/d/N]: y

Once Nginx is installed, start its services and enable it to start automatically on system reboot.


$ systemctl start nginx
$ systemctl enable nginx

You can verify the status of the Nginx service by running the following command.


$ systemctl status nginx

Now check whether Nginx is running successfully by visiting the machine’s IP address in web browser.

Installing PHP-FPM

To install PHP-FPM, issue the following command.


$ yum install php php-fpm

Press y to confirm if you need to install any additional packages.


Is this ok [y/d/N]: y

Now start the PHP-FPM service and make sure it starts automatically on system reboot.


$ systemctl start php-fpm
$ systemctl enable php-fpm

You can verify the status of the PHP-FPM service by running the following command.


$ systemctl status php-fpm

Configure Nginx for PHP-FPM

By default, Nginx uses the /usr/share/nginx/html directory for serving the website files. To configure Nginx to serve PHP, open its configuration file.


$ nano /etc/nginx/conf.d/default.conf

And add the below lines of code at the end of the file.


location ~ .php$ {
try_files $uri =404;
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}

Save the changes and exit the file. Now, create a PHP file for testing the setup. Create a symbolic link of this file in the web document root directory.


$ touch /usr/share/nginx/html/test.php
$ ln -s /usr/share/nginx/html/test.php /var/www/html/test.php

Then, open the test.php file and add the following code to it.


phpinfo();
?>

Save the file and restart the Nginx service.


$ systemctl restart nginx

Now open the URL http://your_server_ip/test.php in your web browser. If you see the output of ., then your setup was successful.

Configuring SELinux

By default, SELinux blocks access to Nginx. You need to update the SELinux rules to allow Nginx access. To do that, install the policycoreutils package, which includes the semanage commands.


$ yum install policycoreutils-python

Now, run the following command. This command will create the necessary SELinux rules to allow access to Nginx.


$ semanage port -a -t http_port_t -p tcp 8080

Now restart the Nginx service to apply the SELinux rule changes.


$ systemctl restart nginx

Configuring Firewall

If you have a firewall enabled, you need to open the TCP port 8080 that we used to serve the Nginx server. To do that, run the following command.


$ firewall-cmd --permanent --zone=public --add-port=8080/tcp
$ firewall-cmd --reload

Now you can access the server using port 8080.

Conclusion

In this article, we have seen how to install and configure Nginx and PHP-FPM on CentOS 7. We also discussed configuring SELinux and firewall in order to make our setup work correctly.

FAQs

Q1. How do I confirm that Nginx is running?

Answer: The easiest way to confirm that Nginx is running is to visit the machine’s IP address in web browser.

Q2. How do I check PHP-FPM service status?

Answer: To check the status of PHP-FPM, use the command `systemctl status php-fpm`.

Q3. How do I configure Nginx for PHP-FPM?

Answer: To configure Nginx for PHP-FPM, open the `/etc/nginx/conf.d/default.conf` file and add the following lines of code at the end.

location ~ .php$ {
try_files $uri =404;
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}

Thank you for reading this article. If you liked this article, please consider checking out our other articles.

Leave a Reply

Your email address will not be published. Required fields are marked *