از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
مدیریت متغیرهای محیط در Node.js با dotenv استقرار یک برنامه به توسعه دهندگان نیاز دارد که در مورد روش پیکربندی آن فکر و توجه کنند. بسیاری از برنامه ها قبل از اینکه در محیط تولید مستقر شوند در یک محیط توسعه مستقر می شوند. ما باید اطمینان حاصل کنیم که هر محیطی به درستی پیکربندی شده است، اگر برنامه تولید ما از ما استفاده کند ممکن است فاجعه بار باشد.
سرفصلهای مطلب
معرفی
استقرار یک برنامه به توسعه دهندگان نیاز دارد که در مورد روش پیکربندی آن فکر و توجه کنند. بسیاری از برنامه ها قبل از اینکه در محیط تولید مستقر شوند در یک محیط توسعه مستقر می شوند. ما باید اطمینان حاصل کنیم که هر محیط به درستی پیکربندی شده است، برای مثال اگر برنامه تولید ما از پایگاه داده توسعه ما استفاده کند، ممکن است فاجعه بار باشد.
متغیرهای محیطی به ما اجازه می دهد تا پیکربندی برنامه های خود را جدا از پایگاه کد خود مدیریت کنیم. جداسازی پیکربندی ها، استقرار برنامه ما در محیط های مختلف را آسان تر می کند.
برنامه های بزرگ معمولا متغیرهای محیطی زیادی دارند. برای مدیریت بهتر آنها می توانیم از dotenv کتابخانه، که به ما اجازه می دهد تا متغیرهای محیطی را از یک فایل بارگیری کنیم.
متغیرهای محیطی چیست؟
از برنامه نویسی می دانیم که متغیرها مقادیر ذخیره شده ای هستند که می توان آنها را تغییر داد. آنها قابل تغییر هستند و می توانند متفاوت باشند – از این رو نام آنها متغیرها.
متغیرهای محیطی متغیرهایی خارج از برنامه ما هستند که در سیستم عامل یا سیستم عامل قرار دارند container یک متغیر محیطی به سادگی نامی است که به یک مقدار نگاشت شده است.
طبق قرارداد، نام به عنوان مثال با حروف بزرگ نوشته می شود (email protected)
. مقادیر رشته ها هستند.
اگر در را باز کنید terminal یا برنامه خط فرمان در لینوکس، مک او اس یا ویندوز و وارد کنید set
، لیستی از تمام متغیرهای محیطی را برای کاربر خود خواهید دید.
چرا از متغیرهای محیطی استفاده کنیم؟
متغیرهای محیطی برای جداسازی تنظیمات برنامه عالی هستند. به طور معمول، برنامه های ما نیاز به تنظیم متغیرهای زیادی دارند تا بتوانند کار کنند. با تکیه روی تنظیمات خارجی، برنامه شما به راحتی می تواند مستقر شود روی محیط های مختلف این تغییرات مستقل از تغییرات کد هستند، بنابراین برای تغییر نیازی به بازسازی برنامه شما ندارند.
داده هایی که بسته به آن تغییر می کند روی محیطی که برنامه شما اجرا می شود روی باید به عنوان متغیرهای محیطی تنظیم شوند. برخی از نمونه های رایج عبارتند از:
- پورت و آدرس HTTP
- پایگاه داده، حافظه پنهان و سایر اطلاعات اتصال ذخیره سازی
- محل فایل ها/پوشه های ایستا
- نقاط پایانی خدمات خارجی
- به عنوان مثال، در یک محیط توسعه، برنامه شما به یک URL API آزمایشی اشاره می کند، در حالی که در یک محیط تولیدی، برنامه شما به URL زنده API اشاره می کند.
داده های حساس مانند کلیدهای API نباید در کد منبع وجود داشته باشند یا برای افرادی که نیازی به دسترسی به آن سرویس های خارجی ندارند شناخته شوند.
متغیرهای محیطی در Node.js
یک سلام دنیا را در نظر بگیرید Node.js برنامه با متغیرهای محیطی برای host و برنامه اجرا شده را پورت کنید روی.
یک فایل جدید به نام ایجاد کنید hello.js
در فضای کاری دلخواه خود و موارد زیر را اضافه کنید:
const http = require('http');
// Read the host address and the port from the environment
const hostname = process.env.HOST;
const port = process.env.PORT;
// Return JSON regardless of HTTP method or route our web app is reached by
const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'application/json');
res.end(`{"message": "Hello World"}`);
});
// Start a TCP server listening for connections روی the given port and host
server.listen(port, hostname, () => {
console.log(`Server running at http://${hostname}:${port}/`);
});
Node.js یک متغیر سراسری ارائه می دهد process.env
، یک شی که شامل تمام متغیرهای محیطی است که برای کاربر در حال اجرا برنامه در دسترس است. انتظار می رود نام میزبان و پورتی که برنامه اجرا شود روی توسط محیط تعریف شود.
با وارد کردن این دستور در قسمت می توانید این برنامه را اجرا کنید terminal، HOST=localhost PORT=3000 node hello.js
اعطا شده است که Node.js را نصب کرده اید. متوجه پیام زیر خواهید شد روی شما console:
Server running at http://localhost:3000/
ایجاد و خواندن متغیرهای محیطی به همین راحتی است. فرض کنید در حال نوشتن یک میکرو سرویس هستیم که با a ارتباط برقرار می کند MySQL و ردیس به عنوان مثال، ما می خواهیم جزئیات اتصال را در متغیرهای محیطی خود نیز در دسترس داشته باشیم.
ممکن است به دستوری مانند این دست پیدا کنیم:
$ DB_HOST=localhost DB_PORT=3306 DB_USER=test DB_PASSWORD=verySecret123!$ DB_MAX_CONNECTIONS=15 CACHE_ADDR=localhost CACHE_PORT= 6379 HOST=localhost PORT=3000 node hello.js
توسعه با متغیرهای محیطی متعدد به سرعت دشوار می شود. بهتر است متغیرهای محیطی که باید پیکربندی میکردیم در یک مکان مرکزی برنامه مانند یک فایل ذخیره شوند.
را dotenv
کتابخانه
این کتابخانه یک کار ساده را انجام می دهد: متغیرهای محیط را از a بارگیری می کند .env
فایل را در process.env
متغیر در Node.js. استفاده کنیم dotenv
برای مثال قبلی
ابتدا باید آن را از طریق نصب کنیم npm
:
$ npm init # Optional, creates a local package.json that prevents global installs
$ npm install dotenv --save
و سپس یک تغییر حداقل کد ایجاد می کنیم، این خط را به بالای آن اضافه می کنیم hello.js
:
require('dotenv').config()
اکنون در همان فهرست برنامه خود، یک فایل جدید به نام ایجاد کنید .env
و موارد زیر را اضافه کنید:
HOST=localhost
PORT=3000
متغیرهای محیطی شما دقیقاً به گونهای اعلام میشوند که گویی آنها را قبل از اجرای آن در پوسته وارد میکنید node فرمان به جای اینکه هر انتساب متغیر را با فاصله جدا کنیم، آنها را با a جدا می کنیم خط جدید. حالا در پوسته شما، اگر وارد شوید node hello.js
، برنامه اجرا خواهد شد روی بندر 3000
روی شما localhost
!
حتی اگر dotenv
در برنامه استفاده می شود، کاملا اختیاری است. اگر نه .env
فایل پیدا شد، کتابخانه بی صدا از کار می افتد. می توانید به استفاده از متغیرهای محیطی که خارج از فایل تعریف شده اند ادامه دهید.
توجه داشته باشید: همچنین تغییرات زیادی وجود دارد dotenv
در سایر زبان ها و فریم ورک های برنامه نویسی. یک دستورالعمل بسیار محبوب برای ساخت برنامه های کاربردی وب مدرن است برنامه دوازده عاملی. این سند توسط بسیاری از توسعه دهندگان ایجاد شده است که برنامه های Software-as-a-Service را ایجاد کرده اند. یکی از 12 مورد توجه یک برنامه مدرن و مقیاس پذیر، پیکربندی است، به ویژه استفاده از متغیرهای محیطی برای ذخیره پیکربندی. محبوبیت این روش به ایجاد و محبوبیت کمک کرده است dotenv
و ماژول های مشابه
استفاده در تولید
ذخیره متغیرهای محیطی خود در یک فایل با یک قانون طلایی همراه است: هرگز آن را به مخزن کد منبع متعهد نکنید. شما نمی خواهید افراد خارجی به اسرار مانند کلیدهای API دسترسی پیدا کنند. اگر استفاده می کنید dotenv
برای کمک به مدیریت متغیرهای محیطی خود، مطمئن شوید که شامل .env
فایل در شما .gitignore
یا لیست سیاه مناسب برای ابزار کنترل نسخه شما.
اگر نمی توانید آن را انجام دهید .env
پس باید راهی برای توسعه دهنده وجود داشته باشد تا بداند چه متغیرهای محیطی برای اجرای نرم افزار مورد نیاز است. معمولاً توسعه دهندگان متغیرهای محیطی لازم برای اجرای برنامه را در یک فهرست می کنند README
یا اسناد داخلی مشابه
برخی از توسعه دهندگان یک را ایجاد و نگهداری می کنند .sample-env
فایل در مخزن کد منبع این فایل نمونه تمام متغیرهای محیطی مورد استفاده توسط برنامه را فهرست می کند، به عنوان مثال:
HOST=
PORT=
سپس یک توسعه دهنده مخزن را شبیه سازی می کند، آن را کپی می کند .sample-env
را به یک فایل جدید تبدیل کنید .env
فایل و مقادیر را پر کنید.
اگر برنامه شما در حال اجرا است روی یک ماشین فیزیکی یا یک ماشین مجازی (به عنوان مثال، قطرات دیجیتالی اقیانوس، آمازون EC2 و ماشین های مجازی Azure، سپس می توانید a ایجاد کنید .env
در حالی که وارد سرور شده اید و درست همانطور که انجام می شود اجرا می شود روی ماشین محلی شما
اگر برنامه شما در حال اجرا است روی یک بارانداز container یا ارائه دهنده پلتفرم به عنوان سرویس مانند هروکو یا OpenShift، سپس می توانید بدون نیاز به استفاده از متغیرهای محیطی را پیکربندی کنید .env
فایل.
یاد آوردن، بی صدا از کار می افتد، بنابراین در صورت عدم وجود فایل، بر اجرای برنامه تأثیر نمی گذارد.
نتیجه
متغیرهای محیط خارج از کد برنامه ما وجود دارند، آنها در جایی که برنامه ما در حال اجرا است در دسترس هستند. آنها می توانند برای جدا کردن پیکربندی برنامه ما از کد آن استفاده شوند، که به برنامه های ما اجازه می دهد به راحتی در محیط های مختلف مستقر شوند.
با برنامههای Node.js، متغیرهای محیطی از طریق process.env
متغیر جهانی میتوانیم قبل از اجرای آن، متغیرهای محیط را تنظیم کنیم node
دستور، یا می توانیم از آن استفاده کنیم dotenv
کتابخانه ای که به ما امکان می دهد متغیرهای محیطی خود را در a تعریف کنیم .env
فایل.
را .env
فایل هرگز نباید در مخزن کد منبع باشد.
منتشر شده در 1403-01-25 12:11:03