Window.pipedriveLeadboosterConfig = { القاعدة: 'leadbooster-chat.pipedrive.com', companyId: 11580370, playbookUuid: '22236db1-6d50-40c4-b48f-8b11262155be', الإصدار: 2, } ؛(الدالة () { var w = نافذة إذا كان (w.LeadBooster) { console.warn('LeadBooster موجود بالفعل') } وإلا { { w.LeadBooster = { q: [], على: دالة (ن، ح) { { هذا.q.push({ t: 'o'، n: n، n: n، h: h }) }, الزناد: الدالة (n) { هذا.q.push({ t: 't'، n: n: n }) }, } } })() نشر تطبيق Rails باستخدام Amazon ECS - The Codest
The Codest
  • نبذة عنا
  • الخدمات
    • تطوير البرمجيات
      • تطوير الواجهة الأمامية
      • تطوير الواجهة الخلفية
    • Staff Augmentation
      • مطورو الواجهة الأمامية
      • مطورو الواجهة الخلفية
      • مهندسو البيانات
      • مهندسو السحابة
      • مهندسو ضمان الجودة
      • أخرى
    • استشاري
      • التدقيق والاستشارات
  • الصناعات
    • التكنولوجيا المالية والمصرفية
    • E-commerce
    • أدتك
    • التكنولوجيا الصحية
    • التصنيع
    • الخدمات اللوجستية
    • السيارات
    • إنترنت الأشياء
  • القيمة مقابل
    • CEO
    • CTO
    • مدير التوصيل
  • فريقنا
  • دراسات الحالة
  • اعرف كيف
    • المدونة
    • اللقاءات
    • ندوات عبر الإنترنت
    • الموارد
الوظائف تواصل معنا
  • نبذة عنا
  • الخدمات
    • تطوير البرمجيات
      • تطوير الواجهة الأمامية
      • تطوير الواجهة الخلفية
    • Staff Augmentation
      • مطورو الواجهة الأمامية
      • مطورو الواجهة الخلفية
      • مهندسو البيانات
      • مهندسو السحابة
      • مهندسو ضمان الجودة
      • أخرى
    • استشاري
      • التدقيق والاستشارات
  • القيمة مقابل
    • CEO
    • CTO
    • مدير التوصيل
  • فريقنا
  • دراسات الحالة
  • اعرف كيف
    • المدونة
    • اللقاءات
    • ندوات عبر الإنترنت
    • الموارد
الوظائف تواصل معنا
السهم الخلفي العودة إلى الوراء
2021-11-17
تطوير البرمجيات

نشر تطبيق Rails باستخدام Amazon ECS

The Codest

مارسين دوليوا

Software Engineer

في هذا البرنامج التعليمي، أود أن أوضح لك كيفية نشر تطبيق Rails نموذجي باستخدام خدمة حاويات أمازون المرنة (ECS).

لنقم بإنشائه عن طريق تشغيل القضبان نموذج جديد-قضبان-التطبيقثم توليد إجراء تحكم أساسي مؤشر الترحيب بوحدة تحكم القضبان زاي وتعيين المسارات إلى المسار الجذري كـ "جذر إلى: مرحبًا#index".

هدفنا هو نشر صفحة الترحيب هذه باستخدام ECS.

إنشاء مستودع باستخدام سجل حاويات أمازون المرن (ECR)

أمازون ECR هو سجل الحاويات. سوف نستخدمه لتخزين صور تطبيقاتنا وسحبها منه بحيث تعمل على ECS.

انتقل إلى AWS اللوحةابحث عن حاوية مرنة
السجل
وانقر فوق ابدأ الآن. سترى الشاشة أدناه:

مستودع مع سجل حاويات أمازون المرن المرن

سننشئ مستودعًا خاصًا ونسميه نموذج-قضبان-التطبيق.

المستودع موجود، لكنه فارغ. نريده أن يحتوي على صورة تطبيقنا. هذه هي الخطوة التالية.

# طرح أخطاء إذا تم تعديل ملف Gemfile منذ Gemfile.lock

تشغيل تكوين الحزمة --عالمي مجمد 1

WORKDIR / التطبيق

نسخ ملف Gemfile Gemfile.lock ./ ./

تشغيل تثبيت الحزمة

نسخ .

CMD ["القضبان"، "الخادم"، "-b"، "0.0.0.0.0"]

ثم يجب علينا إنشاء صورة ودفعها إلى مستودع ECR.

قبل ذلك، لنقم قبل ذلك بتجميع الأصول مسبقًا باستخدام "تجميع الأصول: التجميع المسبق".

الآن، انتقل إلى المستودع الذي تم إنشاؤه. في الجزء العلوي من الشاشة، سترى في الجزء العلوي من الشاشة عرض أوامر الدفع مع تفاصيل حول كيفية القيام بذلك.

في حالتي (لينكس)، أقوم بتشغيله باستخدام تعليمات AWS هذه:

aws ecr ecr get-login-password -- المنطقة eu-central-1 | docker login --username AWS --password-stdin 212516879399.dkr.ecr.eu-central-1.amazonaws.com

docker build -t sample-rails-app .

docker tag sample-rails-app:latest 212516879399.dkr.ecr.ecr.eu-central.amazonaws.com/sample-rails-app:latest

docker push 212516879399.dkr.ecr.ecr.eu-central-1.amazonaws.com/sample-rails-app:latest

تأكد من أن المستخدم مسموح له بالقيام بهذه العملية. لقد أضفتُ سياسة AmazonElasticContainerRegistryPowerPowerUser إلى المستخدم الخاص بي، والتي تبدو كالتالي:

{
    "الإصدار": "2012-10-17",
    "البيان": [
        {
            "سيد": "VisualEditor0",
            "تأثير": "السماح",
            "الإجراء": [
                "ecr:GetRegistryPolicy",
                "ecr:DescribeRegistry",
                "ecr:GetAuthorizationToken",
                "ecr:DeleteRegistryPolicy", "ecr:DeleteRegistryPolicy",
                "ecr:PutRegistryPolicy", "ecr:PutRegistryPolicy",
                "ecr:PutReplicationConfiguration"
            ],
            "مورد": "*"
        },
        {
            "سيد": "VisualEditor1",
            "تأثير": "السماح",
            "الإجراء": "ecr:*",
            "المورد": "arn:aws:ecr:*:212516879399:repository/*"
        }
    ]
}

لقد أعددنا صورة docker الخاصة بنا.

إنشاء موازن تحميل التطبيقات

أريد أن يتمكن العالم الخارجي من الاتصال بموازن تحميل التطبيق الخاص بي فقط. سيمرر حركة المرور إلى الحاويات التي تعمل داخل مجموعة ECS الخاصة بنا.

انتقل إلى خدمات EC2 -> موازنة التحميل -> موازنات التحميل، انقر إنشاء موازن التحميلاختر موازن تحميل التطبيقات وانقر على إنشاء الزر.

تعيين اسمها إلى نموذج-قضبان-التطبيق-الب، استخدم VPC الافتراضي الخاص بك وحدد جميع شبكاته الفرعية.

يتبقى لدينا المجموعات الأمنية و المستمعون والتوجيه الأقسام.

المجموعات الأمنية

سننشئ مجموعة أمان جديدة لموازن التحميل الخاص بنا. إنه يعمل مثل جدار الحماية؛ سنقوم بتعيين القواعد لحركة المرور الواردة والصادرة. نريد أن نقبل حركة مرور http الواردة (منفذ TCP 80) ونسمح بكل حركة المرور الصادرة. 

للقيام بذلك، انقر على "إنشاء مجموعة أمان جديدة" رابط.

في قسم "التفاصيل الأساسية"، قم بتعيين الاسم والوصف، اترك VPC الافتراضي.

في حالتي - الاسم: "عينة-قضبان-التطبيق-التطبيق-الب-سغ-سغ"، الوصف: "http من الخارج، كل ذلك من الداخل"

أضف القاعدة الواردة مع النوع: HTTP والمصدر: في أي مكان-IPv4. اترك القواعد الصادرة كما هي.

انقر فوق إنشاء مجموعة أمان، ثم ارجع إلى علامة التبويب حيث كنت تنشئ موازن تحميل التطبيق، وقم بتحديث مجموعات الأمان وأضف المجموعة التي أنشأناها للتو، وقم بإزالة المجموعة الافتراضية.

المستمعون والتوجيه

في هذا القسم، سنحدد إلى أين نريد أن يمرر موازن التحميل حركة المرور. اترك المستمع البروتوكول و الميناء مثل HTTP و80، لأن هذا بالضبط ما نريده، وانقر على "إنشاء مجموعة مستهدفة" رابط.

تعيين الاسم إلى "عينة-قضبان-التطبيق-التطبيق-الب-تغ". التغيير الوحيد هو رقم المنفذ. سنقوم بتمريره إلى المنفذ 3000 لأن هذا هو المنفذ الخاص بتطبيق Rails الخاص بنا. تجاهل الخطوة التالية (الأهداف المسجلة) وإنشاء المجموعة المستهدفة.

عد الآن إلى علامة التبويب حيث كنا ننشئ موازن تحميل التطبيق، وقم بتحديث المجموعة المستهدفة وحدد المجموعة التي أنشأناها للتو.

لدينا موازن تحميل التطبيقات جاهز، والآن لنلعب مع ECS.

إنشاء مجموعة ECS العنقودية

هناك الكثير من المصطلحات المخيفة التي ستراها - الكتلة والمهام وتعريف المهام والخدمات. لتبسيط الأمر، فكر في الكتلة كمجموعة من الخوادم (مثيلات EC2). على كل واحد منها، نقوم بتشغيل المهام، وهي مجرد مجموعة من الحاويات التي تعمل معًا. يصف تعريف المهمة الحاويات الموجودة في مجموعة معينة والموارد التي نرغب في منحها لها (الذاكرة، وحدة المعالجة المركزية). تراقب الخدمات هذه المهام للتأكد من وجود عدد صحيح دائمًا من المهام السليمة التي تعمل في مجموعتنا.

مع وضع ذلك في الاعتبار، دعنا ننشئ مجموعتنا العنقودية.

انتقل إلى صفحة ECS وانقر على التكتلات الرابط و إنشاء مجموعة عنقودية زر. اختر "شبكات EC2 + لينكس EC2 + لينكس" واحد وانقر الخطوة التالية. 

تعيين اسم المجموعة إلى "عينة-قضبان-تطبيق-مجموعة التطبيقات". اختر نوع مثيل EC2، وقد اخترتُ مثيل t2-micro لأنه متاح ضمن خطة المستوى المجاني. اترك عدد المثيلات 1. 

في قسم الشبكات، استخدم VPC الافتراضي الخاص بك وحدد جميع شبكاته الفرعية. انقر فوق إنشاء، انتظر قليلاً وفويلا، لدينا مجموعة ECS Cluster جديدة تم إنشاؤها.

تعريف المهمة

انقر على تعريفات المهام الرابط، ثم إنشاء تعريف مهمة جديدة زر. حدد الزر EC2 وانقر فوق الخطوة التالية. التطبيق الذي سنقوم بتشغيله بسيط للغاية، لذلك نحن بحاجة إلى بعض الخيارات فقط هنا. 

مجموعة تعريف المهمة الاسم إلى "نموذج-قضبان-التطبيق"، ثم انتقل مباشرة إلى تعريفات الحاويات وانقر على "إضافة حاوية". قم بتسمية الحاوية باسم "نموذج-قضبان-التطبيق"، وتعيين موقع الصورة بالصيغة "مستودع-url/صورة/صورة:علامة". في علامة تبويب المتصفح الجديدة، انتقل إلى ECR لنسخ URI الصورة. في حالتي، كان "212516879399.dkr.ecr.eu-central-1.amazonaws.com/sample-rails-app:latest".

اضبط حد الذاكرة على 300-500 ميغابايت الموصى به. الآن، الأمر الأكثر صعوبة - تعيين المنفذ.

يعمل تطبيقنا داخل حاوية على منفذ 3000. لذا ضع 3000 كمنفذ للحاوية. سندخل 0 كمنفذ مضيف، مما يعني بشكل أساسي أنه يختار منفذًا عشوائيًا. لحسن الحظ، سيعرف موازن تحميل التطبيق لدينا تعيين المنفذ هذا وسيكون قادرًا على توجيه حركة المرور بشكل صحيح. يمكننا حتى تشغيل مهام متعددة على هذا المثيل الواحد. 

إضافة متغير البيئة RAILS_ENV وضبطه على الإنتاج.

انقر الآن إضافة لإضافة تعريف الحاوية الخاصة بنا والنقر على إنشاء لإنهاء إعداد تعريف المهمة.

الخدمة

لدينا مجموعتنا وموازن التحميل وتعريف المهام. الآن علينا تشغيل هذه المهام بطريقة ما داخل مجموعتنا. هذه هي مهمة الخدمات. انتقل إلى المجموعة التي تم إنشاؤها حديثًا، وحدد الخدمات وانقر على علامة التبويب إنشاء الزر. 

قم بتعيين نوع التشغيل على EC2، أضف الاسم "عينة-قضبان-تطبيق-تطبيق-خدمة". اضبط عدد المهام على 1 وانقر فوق الخطوة التالية. في هذه الصفحة، حدد زر الاختيار "موازن تحميل التطبيق" واختر دور IAM الموجود له. في قسم "حاوية لموازنة التحميل"، يجب أن تكون قد أدخلت بالفعل حاوية صحيحة "نموذج-قضبان-التطبيق:0:3000"، ثم انقر فوق "إضافة إلى موازن التحميل".

بالنسبة لمنفذ "منفذ مستمع الإنتاج"، اختر 80:HTTP؛ كاسم مجموعة الهدف، استخدم الاسم الذي أنشأناه من قبل - "عينة-قضبان-التطبيق-التطبيق-الب-تغ" وانقر فوق الخطوة التالية. الإجازة التحجيم التلقائي الخيارات كما هي، انقر فوق الخطوة التالية و إنشاء الخدمة.

تحديث مجموعة أمان ECS

يمكنك الانتقال إلى صفحة المجموعة التي تم إنشاؤها والتحقق من المهام علامات التبويب، يجب أن تكون هناك مهمة واحدة قيد التشغيل. لقد بدأت الخدمة تشغيلها. انتقل الآن إلى صفحة خدمة EC2، وانقر على موازنات التحميل وشاهد تفاصيل موازن تحميل التطبيقات. يجب أن يكون لديك هناك اسم DNS الخاص به. انسخه وافتحه في المتصفح. يجب أن يوجهك إلى تطبيقنا. لسوء الحظ، نحصل على "504 مهلة البوابة 504" خطأ. 

تكمن المشكلة في مجموعة الأمان في مجموعتنا. قواعدها الواردة لا تسمح بحركة المرور الواردة من موازن التحميل. لإصلاح ذلك، ارجع إلى لوحة EC2 وانقر على المجموعات الأمنية الارتباط. هناك مجموعة جديدة تم إنشاؤها أثناء عملية إنشاء المجموعة. يجب أن يكون لها اسم يبدأ بـ "EC2ContainerService-عينة-قضبان-تطبيق-مجموعة تطبيقات-مجموعة تطبيقات- EC2ContainerService". انقر فوقه وقم بتحرير القواعد الواردة. نظرًا لأننا نريد السماح بأي حركة مرور من VPC الخاص بنا، انتقل إلى لوحة Amazon VPC وتحقق من VPC IPv4 CIDR الخاص بك. اضبط نوع القاعدة على "كل حركة المرور" والمصدر إلى IPv4 CIDR. احفظ هذه القاعدة وحاول تحميل اسم DNS الخاص بالموازن. 

آمل أن ترى ما أراه 🙂.

قراءة المزيد

GraphQL روبي. ماذا عن الأداء؟

السكك الحديدية ووسائل النقل الأخرى

تطوير القضبان باستخدام TMUX و Vim و Fzf + Ripgrep

مقالات ذات صلة

تطوير البرمجيات

إنشاء تطبيقات ويب مستقبلية: رؤى من فريق خبراء The Codest

اكتشف كيف تتفوق شركة The Codest في إنشاء تطبيقات ويب تفاعلية قابلة للتطوير باستخدام أحدث التقنيات، وتقديم تجارب مستخدم سلسة عبر جميع المنصات. اكتشف كيف تقود خبرتنا التحول الرقمي والأعمال التجارية...

ذا كوديست
تطوير البرمجيات

أفضل 10 شركات لتطوير البرمجيات في لاتفيا

تعرّف على أفضل شركات تطوير البرمجيات في لاتفيا وحلولها المبتكرة في أحدث مقالاتنا. اكتشف كيف يمكن لهذه الشركات الرائدة في مجال التكنولوجيا المساعدة في الارتقاء بأعمالك.

thecodest
الحلول المؤسسية وحلول التوسعة

أساسيات تطوير برمجيات جافا: دليل للاستعانة بمصادر خارجية بنجاح

استكشف هذا الدليل الأساسي حول تطوير برمجيات جافا outsourcing بنجاح لتعزيز الكفاءة والوصول إلى الخبرة وتحقيق نجاح المشروع باستخدام The Codest.

thecodest
تطوير البرمجيات

الدليل الشامل للاستعانة بمصادر خارجية في بولندا

إن الطفرة في outsourcing في بولندا مدفوعة بالتقدم الاقتصادي والتعليمي والتكنولوجي، مما يعزز نمو تكنولوجيا المعلومات والمناخ الملائم للأعمال.

ذا كوديست
الحلول المؤسسية وحلول التوسعة

الدليل الكامل لأدوات وتقنيات تدقيق تكنولوجيا المعلومات

تضمن عمليات تدقيق تكنولوجيا المعلومات وجود أنظمة آمنة وفعالة ومتوافقة. تعرف على المزيد حول أهميتها من خلال قراءة المقال كاملاً.

The Codest
ياكوب جاكوب جاكوبوفيتش CTO وشريك مؤسس CTO

اشترك في قاعدة معارفنا وابقَ على اطلاع على آخر المستجدات في قطاع تكنولوجيا المعلومات.

    نبذة عنا

    The Codest - شركة دولية لتطوير البرمجيات لها مراكز تقنية في بولندا.

    المملكة المتحدة - المقر الرئيسي

    • المكتب 303 ب، 182-184 شارع هاي ستريت نورث E6 2JA
      لندن، إنجلترا

    بولندا - مراكز التكنولوجيا المحلية

    • مجمع مكاتب فابريتشنا المكتبي، أليجا
      بوكوجو 18، 31-564 كراكوف
    • سفارة الأدمغة، كونستروكتورسكا
      11, 02-673 02-673 وارسو، بولندا

      The Codest

    • الصفحة الرئيسية
    • نبذة عنا
    • الخدمات
    • دراسات الحالة
    • اعرف كيف
    • الوظائف
    • القاموس

      الخدمات

    • استشاري
    • تطوير البرمجيات
    • تطوير الواجهة الخلفية
    • تطوير الواجهة الأمامية
    • Staff Augmentation
    • مطورو الواجهة الخلفية
    • مهندسو السحابة
    • مهندسو البيانات
    • أخرى
    • مهندسو ضمان الجودة

      الموارد

    • حقائق وأساطير حول التعاون مع شريك خارجي لتطوير البرمجيات
    • من الولايات المتحدة الأمريكية إلى أوروبا: لماذا تقرر الشركات الأمريكية الناشئة الانتقال إلى أوروبا؟
    • مقارنة مراكز تطوير التكنولوجيا في الخارج: تك أوفشور أوروبا (بولندا)، آسيان (الفلبين)، أوراسيا (تركيا)
    • ما هي أهم التحديات التي تواجه CTOs ومديري تكنولوجيا المعلومات؟
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • شروط استخدام الموقع الإلكتروني

    جميع الحقوق محفوظة © 2025 بواسطة The Codest. جميع الحقوق محفوظة.

    arArabic
    en_USEnglish de_DEGerman sv_SESwedish da_DKDanish nb_NONorwegian fiFinnish fr_FRFrench pl_PLPolish it_ITItalian jaJapanese ko_KRKorean es_ESSpanish nl_NLDutch etEstonian elGreek arArabic