Innovate anywhere, anytime withruncode.io Your cloud-based dev studio.
Server Management

Php7 Hosting on Ubuntu Server with Nginx(LEMP Stack)

2022-07-20

LEMP STACK:

PHP7 is the latest version with a lot of performance improvements and everyone wants to update their servers and code to it. Let's see how to configure one and host your code.

Here we see the combination of ubuntu, Nginx, PHP-fpm, php7, mysql, vsftpd

Configuring Ubuntu server:

The first step is to disable password authentication and enable ssh key based authentication as it will give some protection towards server hacks.

Install Requirements:

sudo apt-get install nginx

sudo apt-get install mysql

sudo apt-get install php7.0-cli php7.0-fpm php7.0-mysql

Copy your project to /usr/share/nginx/www/ directory, of course you can have your project location based on your requirement but remember to specify its location in nginx configuration.

Now that we have all setup lets create nginx configuration.

cd /etc/nginx/site-available/

vi my_project.conf

server {

    listen 80;

    root /usr/share/nginx/www;

    index index.php index.html;

    server_name your_ip_or_domain_name;

    location / {

        try_files $uri $uri/ /index.php;

    }

    location ~ \.php$ {

        try_files $uri =404;

        fastcgi_split_path_info ^(.+\.php)(/.+)$;

        fastcgi_pass unix:/var/run/php7-fpm.sock;

       fastcgi_index index.php;

        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

        include fastcgi_params;

        fastcgi_buffers 16 16k;

        fastcgi_buffer_size 32k;

    }

}

The above configuration specifies that the project is served by port 80, the location / represents the root directory of your project, so any file that you request by specifying after your domain name will be search in / directory, here its your project root directory. The php7-fpm.sock file is genereted by php7-fpm which is used by nginx to communicate with your php project.

Now lets enable this project by linking it with sites-enable direcotry, run:

ln -s /etc/nginx/sites-available/my_project.conf /etc/nginx/sites-enabled/

Test your configuration, run:

nginx -t

if no errors, restart nginx

service nginx restart

By now your server server is deployed with LEMP stack.