How to Install LEMP Stack on Ubuntu 20.04 (Sinhala)

අද මම මේ ලිපියෙන් කතාකරන්න යන්නේ LEMP stack එක ගැන. මෙතැනදී LEMP stack එක කියන්නේ මොකක්ද, එක install කරන්නේ කොහොමද?, හරියට config කරන විදිහ වගේ දේවල් කතා කරන්න බලාපොරොත්තු වෙනවා. මුලින්ම අපි බලමු LEMP කියන්නේ මොකක්ද කියන එක ගැන කෙටියෙන්.

What is LEMP stack

දැන් බහුලවම බාවිතාකරන Web server එකක් තමයි LEMP Server කියන්නේ. LEMP කියන එක විස්තරාත්මකව කිව්වොත් Linux, Nginx, MySQL and PHP කියන එක තමයි අදහස් වෙන්නේ. මේකත් හරියටම LAMP server (Linux, Apache, MySQL and PHP) එක වගේමයි, වෙනස් වෙන්නේ මෙතැනදී Apache වෙනුවට Nginx ( “Engine-X”) බාවිතා වෙන එක. (LAMP server install කරන විදිහ මෙතනින් බලාගන්න පුළුවන්.) ඊළගට අපි බලමු LEMP Install කරන විදිහ.

Installation and Configurations of LEMP stack

මෙතැනදී මම L E M P ( Linux, Nginx, MySQL and PHP) කියන පිළිවෙලටම  install කරන්න පටන් ගන්නවා.

L- Linux

මුලින්ම L  ඒ කියන්නේ  Linux OS එක, එකට මම තෝරාගන්නේ Ubuntu 20.04 run වෙන VPS එකක් (linode, Digitalocean, Vultr, Upcloud, AWS හෝ google VPS එක වුනත් මේකට use කරන්න පුළුවන්). ඊළගට අපි vps එකට ssh log වෙන්න ඕනි.

ssh [email protected]_ip_address
E- Nginx ( “Engine-X”)

දැන් තියෙන්නේ  E අකුර ඒ කියන්නේ Nginx ( “Engine-X”), එකට මුලින්ම අපි root log වෙලා (නැත්තම් අපිට හැමවෙලාවෙම sudo කියල ඉස්සරහට යොදන්න වෙනවා.) update සහ upgrade කරන්න ඕනි. ඊළගට අපි Nginx Install කරගමු.

sudo su
apt update
apt upgrade
apt install nginx

Nginx හරියට Install වුනාද run වෙනවද බලන්න නම් status command එක බාවිතයෙන් හෝ server IP(domain) එකට ගිහින් බලන්න පුළුවන්.

service nginx status
http://server_domain_or_IP

LEMP Stack - nginx

මෙතැනදී අපිට /etc/nginx/ කියන location එකට ගියාම nginx config file ටික බලාගන්න පුළුවන්.

[email protected]:~# cd /etc/nginx/
[email protected]:/etc/nginx# ls
conf.d        fastcgi_params  koi-win     modules-available  nginx.conf    scgi_params      sites-enabled  uwsgi_params
fastcgi.conf  koi-utf         mime.types  modules-enabled    proxy_params  sites-available  snippets       win-utf

ඒ වගේම /var/www/html කියන location එකට ගියාම default website location එක බලාගන්න පුළුවන්.

[email protected]:/etc/nginx# cd /var/www/html
[email protected]:/var/www/html# ls
index.nginx-debian.html

index.nginx-debian.html file එකට log වෙලා එකේ තියෙන Welcome to nginx! කියන එක වෙනුවට Welcome to VJRanga! කියල වෙනස් කරලා බලමු. (just for fun)

file එක edite කරන්න මම use කරන්නේ nano editor එක

nano index.nginx-debian.html
 GNU nano 4.8 index.nginx-debian.html Modified 
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
body {
width: 35em;
margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif;
}
</style>
</head>
<body>
<h1>Welcome to VJRanga!</h1>
</body>
</html>

Ctrl + O යොදල save,  Ctrl + X යොදල exit වෙන්න.

දැන් අපිට server IP(domain) එකට ගියාම මේ විදිහට බලාගන්න පුළුවන්.

LEMP Stack - vjranga

 

M- MySQL

ඊළගට M ඒ කියන්නේ MySQL Install කරන්න ඕනි.

apt install mysql-server

මෙතනදීත් හරියට Install වුනාද run වෙනවද බලන්න status command එක use කරන්න පුළුවන්.

service mysql status

දැන් MySQL Install කරලා ඉවරයි එත් තව මේකේ security හදන්න ඕනි. එකට මේ command එක run කරන්න.

mysql_secure_installation

මෙතැනදී  තමන්ට  කැමති විදිහට Y  or  N යොදල වෙනස්කරගන්න පුළුවන්.(උදහරයක් විදිහට කිව්වොත් remotely root log වෙන්න ඕනි නම් එතනය Y යොදන්න පුළුවන්) මම හැම step එකටම Y දෙනවා.

  • root user ට හොද password එකක් දාන්න(2 = STRONG තෝරලා complex password එකක් දන එකක් දානවනම් හොදයි).
Securing the MySQL server deployment.

Connecting to MySQL using a blank password.

VALIDATE PASSWORD COMPONENT can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD component?

Press y|Y for Yes, any other key for No: y

There are three levels of password validation policy:

LOW    Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary                  file

Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 2
Please set the password for root here.

New password: 

Re-enter new password: 

Estimated strength of the password: 50 
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : y

  • anonymous users ල remove කරන්න.
By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL 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? (Press y|Y for Yes, any other key for No) : y
Success.

  • remotely root log එක Disallow කරන්න.
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? (Press y|Y for Yes, any other key for No) : y
Success.
  • test database ටික remove කරන්න.
By default, MySQL 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? (Press y|Y for Yes, any other key for No) : y
 - Dropping test database...
Success.

 - Removing privileges on test database...
Success.
  • privilege tables ටික reload කරන්න.
Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.

Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y
Success.

All done!

MySQL version එක check කරන්න  mysql --version command එක run කරන්න.

[email protected]:~# mysql --version
mysql Ver 8.0.23-0ubuntu0.20.04.1 for Linux on x86_64 ((Ubuntu)
P- PHP

මෙතැනදී  අපිට තියෙන්නේ php install කරන එක. FastCGI Process Manager (FPM) සහ mysql වලට අදාල Package විතරයි මෙතැනදී install කරන්නේ. මේකට තව Packages add වෙන්න පුළුවන් use කරන විදිහ අනුව.

apt install php-fpm php-mysql

PHP version එක check කරන්න  php --version command එක run කරන්න.

[email protected]:~# php --version
PHP 7.4.3 (cli) (built: Oct 6 2020 15:47:56) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
with Zend OPcache v7.4.3, Copyright (c), by Zend Technologies

අවසාන පියවර විදිහට PHP File එකක් Creat කරලා PHP Configuration test කරලා බලමු.

මුලින්ම  /var/www/html කියන location එකට ගිහින් info.php file එක Creat  කරන්න ඕනි. එකට පහලින් තියෙන command එක run කරන්න.

nano /var/www/html/info.php

දැන් info.php file එක nano editor එකෙන් open වෙනවා. එකට පහලින් තියෙන PHP code එක ඇතුලත් කරන්න.

<?php
phpinfo();
?>

Ctrl + O යොදල save,  Ctrl + X යොදල exit වෙන්න.

ඊළගට /etc/nginx/sites-available/ කියන location එකට ගිහින් එතන default config file එක edite කරන්න ඕනි.

මෙතැනදී පහල highlight කරලා තියෙන කොටස් add කරන්න.(php7.4 කියන තැනට කලින් version එක check කරාම එන version number එක දන්නා.)

server {
        listen 80 default_server;
        listen [::]:80 default_server;


        root /var/www/html;

        # Add index.php to the list if you are using PHP
        index index.php index.html index.htm index.nginx-debian.html;

        server_name _;

        location / {
                # First attempt to serve request as file, then
                # as directory, then fall back to displaying a 404.
                try_files $uri $uri/ =404;
        }

        location ~ \.php$ {
                include snippets/fastcgi-php.conf;
                fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
        }

        location ~ /\.ht {
                deny all;
        }

       
}

දැන් nginx server එක restart කරන්න.

systemctl reload nginx

ඊළගට  server එකේ domain name එකට හෝ IP address එකට ගිහින් /info.php කියන page එකට ගියාම පහල තියෙනවා වගේ විස්තරයක් බලාගන්න පුළුවන්.

http://server_domain_or_IP/info.php

LEMP Stack - phpinfo

Configuration test කරට පස්සේ මේ info.php file එක අයින් කරලා දන්න.

sudo rm /var/www/html/info.php

හරි දැන් අපි LEMP stack එක install කරලා එකේ basic configuration ටික කරලා ඉවරයි.

මම හිතනවා මේ ලිපිය ප්‍රයෝජනවත් වෙයි කියල. වැරදි අඩුපාඩු තියේනම් පහලින් comment එකක් දාලා දැනුවත් කරන්න.

ඊලග ලිපියෙන් හමුවෙමු 🙂