Ubuntu 20.04

نحوه تنظیم برنامه Node.js برای تولید در اوبونتو 20.04

Node.js یک محیط زمان اجرای جاواسکریپت منبع باز برای ساخت برنامه های شبکه و سمت سرور مجازی است. این پلتفرم روی لینوکس ، macOS ، FreeBSD و ویندوز اجرا می شود. اگر چه میتوانید برنامه های Node.js را در خط فرمان اجرا کرد اما این آموزش روی چگونگی اجرای آنها به عنوان یک سرویس تمرکز دارد. این بدان معناست که به صورت خودکار در هنگام ریبوت یا خرابی ریستارت می شوند ، و می توانید از آنها در یک محیط تولید استفاده کنید.
در این آموزش ، محیط Node.js آماده تولید را روی یک سرور مجازی Ubuntu 20.04 واحد تنظیم خواهیم کرد. این سرور مجازی برنامه های Node.js را مدیریت می کند که توسط PM2 اداره می شود ، و برای کاربران دسترسی ایمن به برنامه از طریق پروکسی معکوس Nginx را فراهم میکند. سرور مجازی Nginx ، HTTPS را با استفاده از مجوز رایگان Let’s Encrypt ارائه میدهد.
پیش نیازها
این راهنما فرض می کند که موارد زیر را دارید:
• ستاپ سرور مجازی Ubuntu 20.04 ، همانطور که در راهنمای اولیه تنظیم سرور مجازی برای اوبونتو 20.04 شرح داده شده است. شما باید دارای یک کاربر غیر ریشه با امتیازات sudo و یک فایروال فعال باشید.
• نام دامنه که به IP عمومی سرور مجازی شما اشاره کند. در سراسر این آموزش از نام دامنه example.com استفاده می شود.
Nginx نصب شده باشد ، همانطور که در نحوه نصب Nginx در اوبونتو 20.04 آمده است.
• Nginx با SSL با استفاده از گواهی نامه های Let’s Encryptپیکربندی شده باشد. مقاله نحوه ایمن سازی Nginx با Let’s Encrypt در Ubuntu 20.04 روند کار را نشان می دهد.
هنگامی که پیش نیازها را تکمیل کردید ، سرور مجازی خواهید داشت که در صفحه https://example.com/ مکان نمای پیش فرض دامنه شما را ارائه می دهد
مرحله 1 – نصب Node.js
بیایید با نصب آخرین نسخه LTS از Node.js ، با استفاده از بایگانی های بسته NodeSource شروع کنیم.
ابتدا ، برای دسترسی به مطالب آن ، NodeSource PPA را نصب کنید. اطمینان حاصل کنید که در دیرکتوری هوم خود قرار دارید و از curl برای بازیابی اسکریپت نصب جدیدترین نسخه LTS Node.js از بایگانی های آن استفاده کنید.
$ cd ~

$ curl -sL https://deb.nodesource.com/setup_14.x -o nodesource_setup.sh

می توانید محتویات این اسکریپت را با nano یا ویرایشگر متن مورد نظر خود بررسی کنید:
$ nano nodesource_setup.sh

پس از بررسی اسکریپت، آن را با sudo اجرا کنید:
$ sudo bash nodesource_setup.sh

PPA به پیکربندی شما اضافه می شود و حافظه نهان بسته محلی به صورت خودکار به روز می شود. بعد از اجرای اسکریپت راه اندازی از Nodesource ، می توانید بسته Node.js را نصب کنید:
$ sudo apt install nodejs

برای بررسی اینکه کدام نسخه از Node.js را بعد از این مراحل اولیه نصب کرده اید ، تایپ کنید:
$ nodejs -v

Output
v14.4.0
توجه: هنگام نصب از NodeSource PPA ، اجرای Node.js به جای node ، nodejs نامیده می شود.
بسته nodejs شامل باینری های nodejs و npm ، مدیر بسته برای ماژول های Node است ، بنابراین نیازی نیست npm را بطور جداگانه نصب کنید.
npm از یک فایل پیکربندی در دیرکتوری هوم شما برای پیگیری به روزرسانی ها استفاده می کند. اگر اولین بار است که npm را اجرا می کنید. برای تأیید نصب npm و ایجاد فایل پیکربندی ، این دستور را اجرا کنید:
$ npm -v

Output
6.14.5
برای کار کردن برخی از بسته های npm (به عنوان مثال آنهایی که نیاز به کامپایل کد از منبع دارند) ، باید بسته build-essential را نصب کنید:
$ sudo apt install build-essential

اکنون ابزارهای لازم را برای کار با بسته های npm که نیاز به کامپایل کردن کد از منبع دارند ، در اختیار دارید.
با نصب زمان اجرای Node.js ، اجازه دهید به سراغ نوشتن یک برنامه Node.js برویم.
مرحله 2 – ایجاد یک برنامه Node.js
بیایید یک برنامه Hello World بنویسیم که “Hello World” را به هر درخواست HTTP بازگرداند. این برنامه نمونه به شما در تنظیم Node.js کمک می کند. می توانید آن را با برنامه شخصی خود جایگزین کنید – فقط مطمئن شوید که برنامه خود را اصلاح می کنید تا به آدرس های IP و پورت های مناسب گوش دهید.
ابتدا ، یک برنامه نمونه بنام hello.js ایجاد کنیم:
$ cd ~

$ nano hello.js
کد زیر را در فایل وارد کنید:
~/hello.js
const http = require(‘http’);

const hostname = ‘localhost’;
const port = 3000;

const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader(‘Content-Type’, ‘text/plain’);
res.end(‘Hello World!\n’);
});

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

فایل را ذخیره کرده و از ویرایشگر خارج شوید.
این برنامه Node.js به آدرس مشخص شده (localhost) و پورت (3000) گوش می دهد و ” Hello World!” را با کد موفقیت 200 HTTPبازمیگرداند. از آنجا که ما در حال گوش دادن به localhost هستیم ، کلاینت های از راه دور قادر به اتصال به برنامه ما نخواهند بود.
برای تست برنامه خود ، تایپ کنید:
$ node hello.js
خروجی زیر را دریافت خواهید کرد:
Output
Server running at http://localhost:3000/

توجه: اجرای یک برنامه Node.js به این روش ، دستورات اضافی را مسدود می کند تا اینکه با فشار دادن CTRL + C ، برنامه از بین برود.
برای تست برنامه ، جلسه پایانی دیگری را روی سرور مجازی خود باز کرده و با curl به localhost وصل کنید:
$ curl http://localhost:3000

اگر خروجی زیر را بدست آورید ، برنامه به درستی کار می کند و آدرس و پورت صحیح را گوش می دهد:
Output
Hello World!

اگر خروجی مورد انتظار را دریافت نکردید ، اطمینان حاصل کنید که برنامه Node.js شما در حال اجرا و تنظیم شده است تا به آدرس و پورت مناسب گوش دهید.
پس از اطمینان از کار کردن ، با فشار دادن CTRL + C ، برنامه را متوقف کنید (اگر قبلاً این کار را نکرده اید).
مرحله 3 – نصب PM2
بیایید PM2 ، مدیر فرآیند برنامه های Node.js را نصب کنیم. PM2 امکان daemonize کردن برنامه ها را فراهم می کند تا آنها به عنوان یک سرویس در پس زمینه اجرا شوند.
برای نصب جدیدترین نسخه PM2 روی سرور مجازی خود از npm استفاده کنید:
$ sudo npm install pm2@latest -g

گزینه -g به npm می گوید که ماژول را به صورت جهانی نصب کند ، تا در سطح سیستم موجود باشد.
بیایید ابتدا از دستور start pm2 برای اجرای برنامه خود ،یعنی hello.js ، در پس زمینه استفاده کنیم:
$ pm2 start hello.js

این دستور همچنین برنامه شما را به لیست فرآیند PM2 اضافه می کند ، که هر بار که صادر می شود، خروجی ارائه میدهد:
Output

[PM2] Spawning PM2 daemon with pm2_home=/home/sammy/.pm2
[PM2] PM2 Successfully daemonized
[PM2] Starting /home/sammy/hello.js in fork_mode (1 instance)
[PM2] Done.
┌────┬────
│ id │ name │ mode │ ↺ │ status │ cpu │ memory │
├────┼─────
│ 0 │ hello │ fork │ 0 │ online │ 0% │ 25.2mb │
└────┴────

همانطور که گفته شد ، PM2 بطور خودکار نام برنامه (بر اساس نام فایل ، بدون پسوند .js) و شناسه PM2 را اختصاص می دهد. PM2 همچنین اطلاعات دیگری مانند PID روند ، وضعیت فعلی آن و استفاده از حافظه را نگه میدارد.
در صورت خرابی یا توقف برنامه ها ، برنامه هایی که تحت PM2 در حال اجرا هستند به صورت خودکار مجدداً راه اندازی می شوند ، اما می توانیم با استفاده از دستور فرعی startup ، یک برنامه اضافی برای راه اندازی برنامه در هنگام شروع سیستم دریافت کنیم. این دستور فرعی برای ایجاد PM2 و فرآیندهای مدیریت شده آن روی بوت های سرور مجازی ، یک اسکریپت راه اندازی را ایجاد و پیکربندی می کند:
$ pm2 startup systemd

آخرین خط خروجی حاصل شامل دستورالعمل اجرا با امتیازات فوق العاده به منظور تنظیم PM2 برای شروع در زمان بوت است:
Output
[PM2] Init System found: systemd
sammy
[PM2] To setup the Startup Script, copy/paste the following command:
sudo env PATH=$PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 startup systemd -u sammy –hp /home/sammy

دستور را از خروجی اجرا کنید و نام کاربری خود را به جای Sammy قرار دهید:
$ sudo env PATH=$PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 startup systemd -u sammy –hp /home/sammy

به عنوان یک مرحله دیگر ، می توانیم لیست فرآیند PM2 و محیط های مربوطه را ذخیره کنیم:
$ pm2 save

اکنون یک واحد سیستمی ایجاد کرده اید که PM2 را برای کاربر خود در بوت اجرا می کند. این نمونه pm2 ، به نوبه خود ، hello.js را اجرا می کند.
سرویس را با systemctl شروع کنید:
$ sudo systemctl start pm2-sammy

اگر در این مرحله با خطایی مواجه شدید ، ممکن است نیاز به راه اندازی مجدد داشته باشید که می توانید با sudo reboot این کار را انجام دهید.
وضعیت واحد سیستمی را بررسی کنید:
$ systemctl status pm2-sammy

برای مرور کلی در مورد systemd ، لطفا مقاله ملزومات سیستمی: کار با سرویس ها ، واحدها و ژورنال را مرور کنید.
علاوه بر مواردی که ما پوشش داده ایم ، PM2 زیرمجموعه های زیادی را فراهم می کند که به شما امکان می دهد اطلاعات مربوط به برنامه های خود را مدیریت و جستجو کنید.
یک برنامه را با این دستور متوقف کنید (نام برنامه یا شناسه PM2 برنامه را مشخص کنید):
$ pm2 stop app_name_or_id

برنامه را ریستارت کنید:
$ pm2 restart app_name_or_id

برنامه هایی را که اکنون توسط PM2 مدیریت می شود لیست کنید:
$ pm2 list

اطلاعات مربوط به یک برنامه خاص را با استفاده از نام برنامه خود دریافت کنید:
$ pm2 info app_name

مانیتور فرآیند PM2 را می توان با دستور فرعی monit به دست آورد. وضعیت برنامه ، CPU و استفاده از حافظه را نشان می دهد:
$ pm2 monit

توجه داشته باشید که اجرای pm2 بدون هیچگونه آرگومان ، صفحه راهنما را نیز با استفاده از مثال نشان می دهد.
اکنون که برنامه Node.js شما توسط PM2 اجرا و مدیریت می شود ، بیایید پروکسی معکوس را تنظیم کنیم.
مرحله 4 – تنظیم Nginx به عنوان یک سرور مجازی پروکسی معکوس
برنامه شما روی localhost اجرا میشود و گوش می کند ، اما باید راهی برای دسترسی کاربران خود تنظیم کنید. ما سرور مجازی وب Nginx را به عنوان یک پروکسی معکوس برای این منظور تنظیم خواهیم کرد.
در آموزش پیش نیاز ، تنظیمات Nginx خود را در فایل /etc/nginx/sites-available/example.com تنظیم می کنید. این فایل را برای ویرایش باز کنید:
$ sudo nano /etc/nginx/sites-available/example.com

در بلوک سرور مجازی ، باید یک بلوک location / موجود را داشته باشید. محتوای آن بلوک را با پیکربندی زیر جایگزین کنید. اگر برنامه شما برای گوش دادن به پورت های مختلف تنظیم شده است ، قسمت هایلایت شده را به شماره درست پروت تغییر دهید:
/etc/nginx/sites-available/example.com
server {

location / {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection ‘upgrade’;
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}

}

این کار سرور مجازی را تنظیم می کند تا به درخواست های ریشه خود پاسخ دهد. با فرض اینکه سرور مجازی ما در example.com در دسترس باشد ، دسترسی به https://example.com/ از طریق یک مرورگر وب ، درخواست را به hello.js ارسال می کند و با گوش دادن به پورت 3000 در localhost ، به پورت 3000 می رسد.
برای دسترسی به سایر برنامه ها در همان سرور مجازی می توانید بلوک های موقعیت مکانی دیگری را به همان سرور مجازی اضافه کنید. به عنوان مثال ، اگر در پورت 3001 برنامه Node.js دیگری را نیز اجرا می کردید ، می توانید از طریق https://example.com/app2 به این بخش مکان اضافه کنید تا به آن دسترسی داشته باشید:
/etc/nginx/sites-available/example.com — Optional
server {

location /app2 {
proxy_pass http://localhost:3001;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection ‘upgrade’;
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}

}

پس از پایان یافتن بلوک های مکان برای برنامه های خود ، فایل را ذخیره کنید و از ویرایشگر خود خارج شوید.
با تایپ دستور زیر مطمئن شوید که هیچ خطای نحوی را وارد نکرده اید:
$ sudo nginx -t

Nginxرا ریستارت کنید:
$ sudo systemctl restart nginx

با فرض اینکه برنامه Node.js شما در حال اجرا است و برنامه شما و تنظیمات Nginx صحیح است ، اکنون باید از طریق پروکسی معکوس Nginx به برنامه خود دسترسی پیدا کنید. با دسترسی به URL سرور مجازی خود (آدرس IP عمومی یا نام دامنه آن) آن را امتحان کنید.
نتیجه
تبریک می گوییم! اکنون برنامه Node.js خود را تحت پروکسی معکوس Nginx روی سرور مجازی Ubuntu 20.04 اجرا میکنید. این تنظیم پروکسی معکوس به اندازه کافی انعطاف پذیر است تا دسترسی کاربران دیگر برنامه ها یا محتوای وب استاتیک را که می خواهید به اشتراک بگذارید ، در اختیار کاربران تان قرار دهد.

 

نحوه تنظیم برنامه Node.js برای تولید در اوبونتو 20.04

نحوه نصب وردپرس در اوبونتو 20.04 با پشته LAMP

نصب و پیکربندی Postfix به عنوان سرور SMTP به صورت Send-Only در اوبونتو 20.04

نحوه ایجاد یک گواهی SSL خود-امضا شده برای Apache در اوبونتو 20.04

نحوه متمرکز کردن ورود ها با Journald در اوبونتو 20.04

نحوه ایمن کردن Apache با Let’s Encrypt در Debian 9

نحوه نصب و ایمن سازی phpMyAdmin در Debian 9

نصب و پیکربندی Postfix به عنوان سرور SMTP به صورت Send-Only در Debian 9

نحوه نصب و پیکربندی Nextcloud در Debian 901

نحوه تنظیم Jupyter Notebook با پایتون 3 در Debian 9

 

 

خرید vps – خرید سرور مجازی – خرید سرور – سرور هلند – فروش vps – سرور مجازی آمریکا – خریدvps – سرور مجازی هلند – فروش سرور مجازی – سرور آمریکا – vps – سرور مجازی انگلیس – سرور مجازی آلمان – سرور مجازی کانادا – خرید vps آمریکا – خرید وی پی اس – سرور – خرید سرور مجازی هلند – vps خرید – سرور مجازی فرانسه – سرور مجازی هلند – خرید vps آمریکاخرید سرور مجازی ارزان هلندvpsخرید vps هلندخرید سرور مجازی آمریکاخرید vps فرانسهتست vpsسرور مجازی تستسرور مجازی ویندوزارزانترین vpsخرید وی پی اسvps ارزان – 


https://vpsgol.net/product/vps-germany/

https://vpsgol.net/product/vps-usa/

https://vpsgol.net/product/vps-france/

https://vpsgol.net/product/vps-canada/

https://vpsgol.net/product/vps-poland/

https://vpsgol.net/product/vps-netherlands/

https://vpsgol.net/product/vps-england/