از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
اجرای Node Apps با Forever برای بسیاری از افراد، در واقع اجرای کد شما در یک محیط تولید یک فکر بعدی است، و فقط نوشتن کد چالش واقعی است. در حالی که این بیشتر در تجربیات من صادق است، پیدا کردن یک راه قابل اعتماد و آسان برای اجرای برنامه خود می تواند بسیار دشوار باشد. وجود دارد…
سرفصلهای مطلب
معرفی
برای بسیاری از افراد، اجرای کد شما در یک محیط تولیدی یک فکر بعدی است، و فقط نوشتن کد چالش واقعی است. در حالی که این بیشتر در تجربیات من صادق است، پیدا کردن یک راه قابل اعتماد و آسان برای اجرای برنامه خود می تواند بسیار دشوار باشد.
هنگام اجرای برنامه(های) خود باید چند نکته را در نظر بگیرید.
- خروجی/لاگ ها کجا خواهند رفت؟
- اگر برنامه از کار بیفتد چه اتفاقی می افتد؟
- چگونه می توانم تمام فرآیندهای دیمون خود را پیگیری کنم؟
- چگونه برای هر کدام تنظیمات ارائه کنم process?
این جایی است که Node forever
بسته واقعا مفید است این به شما کمک می کند تا به راحتی تمام مشکلات بالا و موارد دیگر را مدیریت کنید که در چند بخش بعدی توضیح خواهم داد.
Forever چیست؟
forever
هست یک command-line ابزاری برای برنامه های Node که به طور کامل با جاوا اسکریپت نوشته شده اند. این به معنای ساده کردن زندگی شما در یک محیط تولید با مدیریت (شروع، توقف، راه اندازی مجدد و غیره) فرآیندهای Node و تنظیمات آنها است. می توانید از آن استفاده کنید روی خط فرمان یا به صورت برنامه ای (از طریق forever-monitor
) در کد Node شما.
شما می توانید این تنظیمات را از طریق خط فرمان یا یک فایل پیکربندی JSON مشخص کنید. من شخصاً فایل JSON را ترجیح میدهم زیرا میتوانید چندین فرآیند Node را در یک فایل پیکربندی کنید و راهاندازی همه فرآیندهای خود را در یک زمان آسان میکند. به این ترتیب من از تقسیم یکپارچه بزرگ به چندین سرویس مستقل دریغ نمی کنم زیرا مدیریت آنها به لطف ابزارهایی مانند forever
.
در زیر با دویدن کار می کند سرور Flatiron به عنوان یک شیطان process برای مدیریت سایر فرآیندهای دیمون خود، بنابراین اگر/زمانی که کد شما از کار افتاد و از کار افتاد، forever
وجود خواهد داشت تا به طور خودکار آن را مجدداً راه اندازی کند و امیدوارم از خرابی کاربران خود جلوگیری شود. در حال دویدن forever
با یک سرور Flatiron یک راه آسان برای راهاندازی و راهاندازی ابزار در حین نظارت بر ورودی کاربر، و به لطف پلاگین CLI این برای آنها آسان بود forever
توسعه دهندگان انجام دهند. اگر می خواهید برنامه ای مانند forever
(یعنی یک دیمون طولانی مدت process که دستورات کاربر را دریافت می کند) پس من به شدت توصیه می کنم این کار را به این طریق انجام دهید. کارها را بسیار ساده تر خواهد کرد.
ارتباط بین فرآیندی از طریق سوکت ها انجام می شود که توسط سطح بالا مدیریت می شود nssocket
کتابخانه فایلهای سوکتی که امکان باز شدن مجدد ارتباط بین فرآیندها را فراهم میکنند، در آن قرار دارند (forever.root)/socks
. طبیعتاً پیامهای بین فرآیندها به صورت JSON سریالسازی میشوند. این یک کتابخانه مفید دیگر برای بررسی اینکه آیا می خواهید ارتباطات سوکت مبتنی بر رویداد را بررسی کنید.
باید توجه داشته باشم، یک ویژگی مهم در مورد forever
(و دیگر process ابزارهای مدیریتی مانند آن) این است که می توانید از آن برای برنامه های غیر Node نیز استفاده کنید، مانند پایتون، Rubyو غیره -c
، یا پرچم فرمان (که بعداً خواهید دید)، به شما امکان می دهد بگویید forever
چگونه اپلیکیشن خود را اجرا کنیم با استفاده از این، می توانید به آن بگویید که از هر مفسر دیگری مانند پایتون برای اجرا استفاده کند:
$ forever start -c python py_script.py
بنابراین حتی اگر Node را دوست ندارید یا فقط نیاز به استفاده از زبان دیگری برای پروژه دارید، به خاطر داشته باشید که این هنوز برای شما مفید است.
روش استفاده از Forever
خوب، روی به بخش مهم، روش استفاده از این لعنتی. بیایید با یک مثال ساده شروع کنیم، مانند شروع و توقف یک برنامه وب. برای مثال، ما سرور Express “Hello world” را راه اندازی و متوقف می کنیم:
// index.js
var express = require('express');
var app = express();
app.get('/', function (req, res) {
res.send('Hello World!');
});
var server = app.listen(8080);
نصب forever
با npm install forever -g
، و سرور را با:
$ forever start -a index.js
با این کار برنامه Express به عنوان پس زمینه راه اندازی می شود process. این -a
پرچم گزارشها را به فایل گزارش پیشفرض واقع در آن اضافه میکند forever
‘s root فهرست راهنما (~/.forever
به صورت پیش فرض روی سیستم های یونیکس). شما نمی توانید start
برنامه بدون این پرچم اگر فایل گزارش از قبل وجود داشته باشد.
در حال اجرا را بررسی کنید process با forever list
:
info: Forever processes running
data: uid command script forever pid id logfile uptime
data: (0) moMB /Users/scott/.nvm/versions/node/v4.1.2/bin/node index.js 21389 21390 /Users/scott/.forever/moMB.log 0:0:0:3.345
برای متوقف کردن process، فقط با شناسه به آن مراجعه کنید (21390
), UID (moMB
، PID (21389
)، فهرست مطالب (0
، یا نام اسکریپت (index.js
):
$ forever stop index.js
اگرچه این خوب است، اما می تواند بهتر باشد. index.js
برای برنامه ما خیلی منحصر به فرد نیست، و PID به سختی به خاطر میآورد، پس چرا نام بهتری برای آن انتخاب کنید؟ به این ترتیب شما مجبور نیستید به دویدن ادامه دهید forever list
برای دریافت اطلاعات روی دویدن شما process.
$ forever start -a --uid myapp index.js
اکنون می توانید آن را متوقف کنید:
$ forever stop myapp
دو استدلال روی خط فرمان چندان بد نیست، اما زمانی که شروع به اضافه کردن آرگومانهایی برای فایلهای گزارش، فایلهای اجرایی Node مختلف، دایرکتوریهای کاری و غیره کنید، میتواند کمی زیاد شود. بنابراین به جای اینکه همه چیز را مشخص کنید روی در خط فرمان، می توانید از یک فایل پیکربندی JSON مانند این استفاده کنید:
{
// Comments are allowed!
"uid": "myapp",
"append": true,
"watch": true,
"script": "index.js",
"sourceDir": "/home/scott/myapp",
"command": /Users/scott/.nvm/versions/node/v4.1.2/bin/node
}
با فرض اینکه این فایل در دایرکتوری کاری فعلی شما و با نام است forever.json
، از آن به صورت زیر استفاده کنید:
$ forever start ./forever.json
همانطور که می بینید، حتی می توانید بگویید forever
از کدام نسخه Node استفاده کنید، که وقتی چندین برنامه دارید واقعا راحت است روی یک سرور واحد که نیاز به نسخه های مختلف دارد (مانند io.js
چنگال).
(
{
// App using Node v0.11.8
"uid": "myapp1",
"append": true,
"watch": true,
"script": "index.js",
"sourceDir": "/Users/scott/myapp1",
"command": "/Users/scott/.nvm/versions/node/v0.11.8/bin/node"
},
{
// App using io.js
"uid": "myapp2",
"append": true,
"watch": true,
"script": "index.js",
"sourceDir": "/Users/scott/myapp2",
"command": "/Users/scott/.nvm/versions/io.js/v2.2.1/bin/node",
"args": ("--port", "8080")
}
)
نتیجه
چند ابزار وجود دارد که به شما در اجرای برنامههای Node کمک میکند، از جمله مهمترین آنها forever
و pm2
. من هر دو را امتحان کردم و فکر کردم forever
استفاده از آن کمی سادهتر بود (بیشتر فقط به این دلیل که سادهتر است و ویژگیها/گزینههای کمتری برای نگرانی دارد)، در حالی که pm2
قدرتمندتر است اگر واقعاً جاه طلب هستید، می توانید امتحان کنید pm2
حالت کلاستر یا API برای کمک به نظارت بر معیارهای برنامه در حال اجرا شما.
چه تنظیمات و کاربردهای جالب دیگری برای آن دارید process ابزارهای مدیریتی مانند forever
? در نظرات به ما اطلاع دهید!
(برچسبها برای ترجمه)# جاوا اسکریپت
منتشر شده در 1403-01-29 19:06:03