Bii o ṣe le Tunto Nginx bi Aṣoju Aṣoju fun Nodejs App


Nodejs jẹ orisun ṣiṣi ọfẹ, iwuwo fẹẹrẹ, ti iwọn ati ilana JavaScript daradara ti a ṣe lori ẹrọ V8 JavaScript ti Chrome, ati pe o nlo iṣẹlẹ-iwakọ, awoṣe I/O ti kii ṣe idiwọ. Nodejs wa ni gbogbo ibi bayi, o si ti di olokiki pupọ fun sọfitiwia idagbasoke lati awọn oju opo wẹẹbu, awọn ohun elo ayelujara si awọn iṣẹ nẹtiwọọki ati diẹ sii.

Nginx jẹ orisun ṣiṣi, olupin HTTP iṣẹ ṣiṣe giga, iwọntunwọnsi fifuye ati sọfitiwia aṣoju aṣoju. O ni ede iṣeto ni taara ti o jẹ ki o rọrun lati tunto. Ninu nkan yii, a yoo fihan bi a ṣe le tunto Nginx bi aṣoju iyipada fun awọn ohun elo Nodejs.

Akiyesi: Ti eto rẹ ba nṣiṣẹ tẹlẹ pẹlu Nodejs ati NPM, ati pe ohun elo rẹ nṣiṣẹ lori ibudo kan, lọ taara si Igbese 4.

Igbesẹ 1: Fifi Nodejs ati NPM sori Linux

Ẹya tuntun ti Node.js ati NPM wa lati fi sori ẹrọ lati ibi ipamọ pinpin awọn pinpin kaakiri NodeSource Enterprise Linux, Fedora, Debian ati Ubuntu, eyiti o ni itọju nipasẹ oju opo wẹẹbu Nodejs ati pe iwọ yoo nilo lati ṣafikun rẹ si eto rẹ lati ni anfani lati fi awọn Nodejs tuntun ati awọn idii NPM sori ẹrọ bi o ti han.

---------- Install Node.js v11.x ---------- 
$ curl -sL https://deb.nodesource.com/setup_11.x | sudo -E bash -
$ sudo apt-get install -y nodejs

---------- Install Node.js v10.x ----------
$ curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
$ sudo apt-get install -y nodejs
---------- Install Node.js v11.x ---------- 
$ curl -sL https://rpm.nodesource.com/setup_11.x | bash -

---------- Install Node.js v10.x ----------
$ curl -sL https://rpm.nodesource.com/setup_10.x | bash -

Igbesẹ 2: Ṣiṣẹda Ohun elo Nodejs kan

Fun idi ifihan, a yoo ṣẹda ohun elo apẹẹrẹ ti a pe ni “sysmon”, eyiti yoo ṣiṣẹ lori ibudo 5000 bi o ti han.

$ sudo mkdir -p /var/www/html/sysmon
$ sudo vim /var/www/html/sysmon/server.js

Daakọ ati lẹẹ mọ koodu atẹle ni faili server.js (rọpo 192.168.43.31 pẹlu olupin IP rẹ).

const http = require('http');

const hostname = '192.168.43.31';
const port = 5000;

const server = http.createServer((req, res) => {
	res.statusCode = 200;
  	res.setHeader('Content-Type', 'text/plain');
  	res.end('Sysmon App is Up and Running!\n');
});

server.listen(port, hostname, () => {
  	console.log(`Server running at http://${hostname}:${port}/`);
});

Fipamọ faili naa ki o jade.

Bayi bẹrẹ ohun elo ipade rẹ ni lilo pipaṣẹ atẹle (tẹ Ctrl + x lati fopin si).

$ sudo node /var/www/html/sysmon/server.js
OR
$ sudo node /var/www/html/sysmon/server.js &   #start it in the background to free up your terminal

Bayi ṣii ẹrọ aṣawakiri kan ki o wọle si ohun elo rẹ ni URL http://198.168.43.31:5000 .

Igbesẹ 3: Fi Aṣoju Aṣoju Nginx sii ni Lainos

A yoo fi ẹya tuntun ti Nginx sori ẹrọ lati ibi ipamọ osise, bi a ṣe han ni isalẹ.

Ṣẹda faili kan ti a pe ni /etc/apt/sources.list.d/nginx.list ki o fi awọn ila wọnyi si.

deb http://nginx.org/packages/ubuntu/ bionic nginx
deb-src http://nginx.org/packages/ubuntu/  bionic nginx

Nigbamii, ṣafikun bọtini iforukọsilẹ ibi ipamọ, ṣe imudojuiwọn atọka package eto rẹ ki o fi package nginx sii bi atẹle.

$ wget --quiet http://nginx.org/keys/nginx_signing.key && sudo apt-key add nginx_signing.key
$ sudo apt update
$ sudo apt install nginx

Ṣẹda faili ti a npè ni /etc/yum.repos.d/nginx.repo ki o lẹẹ ọkan ninu awọn atunto ni isalẹ.

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck=0 enabled=1
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/rhel/$releasever/$basearch/ gpgcheck=0 enabled=1

Akiyesi: Nitori awọn iyatọ laarin bawo ni CentOS ati RHEL, o jẹ dandan lati rọpo $releasever pẹlu boya 6 (fun 6.x) tabi 7 (fun 7.x), da lori ẹya OS rẹ.

Nigbamii, ṣafikun bọtini iforukọsilẹ ibi-ipamọ ati fi package nginx sii bi o ti han.

# wget --quiet http://nginx.org/keys/nginx_signing.key && rpm --import nginx_signing.key
# yum install nginx

Lẹhin ti o ti fi Nginx sori ẹrọ ni aṣeyọri, bẹrẹ, mu ki o bẹrẹ ni idojukọ ni ibẹrẹ eto ati ṣayẹwo ti o ba wa ni oke ati ṣiṣe.

---------- On Debian/Ubuntu ---------- 
$ sudo systemctl status nginx
$ sudo systemctl enable nginx
$ sudo systemctl status nginx

---------- On CentOS/RHEL ---------- 
# systemctl status nginx
# systemctl enable nginx
# systemctl status nginx

Ti o ba n ṣiṣẹ ogiriina eto, o nilo lati ṣii ibudo 80 (HTTP), 443 (HTTPS) ati 5000 (ohun elo Node), eyiti olupin ayelujara ngbọ fun awọn ibeere asopọ alabara.

---------- On Debian/Ubuntu ---------- 
$ sudo ufw allow 80/tcp
$ sudo ufw allow 443/tcp
$ sudo ufw allow 5000/tcp
$ sudo ufw reload

---------- On CentOS/RHEL ---------- 
# firewall-cmd --permanent --add-port=80/tcp
# firewall-cmd --permanent --add-port=443/tcp
# firewall-cmd --permanent --add-port=5000/tcp
# firewall-cmd --reload 

Igbesẹ 4: Tunto Nginx bi Aṣoju Aṣoju Fun Ohun elo Nodejs

Bayi ṣẹda faili iṣeto iṣeto bulọọki olupin fun ohun elo Node rẹ labẹ /etc/nginx/conf.d/ bi o ti han.

$ sudo vim /etc/nginx/conf.d/sysmon.conf 

Daakọ ati lẹẹ iṣeto ni atẹle (yipada 192.168.43.31 pẹlu IP olupin rẹ ati tecmint.lan pẹlu orukọ orukọ rẹ).

server {
    listen 80;
    server_name sysmon.tecmint.lan;

    location / {
        proxy_set_header   X-Forwarded-For $remote_addr;
        proxy_set_header   Host $http_host;
        proxy_pass         http://192.168.43.31:5000;
    }
}

Fipamọ awọn ayipada ki o jade kuro ni faili naa.

Ni ipari, tun bẹrẹ iṣẹ Nginx lati ṣe awọn ayipada to ṣẹṣẹ.

$ sudo systemctl restart nginx
OR
# systemctl restart nginx

Igbesẹ 5: Ohun elo Nodejs Wiwọle nipasẹ Ẹrọ aṣawakiri Wẹẹbu

Bayi o yẹ ki o ni anfani lati wọle si ohun elo Node rẹ laisi pipese ibudo ti o ngbọ lori, ninu URL naa: eyi jẹ ọna ti o rọrun pupọ fun awọn olumulo lati wọle si.

http://sysmon.tecmint.lan 

Fun orukọ ibugbe idanwo rẹ lati ṣiṣẹ, o nilo lati ṣeto DNS agbegbe nipa lilo faili/ati be be/awọn ogun, ṣii ki o ṣafikun laini isalẹ rẹ ninu rẹ (ranti lati yipada 192.168.43.31 pẹlu olupin rẹ IP ati tecmint.lan pẹlu orukọ doamin rẹ bi tẹlẹ).

192.168.43.31 sysmon.tecmint.lan

Gbogbo ẹ niyẹn! Ninu nkan yii, a fihan bi a ṣe le tunto Nginx bi aṣoju iyipada fun awọn ohun elo Nodejs. Lo fọọmu esi ni isalẹ lati beere eyikeyi ibeere tabi pin awọn ero rẹ nipa nkan yii.