از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
استقرار برنامههای Node.js در AWS EC2 با Docker هنگامی که یک برنامه تحت وب نوشتید، دهها پیشنهاد برای آنلاین کردن برنامه شما و قابل استفاده توسط افراد دیگر وجود دارد. یکی از پیشنهادات شناخته شده بخشی از پلت فرم خدمات وب آمازون (AWS) – Elastic Compute Cloud (EC2) است. EC2 بخش اصلی AWS است و بسیاری از …
سرفصلهای مطلب
معرفی
هنگامی که یک برنامه تحت وب نوشتید، ده ها پیشنهاد برای آنلاین کردن برنامه شما و قابل استفاده توسط افراد دیگر وجود دارد. یکی از پیشنهادات شناخته شده بخشی از پلت فرم خدمات وب آمازون (AWS) است – ابر محاسباتی الاستیک (EC2).
EC2 بخش اصلی AWS است و بسیاری از خدمات دیگر AWS ساخته شده اند روی در بالای آن – بنابراین خوب است که درک درستی از چیستی EC2 و روش استقرار در آن داشته باشید.
در این آموزش، ما قصد داریم یک برنامه Node.js اولیه با Docker ایجاد کنیم، یک نمونه EC2 را شروع و پیکربندی کنیم، و برنامه خود را در آن مستقر کنیم. در پایان این آموزش، برنامه Node خود را اجرا خواهید کرد روی AWS و درک بهتری از روش تعامل با یک سرویس اصلی AWS.
پیش نیازها
حساب AWS
خدمات وب آمازون (AWS) مجموعه ای از ابزارها برای ساخت برنامه های کاربردی در فضای ابری است. از آنجایی که EC2 یک سرویس AWS است، باید یک حساب AWS راه اندازی کنیم.
AWS دارای یک لایه رایگان برای بسیاری از چیزهای عالی است، و EC2 نیز از این قاعده مستثنی نیست – شما آزاد هستید که از 750 ساعت (31 روز) EC2 در ماه برای یک سال کامل در سطح رایگان استفاده کنید.
داکر
داکر به ما این امکان را می دهد تا برنامه های خود را در واحدهای کوچک و به راحتی قابل استقرار و قابل اجرا جمع کنیم هر جا جایی که Docker نصب شده است. این به معنای دیگر آن نیست، اما کار می کند روی ماشین من!
این مقاله آشنایی اولیه با Docker را فرض میکند و به عمق آن نمیپردازد روی آن – با این حال، اگر میخواهید غواصی عمیقتری انجام دهید، استقرار یک برنامه Node.js را در یک قطره DigitalOcean با Docker بررسی کنید.
برنامه Node
بیایید یک برنامه Node واقعا ساده بسازیم که به یک درخواست پاسخ می دهد. برای انجام این کار، ما یک را باز می کنیم terminal و اجرا:
$ mkdir node-ec2
$ cd node-ec2
$ npm init
این یک پوشه جدید ایجاد می کند، به آن پوشه منتقل می شود و سپس یک برنامه Node جدید را مقداردهی اولیه می کند.
بیایید فعلاً به پیشفرضهای NPM پایبند باشیم – این مقاله فرض میکند که شما نقطه ورودی را بهعنوان ترک کردهاید index.js
. این ما را تولید خواهد کرد package.json
فایل، که در اصل یک فایل پیکربندی برای برنامه ما است.
از وقتی که package.json
فایل ایجاد می شود، آن را باز کرده و خط زیر را به ابتدای فایل اضافه کنید scripts
بخش:
"start": "node index.js",
با این کار به جای دویدن node index.js
، استفاده خواهیم کرد npm start
، که همه چیز را در اسکریپت ما اجرا می کند. در این مورد خاص، فقط اجرا می شود node index.js
، اگرچه در واقعیت، می تواند بسیار بیشتر از این باشد. به عنوان مثال، اگر بتوانیم بدون نیاز به هر بار تایپ کردن آن، پرچم ها را به دستور اضافه کنیم، یا می توانیم برخی از متغیرهای محیطی مانند NODE_ENV=production node index.js
.
برای پاسخگویی به درخواستهای خود، از آن استفاده میکنیم بیان چارچوب – مینیمالیستی است و شروع آن آسان است:
$ npm install express --save
ما package.json
اکنون باید چیزی شبیه به این باشد:
{
"name": "app",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"start": "node index.js"
},
"author": "",
"license": "ISC",
"dependencies": {
"express": "^4.17.1"
}
}
منتظر بمانید تا نصب شود و سپس ویرایشگر کد مورد نظر خود را باز می کنیم تا فایل جدید دیگری در همان مکان ایجاد کنیم. index.js
.
فایل Express را راه اندازی می کند و یک کنترل کننده درخواست را تعریف می کند:
const express = require('express');
const app = express();
const port = 3000;
app.get('/status', (req, res) => res.send({status: "I'm alive!"}));
app.listen(port, () => console.log(`Example app listening روی port ${port}!`));
این برنامه شروع خواهد شد روی بندر 3000
، و یک نقطه پایانی در ارائه خواهد شد /status
. ما میتوانیم این کار را با اجرای:
$ npm start
Example app listening روی port 3000!
راه افتادن به سوی http://localhost:3000/status
– ما باید پاسخ را با {status: "I'm alive!"}
. پس از موفقیت آمیز بودن، مطمئن شوید که سرور را با آن متوقف کنید CTRL+سی.
با برنامه ساده Node ما آماده، اجازه دهید آن را به یک تصویر Docker تبدیل کنیم که آن را در EC2 مستقر خواهیم کرد.
داکر کردن برنامه Node
یک فایل جدید در همان دایرکتوری که برنامه Node خود نامیده می شود ایجاد کنید Dockerfile
:
FROM node:13-alpine
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD ( "node", "index.js" )
این یک Dockerfile پایه است که می تواند برای اکثر برنامه های ساده Node استفاده شود. در مرحله بعد، بیایید تصویر Docker را بسازیم و سپس آن را اجرا کنیم تا بررسی کنیم که درست کار می کند:
$ docker build . -t ec2-app
$ docker run -p 3000:3000 ec2-app
اگر شما به http://localhost:3000/status
دوباره، شما باید همان پاسخ وضعیت قبلی را ببینید. خروج از process با CTRL+سی از نو.
در نهایت، بیایید تصویر Docker خود را به آن فشار دهیم داکر هاب:
$ docker login # Use your Docker Hub credentials here
$ docker tag ec2-app <YOUR_DOCKER_USERNAME>/ec2-app
$ docker push <YOUR_DOCKER_USERNAME>/ec2-app
راه اندازی EC2
با برنامه ما “dockerized”، باید یک نمونه EC2 را برای اجرا تنظیم کنیم روی.
به AWS بروید و وارد شوید.
کلیک کنید بر روی ‘خدمات’ منوی کشویی در بالای صفحه page، و جستجو کنید ‘EC2’. AWS در حال حاضر در حال آزمایش با رابط کاربری خود است، بنابراین باید a page چیزی شبیه تصویر زیر است، اما مرکز آن است page ممکن است کمی متفاوت به نظر برسد
کلیک روی را ‘نمونه ها’ ارتباط دادن روی چپ.
در نمای بعدی، روی ‘نمونه راه اندازی’ دکمه. یک را خواهید دید page که شبیه این است:
AMI ها
اینجاست که ما آن را انتخاب می کنیم تصویر ماشین آمازون – یا AMI به طور خلاصه یک AMI یک سرور “خارج از جعبه” است و می تواند با پیکربندی های متعدد ارائه شود.
به عنوان مثال، ما می توانیم یکی از آنها را انتخاب کنیم AMI های شروع سریع که دارند لینوکس آمازون ۲ روی آنها، یا اگر به پایین اسکرول کنید، نمونه هایی با اوبونتو در حال اجرا وجود دارد روی آنها و غیره
هر AMI یک تصویر منجمد از یک ماشین با یک سیستم عامل و احتمالاً برخی از نرم افزارهای اضافی نصب شده است.
برای آسان کردن کارها، میتوانیم از این برای ساختن یک نمونه EC2 با Docker که قبلاً برای ما پیکربندی شده است استفاده کنیم!
برای این کار باید انتخاب کنیم “AWS Marketplace” روی سمت چپ و سپس در کادر جستجو می خواهیم وارد کنیم ‘ECS’. ما باید چند نتیجه بگیریم، اما ما آن را می خواهیم “ECS بهینه سازی آمازون لینوکس 2” تصویر
این تصویر همراه با Docker است و برای اجرای کانتینرها بهینه شده است. اصابت ‘انتخاب کنید’ روی تصویر انتخاب شده و ما به بعدی ادامه می دهیم page:
انواع نمونه
در نمای بعدی، نوع نمونه ای را که می خواهیم انتخاب می کنیم. به طور کلی، این امر منابع موجود برای سروری را که در حال راهاندازی هستیم، با هزینههای مقیاسپذیری برای ماشینهای کارآمدتر دیکته میکند.
این t2.micro
نوع نمونه برای ردیف رایگان واجد شرایط است، بنابراین توصیه می شود از آن استفاده کنید:
چک باکس مناسب را انتخاب کنید و سپس کلیک کنید “بازبینی و راه اندازی” در گوشه سمت راست پایین کلیک ‘راه اندازی’ در همان مکان روی بعدی page، و یک پنجره بازشو برای انتخاب یا ایجاد یک جفت کلید دریافت خواهید کرد.
اولین منوی کشویی را انتخاب کرده و انتخاب کنید “یک جفت کلید جدید ایجاد کنید”. زیر “نام جفت کلید”را وارد کنید که می خواهید جفت کلید خود را صدا بزنید.
مطمئن شوید که ‘دانلود جفت کلید’ روی سمت راست – این همان چیزی است که ما برای دسترسی به نمونه EC2 خود استفاده خواهیم کرد.
با انتخاب ‘نمونه راه اندازی’ دوباره، نمونه EC2 شما باید راه اندازی شود:
روی پیوند برجسته کلیک کنید تا به جزئیات نمونه هدایت شوید page.
گروه های امنیتی
قبل از اجرای برنامه خود، باید مطمئن شویم که می توانیم به برنامه دسترسی داشته باشیم.
اکثر منابع AWS تحت عمل می کنند “گروه های امنیتی” – این گروه ها روش دسترسی به منابع را دیکته می کنند، روی چه پورتی و از کدام آدرس IP.
روی گروه امنیتی که در اینجا مشخص شده است کلیک کنید:
از اینجا، میتوانید جزئیات مربوط به گروه امنیتی، از جمله قوانین ورودی و خروجی آن را در برگههای مختلف مشاهده کنید. در زیر برگه ورودی، امیدوارم این را ببینید:
این به معنای ترافیکی است که از طریق پورت وارد می شود 22
، با استفاده از پروتکل TCP، از هر کجا مجاز است (0.0.0.0/0
معنی هر جا). باید قانون دیگری اضافه کنیم تا به هر کسی اجازه دهیم به برنامه ما در پورت دسترسی داشته باشد 3000
.
در بالای page، کلیک ‘اقدامات’ و سپس کلیک کنید “ویرایش قوانین ورودی”. در گفتگوی باز شده، کلیک کنید “افزودن قانون”.
محدوده پورت قانون را روی 3000
، و زیر Source، روی منوی کشویی کلیک کرده و انتخاب کنید ‘هر جا’. بقیه باید به طور خودکار پر شوند.
در نهایت، شما باید با چیزی مانند:
اتصال به نمونه EC2 شما
به عقب برگردید ‘نمونه ها’ page (روی لینک کلیک کنید روی سمت چپ) و نمونه ای را که قبلا ایجاد کرده اید انتخاب کنید. آدرس نمونه EC2 شما در بالای پیوند گروههای امنیتی در زیر قرار دارد ‘DNS عمومی’ رشته.
به عقب برگردید terminalو به پوشه ای که جفت کلیدی که قبلا دانلود کرده اید در آن قرار دارد بروید. هر چیزی که برای نام جفت کلید وارد کرده اید، با یک نامگذاری می شود .pem
به عنوان پسوند آن
اجازه دهید مجوزهای کلید و سپس SSH را به نمونه EC2 تغییر دهیم:
$ chmod 400 <NAME_OF_KEYPAIR_FILE>
$ ssh -i <NAME_OF_KEYPAIR_FILE>ec2-user@<PUBLIC_DNS>
از اینجا، ما فقط باید برنامه خود را از طریق Docker راه اندازی کنیم:
$ docker run -p 3000:3000 <YOUR_DOCKER_USERNAME>/ec2-app
شما می توانید با استفاده از همان آدرسی که برای SSH در نمونه استفاده کرده اید، به نمونه دسترسی پیدا کنید. به سادگی در مرورگر خود به مسیر زیر بروید:
<PUBLIC_DNS>:3000/status
برنامه شما باید نقطه پایانی وضعیت را که قبلاً دیده بودیم، به شما برگرداند. تبریک می گویم، شما به تازگی اولین برنامه خود را اجرا کردید روی EC2!
بعدش چی؟
برنامه خود را بدون سر و صدا اجرا کنید
با این حال، یک پیروزی سریع این است که برنامه را بدون سر اجرا کنید. در حال حاضر، برنامه شما در حال حاضر در جلسه پوسته شما در حال اجرا است – و به محض بستن آن جلسه، برنامه خاتمه می یابد!
برای راهاندازی برنامه به گونهای که همچنان در پسزمینه اجرا شود، برنامه را با برنامه اضافی اجرا کنید -d
پرچم:
$ docker run -d -p 3000:3000 <YOUR_DOCKER_USERNAME>/ec2-app
امنیت
ممکن است بخواهید به عقب برگردید و امنیت را تشدید کنید روی نمونه/آزمایش با پیکربندی های مختلف – مانند پیکربندی آن به گونه ای که فقط ما به عنوان مثال می تواند به پورت SSH دسترسی داشته باشد.
تغییر دادن ‘Source’ رشته روی اولین قانون به ‘آیپی من’ – AWS به طور خودکار متوجه می شود که از کجا به آن دسترسی دارید.
توجه داشته باشید: اگر در حال اجرای این آموزش هستید روی ممکن است رایانه شما IP متفاوتی نسبت به زمانی که در ابتدا تنظیم کرده بودید داشته باشد، یا بعداً به آن بازگردید ‘آیپی من’. اگر بعداً با مشکلی مواجه شدید روی، حتما به اینجا برگردید و انتخاب کنید ‘آیپی من’ از نو!
سایر AMI ها
صدها AMI مختلف، تعداد زیادی از جوامع مختلف، با برنامههای کاربردی از قبل نصب شده وجود دارد – ارزش آن را دارد که نگاهی بیندازید تا ببینید آیا راه آسانی برای تنظیم چیزی وجود دارد که میخواهید با آن کار کنید یا خیر!
افزودن دامنه
اکنون که یک برنامه در حال اجرا دارید روی یک سرور، ممکن است بخواهید یک نام دامنه تنظیم کنید و آن را در برنامه خود قرار دهید.
نتیجه
EC2 واقعاً ستون فقرات بسیاری از خدمات AWS است – برای مثال، RDS (سرویس پایگاه داده AWS) واقعاً نمونه های EC2 به شدت بهینه شده با داشبورد خوب است.
درک این محصول اصلی در زرادخانه AWS درها را به روی روش های جدید اجرای ایده ها باز می کند.
در این آموزش، ما یک برنامه ساده Node.js را با کمک Express ایجاد کردهایم، آن را docker کرده، EC2 را برای استقرار راهاندازی کردهایم و در نهایت آن را در نمونه EC2 مستقر کردهایم.
(برچسبها برای ترجمه)# aws
منتشر شده در 1403-01-23 05:04:04