16.10/16.04-ൽ Nginx, MariaDB 10, PHP 7 (LEMP Stack) എങ്ങനെ ഇൻസ്റ്റാൾ ചെയ്യാം


ഡൈനാമിക് വെബ് ആപ്ലിക്കേഷനുകളും വെബ് പേജുകളും വിന്യസിക്കാൻ ഉപയോഗിക്കുന്ന ഒരു കൂട്ടം പാക്കേജുകളെ (ലിനക്സ് ഒഎസ്, എൻജിഎൻഎക്സ് വെബ് സെർവർ, MySQL\MariaDB ഡാറ്റാബേസ്, PHP സെർവർ സൈഡ് ഡൈനാമിക് പ്രോഗ്രാമിംഗ് ഭാഷ) പ്രതിനിധീകരിക്കുന്ന ചുരുക്കപ്പേരാണ് LEMP സ്റ്റാക്ക്.

ഉബുണ്ടു 16.10, ഉബുണ്ടു 16.04 സെർവർ/ഡെസ്uക്uടോപ്പ് പതിപ്പുകളിൽ Nginx-നുള്ള MariaDB 10, PHP 7, HTTP 2.0 പിന്തുണ എന്നിവയ്uക്കൊപ്പം ഒരു LEMP സ്റ്റാക്ക് എങ്ങനെ ഇൻസ്റ്റാൾ ചെയ്യാം എന്നതിനെക്കുറിച്ച് ഈ ട്യൂട്ടോറിയൽ നിങ്ങളെ നയിക്കും.

  1. ഉബുണ്ടു 16.04 സെർവർ പതിപ്പിന്റെ ഇൻസ്റ്റാളേഷൻ [നിർദ്ദേശങ്ങൾ ഉബുണ്ടു 16.10-ലും പ്രവർത്തിക്കുന്നു]

ഘട്ടം 1: Nginx വെബ് സെർവർ ഇൻസ്റ്റാൾ ചെയ്യുക

1. ഇൻറർനെറ്റിൽ സന്ദർശകർക്ക് വെബ് പേജുകൾ പ്രദർശിപ്പിക്കാൻ ഉപയോഗിക്കുന്ന ആധുനികവും റിസോഴ്uസ് കാര്യക്ഷമവുമായ വെബ് സെർവറാണ് Nginx. apt കമാൻഡ് ലൈൻ ഉപയോഗിച്ച് ഉബുണ്ടു ഔദ്യോഗിക ശേഖരണങ്ങളിൽ നിന്ന് Nginx വെബ് സെർവർ ഇൻസ്റ്റാൾ ചെയ്തുകൊണ്ട് ഞങ്ങൾ ആരംഭിക്കും.

$ sudo apt-get install nginx

2. അടുത്തതായി, Nginx ആരംഭിക്കുകയും പോർട്ട് 80-ൽ ബന്ധിപ്പിക്കുകയും ചെയ്തിട്ടുണ്ടോ എന്ന് സ്ഥിരീകരിക്കുന്നതിന് systemctl കമാൻഡുകൾ നൽകുക.

$ netstat -tlpn
$ sudo systemctl status nginx.service

സെർവർ ആരംഭിച്ചതായി നിങ്ങൾക്ക് സ്ഥിരീകരണം ലഭിച്ചുകഴിഞ്ഞാൽ, നിങ്ങൾക്ക് Nginx സ്ഥിരസ്ഥിതി വെബ് പേജ് സന്ദർശിക്കുന്നതിന് ഒരു ബ്രൗസർ തുറന്ന് HTTP പ്രോട്ടോക്കോൾ ഉപയോഗിച്ച് നിങ്ങളുടെ സെർവർ IP വിലാസത്തിലേക്കോ DNS റെക്കോർഡിലേക്കോ നാവിഗേറ്റ് ചെയ്യാം.

http://IP-Address

ഘട്ടം 2: Nginx HTTP/2.0 പ്രോട്ടോക്കോൾ പ്രവർത്തനക്ഷമമാക്കുക

3. ഉബുണ്ടു 16.04-ലെ Nginx ബൈനറികളുടെ ഏറ്റവും പുതിയ പതിപ്പിൽ ഡിഫോൾട്ടായി നിർമ്മിക്കുന്ന HTTP/2.0 പ്രോട്ടോക്കോൾ SSL-നൊപ്പം മാത്രം പ്രവർത്തിക്കുകയും വെബ് SSL വെബ് പേജുകൾ ലോഡുചെയ്യുന്നതിൽ വലിയ വേഗത മെച്ചപ്പെടുത്തുകയും ചെയ്യുന്നു.

ഉബുണ്ടു 16.04-ൽ Nginx-ൽ പ്രോട്ടോക്കോൾ പ്രവർത്തനക്ഷമമാക്കാൻ, ആദ്യം Nginx ലഭ്യമായ സൈറ്റുകളുടെ കോൺഫിഗറേഷൻ ഫയലുകളിലേക്ക് നാവിഗേറ്റ് ചെയ്യുകയും താഴെ പറയുന്ന കമാൻഡ് നൽകി സ്ഥിരസ്ഥിതി കോൺഫിഗറേഷൻ ഫയൽ ബാക്കപ്പ് ചെയ്യുകയും ചെയ്യുക.

$ cd /etc/nginx/sites-available/
$ sudo mv default default.backup

4. തുടർന്ന്, ഒരു ടെക്സ്റ്റ് എഡിറ്റർ ഉപയോഗിച്ച് താഴെ പറയുന്ന നിർദ്ദേശങ്ങളോടെ ഒരു പുതിയ സ്ഥിരസ്ഥിതി പേജ് സൃഷ്ടിക്കുക:

server {
        listen 443 ssl http2 default_server;
        listen [::]:443 ssl http2 default_server;

        root /var/www/html;

        index index.html index.htm index.php;

        server_name 192.168.1.13;

        location / {
                try_files $uri $uri/ =404;
        }

        ssl_certificate /etc/nginx/ssl/nginx.crt;
        ssl_certificate_key /etc/nginx/ssl/nginx.key;

        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers on;
        ssl_ciphers EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
        ssl_dhparam  /etc/nginx/ssl/dhparam.pem;
        ssl_session_cache shared:SSL:20m;
        ssl_session_timeout 180m;
        resolver 8.8.8.8 8.8.4.4;
        add_header Strict-Transport-Security "max-age=31536000;
        #includeSubDomains" always;


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

        location ~ /\.ht {
                deny all;
        }

}

server {
       listen         80;
       listen    [::]:80;
       server_name    192.168.1.13;
       return         301 https://$server_name$request_uri;
}

മുകളിലെ കോൺഫിഗറേഷൻ സ്uനിപ്പറ്റ് എല്ലാ SSL ലിസണിംഗ് ഡയറക്uടീവുകളിലേക്കും http2 പാരാമീറ്റർ ചേർത്ത് HTTP/2.0-ന്റെ ഉപയോഗം പ്രാപ്uതമാക്കുന്നു.

കൂടാതെ, എല്ലാ നോൺ-എസ്എസ്എൽ ട്രാഫിക്കും എസ്എസ്എൽ/ടിഎൽഎസ് ഡിഫോൾട്ട് ഹോസ്റ്റിലേക്ക് റീഡയറക്ട് ചെയ്യാൻ സെർവർ നിർദ്ദേശത്തിൽ ഉൾപ്പെടുത്തിയിരിക്കുന്ന ഉദ്ധരണിയുടെ അവസാന ഭാഗം ഉപയോഗിക്കുന്നു. കൂടാതെ, നിങ്ങളുടെ സ്വന്തം IP വിലാസവുമായോ DNS റെക്കോർഡുമായോ പൊരുത്തപ്പെടുന്നതിന് server_name നിർദ്ദേശം മാറ്റിസ്ഥാപിക്കുക (FQDN അഭികാമ്യം).

5. മുകളിലെ ക്രമീകരണങ്ങൾ ഉപയോഗിച്ച് നിങ്ങൾ Nginx ഡിഫോൾട്ട് കോൺഫിഗറേഷൻ ഫയൽ എഡിറ്റ് ചെയ്തുകഴിഞ്ഞാൽ, താഴെ പറയുന്ന കമാൻഡുകൾ എക്uസിക്യൂട്ട് ചെയ്യുന്നതിലൂടെ SSL സർട്ടിഫിക്കറ്റ് ഫയലും കീയും ജനറേറ്റ് ചെയ്യുകയും ലിസ്റ്റ് ചെയ്യുകയും ചെയ്യുക.

നിങ്ങളുടെ സ്വന്തം ഇഷ്uടാനുസൃത ക്രമീകരണങ്ങൾ ഉപയോഗിച്ച് സർട്ടിഫിക്കറ്റ് പൂരിപ്പിച്ച് നിങ്ങളുടെ DNS FQDN റെക്കോർഡ് അല്ലെങ്കിൽ വെബ് പേജ് ആക്uസസ് ചെയ്യാൻ ഉപയോഗിക്കുന്ന സെർവർ IP വിലാസവുമായി പൊരുത്തപ്പെടുന്നതിന് പൊതുവായ നാമ ക്രമീകരണം ശ്രദ്ധിക്കുക.

$ sudo mkdir /etc/nginx/ssl
$ sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/nginx/ssl/nginx.key -out /etc/nginx/ssl/nginx.crt
$ ls /etc/nginx/ssl/

6. കൂടാതെ, താഴെ പറയുന്ന കമാൻഡ് നൽകി ssl_dhparam നിർദ്ദേശ ലൈനിലെ മുകളിലെ കോൺഫിഗറേഷൻ ഫയലിൽ മാറ്റം വരുത്തിയ ശക്തമായ ഒരു DH സൈഫർ സൃഷ്ടിക്കുക:

$ sudo openssl dhparam -out /etc/nginx/ssl/dhparam.pem 2048

7. Diffie-Hellman കീ സൃഷ്ടിച്ചുകഴിഞ്ഞാൽ, Nginx കോൺഫിഗറേഷൻ ഫയൽ ശരിയായി എഴുതിയിട്ടുണ്ടോ എന്നും Nginx വെബ് സെർവറിന് പ്രയോഗിക്കാനാകുമെന്നും പരിശോധിച്ചുറപ്പിച്ച് താഴെയുള്ള കമാൻഡുകൾ പ്രവർത്തിപ്പിച്ച് മാറ്റങ്ങൾ പ്രതിഫലിപ്പിക്കുന്നതിന് ഡെമൺ പുനരാരംഭിക്കുക.

$ sudo nginx -t
$ sudo systemctl restart nginx.service

8. Nginx HTTP/2.0 പ്രോട്ടോക്കോൾ ഉപയോഗിക്കുന്നുണ്ടോ എന്ന് പരിശോധിക്കുന്നതിന് താഴെയുള്ള കമാൻഡ് നൽകുക. h2 പരസ്യപ്പെടുത്തിയ പ്രോട്ടോക്കോളിന്റെ സാന്നിധ്യം, HTTP/2.0 പ്രോട്ടോക്കോൾ ഉപയോഗിക്കുന്നതിന് Nginx വിജയകരമായി ക്രമീകരിച്ചിട്ടുണ്ടെന്ന് സ്ഥിരീകരിക്കുന്നു. എല്ലാ ആധുനിക കാലികമായ ബ്രൗസറുകളും ഡിഫോൾട്ടായി ഈ പ്രോട്ടോക്കോളിനെ പിന്തുണയ്ക്കണം.

$ openssl s_client -connect localhost:443 -nextprotoneg ''

ഘട്ടം 3: PHP 7 ഇന്റർപ്രെറ്റർ ഇൻസ്റ്റാൾ ചെയ്യുക

ഉബുണ്ടു ഔദ്യോഗിക ശേഖരണങ്ങളിൽ നിന്ന് php-fpm ബൈനറി പാക്കേജ് ഇൻസ്റ്റാൾ ചെയ്യുന്നതിലൂടെ ലഭിക്കുന്ന FastCGI പ്രോസസ് മാനേജരുടെ സഹായത്തോടെ ഡൈനാമിക് വെബ് ഉള്ളടക്കം സൃഷ്ടിക്കാൻ PHP ഡൈനാമിക് പ്രോസസ്സിംഗ് ഭാഷാ ഇന്റർപ്രെറ്ററിനൊപ്പം Nginx ഉപയോഗിക്കാം.

9. PHP7.0 പിടിച്ചെടുക്കുന്നതിനും Nginx വെബ് സെർവറുമായി ആശയവിനിമയം നടത്താൻ PHP-യെ അനുവദിക്കുന്ന അധിക പാക്കേജുകൾക്കും നിങ്ങളുടെ സെർവർ കൺസോളിൽ താഴെയുള്ള കമാൻഡ് നൽകുക:

$ sudo apt install php7.0 php7.0-fpm 

10. നിങ്ങളുടെ മെഷീനിൽ PHP7.0 ഇന്റർപ്രെട്ടർ വിജയകരമായി ഇൻസ്റ്റാൾ ചെയ്തുകഴിഞ്ഞാൽ, താഴെ പറയുന്ന കമാൻഡ് നൽകി php7.0-fpm ഡെമൺ ആരംഭിച്ച് പരിശോധിക്കുക:

$ sudo systemctl start php7.0-fpm
$ sudo systemctl status php7.0-fpm

11. സെർവർ ഡൈനാമിക് ഉള്ളടക്കത്തിനായി PHP FastCGI പ്രോസസ്സ് മാനേജർ ഉപയോഗിക്കുന്നതിന് Nginx-ന്റെ നിലവിലെ കോൺഫിഗറേഷൻ ഫയൽ ഇതിനകം കോൺഫിഗർ ചെയ്തിട്ടുണ്ട്.

PHP വ്യാഖ്യാതാവ് ഉപയോഗിക്കാൻ Nginx-നെ പ്രാപ്തമാക്കുന്ന സെർവർ ബ്ലോക്ക് ചുവടെയുള്ള ഉദ്ധരണിയിൽ അവതരിപ്പിച്ചിരിക്കുന്നു, അതിനാൽ സ്ഥിരസ്ഥിതി Nginx കോൺഫിഗറേഷൻ ഫയലിന്റെ കൂടുതൽ പരിഷ്uക്കരണങ്ങൾ ആവശ്യമില്ല.

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

ഒറിജിനൽ Nginx ഡിഫോൾട്ട് കോൺഫിഗറേഷൻ ഫയലിന്റെ കാര്യമാണ് കമന്റ് ചെയ്യാനും പരിഷ്uക്കരിക്കാനുമുള്ള നിർദ്ദേശങ്ങളുടെ സ്uക്രീൻഷോട്ട് ചുവടെ.

12. PHP FastCGI പ്രോസസ്സ് മാനേജറുമായുള്ള Nginx വെബ് സെർവർ ബന്ധം പരിശോധിക്കുന്നതിന് താഴെ പറയുന്ന കമാൻഡ് നൽകി ഒരു PHP info.php ടെസ്റ്റ് കോൺഫിഗറേഷൻ ഫയൽ ഉണ്ടാക്കുക, താഴെയുള്ള വിലാസം ഉപയോഗിച്ച് ഈ കോൺഫിഗറേഷൻ ഫയൽ സന്ദർശിച്ച് ക്രമീകരണങ്ങൾ പരിശോധിക്കുക: http://IP_or domain/info.php.

$ sudo su -c 'echo "<?php phpinfo(); ?>" |tee /var/www/html/info.php'

ചുവടെയുള്ള സ്uക്രീൻഷോട്ടിൽ ചിത്രീകരിച്ചിരിക്കുന്നതുപോലെ, PHP വേരിയബിൾസ് ബ്ലോക്കിൽ $_SERVER['SERVER_PROTOCOL'] എന്ന ലൈൻ കണ്ടെത്തി HTTP/2.0 പ്രോട്ടോക്കോൾ സെർവർ പരസ്യപ്പെടുത്തിയിട്ടുണ്ടോ എന്നും പരിശോധിക്കുക.

13. അധിക PHP7.0 മൊഡ്യൂളുകൾ ഇൻസ്റ്റാൾ ചെയ്യുന്നതിനായി ഒരു PHP മൊഡ്യൂൾ കണ്ടെത്തി അത് ഇൻസ്റ്റാൾ ചെയ്യാൻ apt search php7.0 കമാൻഡ് ഉപയോഗിക്കുക.

കൂടാതെ, നിങ്ങൾ WordPress അല്ലെങ്കിൽ മറ്റ് CMS ഇൻസ്റ്റാൾ ചെയ്യാൻ ഉദ്ദേശിക്കുന്ന സാഹചര്യത്തിൽ ഉപയോഗപ്രദമാകുന്ന ഇനിപ്പറയുന്ന PHP മൊഡ്യൂളുകൾ ഇൻസ്റ്റാൾ ചെയ്യാൻ ശ്രമിക്കുക.

$ sudo apt install php7.0-mcrypt php7.0-mbstring

14. PHP അധിക മൊഡ്യൂളുകൾ രജിസ്റ്റർ ചെയ്യുന്നതിന് താഴെയുള്ള കമാൻഡ് നൽകി PHP-FPM ഡെമൺ പുനരാരംഭിക്കുക.

$ sudo systemctl restart php7.0-fpm.service

ഘട്ടം 4: MariaDB ഡാറ്റാബേസ് ഇൻസ്റ്റാൾ ചെയ്യുക

15. അവസാനമായി, ഞങ്ങളുടെ LEMP സ്റ്റാക്ക് പൂർത്തിയാക്കുന്നതിന്, വെബ്uസൈറ്റ് ഡാറ്റ സംഭരിക്കാനും നിയന്ത്രിക്കാനും ഞങ്ങൾക്ക് MariaDB ഡാറ്റാബേസ് ഘടകം ആവശ്യമാണ്.

ഡാറ്റാബേസ് ആക്സസ് ചെയ്യുന്നതിന് MySQL മൊഡ്യൂൾ ഉപയോഗിക്കുന്നതിന് ചുവടെയുള്ള കമാൻഡ് പ്രവർത്തിപ്പിച്ച് MariaDB ഡാറ്റാബേസ് മാനേജ്മെന്റ് സിസ്റ്റം ഇൻസ്റ്റാൾ ചെയ്യുക, PHP-FPM സേവനം പുനരാരംഭിക്കുക.

$ sudo apt install mariadb-server mariadb-client php7.0-mysql
$ sudo systemctl restart php7.0-fpm.service

16. MariaDB ഇൻസ്റ്റാളേഷൻ സുരക്ഷിതമാക്കാൻ, ഉബുണ്ടു ശേഖരണങ്ങളിൽ നിന്ന് ബൈനറി പാക്കേജ് നൽകുന്ന സുരക്ഷാ സ്ക്രിപ്റ്റ് പ്രവർത്തിപ്പിക്കുക, അത് നിങ്ങളോട് ഒരു റൂട്ട് പാസ്uവേഡ് സജ്ജീകരിക്കാനും അജ്ഞാത ഉപയോക്താക്കളെ നീക്കം ചെയ്യാനും വിദൂരമായി റൂട്ട് ലോഗിൻ പ്രവർത്തനരഹിതമാക്കാനും ടെസ്റ്റ് ഡാറ്റാബേസ് നീക്കംചെയ്യാനും ആവശ്യപ്പെടും.

ചുവടെയുള്ള കമാൻഡ് നൽകി സ്ക്രിപ്റ്റ് പ്രവർത്തിപ്പിക്കുക, എല്ലാ ചോദ്യങ്ങൾക്കും അതെ ഉപയോഗിച്ച് ഉത്തരം നൽകുക. ഒരു ഗൈഡായി താഴെയുള്ള സ്ക്രീൻഷോട്ട് ഉപയോഗിക്കുക.

$ sudo mysql_secure_installation

17. സാധാരണ ഉപയോക്താക്കൾക്ക് സിസ്റ്റം സുഡോ പ്രത്യേകാവകാശങ്ങളില്ലാതെ ഡാറ്റാബേസ് ആക്uസസ് ചെയ്യാൻ കഴിയുന്ന തരത്തിൽ MariaDB കോൺഫിഗർ ചെയ്യുന്നതിന്, റൂട്ട് പ്രത്യേകാവകാശങ്ങളുള്ള MySQL കമാൻഡ് ലൈൻ ഇന്റർഫേസിലേക്ക് പോയി MySQL ഇന്റർപ്രെറ്ററിൽ താഴെയുള്ള കമാൻഡുകൾ പ്രവർത്തിപ്പിക്കുക:

$ sudo mysql 
MariaDB> use mysql;
MariaDB> update user set plugin=’‘ where User=’root’;
MariaDB> flush privileges;
MariaDB> exit

അവസാനമായി, MariaDB ഡാറ്റാബേസിലേക്ക് ലോഗിൻ ചെയ്ത് താഴെ പറയുന്ന കമാൻഡ് എക്സിക്യൂട്ട് ചെയ്തുകൊണ്ട് റൂട്ട് പ്രത്യേകാവകാശങ്ങളില്ലാതെ ഒരു അനിയന്ത്രിതമായ കമാൻഡ് പ്രവർത്തിപ്പിക്കുക:

$ mysql -u root -p -e 'show databases'

അതെല്ലാം! ഇപ്പോൾ നിങ്ങൾക്ക് ഉബുണ്ടു 16.10, ഉബുണ്ടു 16.04 സെർവർ എന്നിവയിൽ ക്രമീകരിച്ചിരിക്കുന്ന ഒരു LEMP സ്റ്റാക്ക് ഉണ്ട്, അത് ഡാറ്റാബേസുകളുമായി സംവദിക്കാൻ കഴിയുന്ന സങ്കീർണ്ണമായ ഡൈനാമിക് വെബ് ആപ്ലിക്കേഷനുകൾ വിന്യസിക്കാൻ നിങ്ങളെ അനുവദിക്കുന്നു.