কম্পিউটার

কেন এবং কিভাবে AWS ElasticBeanstalk এবং RDS এর সাথে আপনার Rails 6 অ্যাপ হোস্ট করবেন

একটি অ্যাপ্লিকেশন লেখার সময়, আপনাকে একটি প্রধান সমস্যা নিয়ে ভাবতে হবে তা হল অ্যাপ্লিকেশনটি বিশ্বের অন্যান্য অংশের সাথে কীভাবে ভাগ করা হবে৷

একটি সাধারণ পদ্ধতি হল Heroku চালু করা। এটি সেট আপ করা সহজ এবং সম্পূর্ণরূপে পরিচালিত হয়৷ কিন্তু, দলগুলোর জন্য পরে Heroku বাদ দেওয়াও সাধারণ ব্যাপার। তাদের ট্রাফিক বাড়ার সাথে সাথে হেরোকু খুব ব্যয়বহুল এবং অনমনীয় হয়ে ওঠে।

যদি AWS-এর মতো সাধারণ-উদ্দেশ্য প্ল্যাটফর্ম থেকে আপনি যে নমনীয়তা এবং খরচ-সঞ্চয় পান তা ছেড়ে না দিয়ে Heroku-এর মতো সহজে একটি নতুন অ্যাপ্লিকেশন স্থাপন করা সম্ভব হলে কী হবে? এটি সম্ভব, ইলাস্টিক বিনস্টক ব্যবহার করে -- AWS থেকে একটি পরিষেবা।

এই নিবন্ধে, আমি আপনাকে একটি Rails 6 অ্যাপ্লিকেশন সেট আপ করতে এবং এটিকে এলাস্টিকবিনস্টাল্ক কম্পিউট বেস হিসাবে এবং RDS (রিলেশনাল ডেটাবেস পরিষেবা)- বিশেষ করে পোস্টগ্রেস পরিষেবা - ডেটা স্টোর হিসাবে ব্যবহার করে AWS-এ চালাতে যাচ্ছি৷ পি>

এই টিউটোরিয়ালের শেষে, আপনি নিম্নলিখিতগুলি করতে সক্ষম হবেন:

  1. কিছু ​​রুট সহ একটি Rails 6 অ্যাপ সেট আপ করুন এবং এটি স্থানীয়ভাবে চালান।
  2. একটি AWS অ্যাকাউন্ট তৈরি করুন।
  3. মুক্ত-স্তরের সংস্থানগুলি ব্যবহার করে ইলাস্টিকবিনস্টালকে একটি অ্যাপ সেট আপ এবং স্থাপন করুন৷

চলো ডুব দিই।

Elasticbeanstalk এবং RDS কি?

Elasticbeanstalk কী এবং এটি যে সমস্যার সমাধান করে সে সম্পর্কে একটি পরিষ্কার ধারণা পেতে, প্রথমে আমাজনের EC2 অফার সম্পর্কে কথা বলা যাক৷

EC2 এর অর্থ হল ইলাস্টিক কম্পিউট ক্লাউড 2। এই পরিষেবাটি আপনাকে ভিপিসি সরবরাহ করার অনুমতি দেয়, যা মূলত শুধুমাত্র কম্পিউটার, আপনি যে ওএস চয়ন করেন (যেমন, উবুন্টু) চালান। আপনার অ্যাপটি তখন এই কম্পিউটারের অভ্যন্তরে বাস করবে এবং এর কাজগুলি প্রদান করতে ফাইল সিস্টেম এবং RAM এর মতো সংস্থানগুলি অ্যাক্সেস করবে৷ শেষ পর্যন্ত, আপনার অ্যাপটি আপনার স্থানীয় মেশিনে যেভাবে চলে ঠিক সেভাবেই চলবে, শুধুমাত্র অ্যামাজনের মালিকানাধীন একটি মেশিনে এবং অ্যামাজনের অবকাঠামো ব্যবহার করে ইন্টারনেটের মাধ্যমে অ্যাক্সেসযোগ্য৷

এখন, এলিস নামের একজন ব্যবহারকারীকে কল্পনা করুন, যিনি EC2 এ একটি উদাহরণ প্রদান করেছেন। অ্যালিসকে নিম্নলিখিতগুলি করতে হবে:

  • তার অ্যাপে অনুরোধ করার জন্য একটি নিরাপত্তা গ্রুপ সেট আপ করুন।
  • একটি লোড ব্যালেন্সার সেট আপ করুন৷
  • উদাহরণে SSH, তার অ্যাপ এবং পরিবেশের গোপনীয়তা সেট আপ করুন এবং আরও অনেক কিছু।

যদিও এটি আপনাকে আপনার মেশিনের সম্পূর্ণ নিয়ন্ত্রণ দেয় এবং এটি কী এবং কীভাবে চলে, কখনও কখনও, আপনি অবকাঠামো নয় বরং অ্যাপে ফোকাস করতে চান। এখানেই ইলাস্টিকবিনস্টক আসে।

Elasticbeanstalk একটি CLI প্রদান করে যা এই সব করা সহজ করে এবং এর বেশিরভাগই স্বয়ংক্রিয় করে, যেমন নিরাপত্তা গোষ্ঠী এবং লোড ব্যালেন্সার তৈরি করা। যদিও অন্তর্নিহিত অবকাঠামোটি এখনও EC2, বিমূর্ততার একটি স্তর এটির উপরে যোগ করা হয়েছে, একটি ভিজ্যুয়াল ড্যাশবোর্ড সহ যা আপনাকে পরিবেশের ভেরিয়েবল, ডাটাবেস এবং স্বয়ংক্রিয়-স্কেলিং সেট আপ করার পাশাপাশি লগগুলি পেতে এবং অন্যান্য ফাংশন সম্পাদন করতে দেয়। একটি খুব সহজ পদ্ধতি।

রেল কি?

একটি ওয়েব অ্যাপ্লিকেশন চালু এবং চালু করার জন্য অনেক সরঞ্জাম ব্যবহার করা যেতে পারে। সাধারণত, আপনি যে লাইব্রেরি বা ফ্রেমওয়ার্কটি ব্যবহার করেন সেটি বেশিরভাগ ভাষা দ্বারা নির্ধারিত হয় যেটিতে এটি প্রোগ্রাম করা হয়।

আপনার পছন্দের ভাষা যদি রুবি হয়, তাহলে আপনি ব্যবহার করতে বেছে নিতে পারেন একটি জনপ্রিয় ফ্রেমওয়ার্ক হল রেল (আনুষ্ঠানিকভাবে রুবি অন রেল বলা হয়)। 2003 সালে বেসক্যাম্পে রেলগুলি তৈরি করা হয়েছিল, এবং বছরের পর বছর ধরে, এটি একটি পূর্ণ-বৈশিষ্ট্যযুক্ত এবং খুব পরিপক্ক ফ্রেমওয়ার্কে বিকশিত হয়েছে যাতে একটি আধুনিক ওয়েব অ্যাপ তৈরি করার জন্য আপনি যা ভাবতে পারেন তা প্রায় সবই অন্তর্ভুক্ত করে৷

আপনি রেল দিয়ে তৈরি করতে পারেন এমন কিছু জিনিস যা একটি ব্যক্তিগত ব্লগের মতো সহজ এবং Airbnb এবং Github-এর মতো জটিল কিছু অন্তর্ভুক্ত করে। আমি নিশ্চিত আপনি এই দুটি কোম্পানির সাথে পরিচিত, এবং হ্যাঁ, তারা রেলে চলে!

যদিও এই নিবন্ধটি AWS-এ একটি Rails অ্যাপ স্থাপনের উদাহরণ ব্যবহার করে, তবে Python/Django বা PHP/Laravel-এর মতো ব্যবহৃত ভাষা এবং কাঠামো নির্বিশেষে বেশিরভাগ মূল ধারণা একই থাকে৷

রেল সেট আপ করা

মনে রাখবেন যে নির্দেশিত কমান্ডগুলি বাক্সের বাইরে একটি UNIX/Linux-ভিত্তিক সিস্টেমে কাজ করবে। আপনি যদি উইন্ডোজে থাকেন, তাহলে Linux এবং/অথবা Microsoft Windows টার্মিনালের জন্য Windows সাবসিস্টেম ব্যবহার করার কথা বিবেচনা করুন৷

শুরুর জন্য, আপনার রুবি সংস্করণ যাচাই করুন:

ruby -v

যেকোনো কিছু 2.5.0 এবং উপরে যেতে ভাল. যদি না হয়, সর্বশেষ সংস্করণ পেতে এখানে যান. আমার 2.6.5 সংস্করণ ইনস্টল করা আছে।

আপনার রুবি ইনস্টলেশনের সাথে সবকিছু ঠিকঠাক থাকলে, এগিয়ে যান এবং রেলগুলি ইনস্টল করুন৷

gem install rails

একবার সেই কমান্ডটি চলে গেলে, আপনার রেল সংস্করণ নিশ্চিত করুন:

rails --version

আপনি যদি 6.0.0 এর উপরে কিছু দেখতে পান, তাহলে আপনি এই টিউটোরিয়ালের বাকি অংশের জন্য যেতে পারেন।

Postgres সেট আপ করা হচ্ছে

আমরা এই টিউটোরিয়ালের জন্য আমাদের ডেটা স্টোর হিসাবে Postgres DB ব্যবহার করব। যেকোনো প্ল্যাটফর্মে এটি ইনস্টল করার জন্য এখানে একটি চমৎকার নির্দেশিকা রয়েছে৷

আমাদের কোড যোগ করা এবং চালানো

নাম, মুক্তির বছর এবং জেনারের মতো মুভি ডেটা সংরক্ষণ করার জন্য আমরা একটি সাধারণ API তৈরি করব। প্রদর্শনের উদ্দেশ্যে API-এর শুধুমাত্র 2টি শেষ পয়েন্ট থাকবে, GET &POST।

নিম্নলিখিত কমান্ড দিয়ে একটি নতুন Rails API অ্যাপ তৈরি করুন:

rails new movie-api --api --database=postgresql

একবার উপরের কমান্ডটি সফলভাবে চালানো হলে, পরবর্তী কমান্ডগুলি চালানোর আগে তৈরি করা প্রোজেক্ট ফোল্ডারে ডিরেক্টরি পরিবর্তন করতে ভুলবেন না।

তারপর, আমরা আমাদের মডেল তৈরি করতে নিম্নলিখিত কমান্ডটি চালাতে পারি:

rails generate model Movie name:string year:integer genre:string

এখন ডাটাবেস সেট আপ করি এবং মাইগ্রেশন চালাই:

rails db:setup
rails db:migrate

এই দুটি কমান্ড সফল হলে, আপনি db/migrate এ একটি নতুন স্থানান্তর দেখতে সক্ষম হবেন নিম্নলিখিত অনুরূপ কোড সহ ফোল্ডার:

class CreateMovies < ActiveRecord::Migration[6.0]
  def change
    create_table :movies do |t|
      t.string :name
      t.integer :year
      t.string :genre

      t.timestamps
    end
  end
end

তারপরে আমরা এগিয়ে যাব এবং আমাদের API এন্ডপয়েন্টের জন্য কন্ট্রোলার লজিক কোড যোগ করব:

rails g controller api/Movies

তারপর, app/controllers/movies_controller.rb ফাইলে নিম্নলিখিত কোডটি যোগ করুন :

class Api::MoviesController < ApplicationController
    # GET /movies
    def show
        @movies = Movie.all
        render json: @movies
    end

    # POST /movies
    def create
        @movie = Movie.new(movie_params)

        if @movie.save
            render json: @movie
        else
            render error: {error: 'Failed to add movie record'}, status: 400
        end
    end

    private

    def movie_params
        params.require(:movie).permit(:name, :year, :genre)
    end
end

এর রুট সেট আপ করা যাক. এই কোডটি config/routes.rb.-এ যায়

Rails.application.routes.draw do
  # For details on the DSL available within this file, see https://guides.rubyonrails.org/routing.html
  namespace :api do
    resource :movies
  end
end

এই মুহুর্তে, আপনি rails routes ব্যবহার করে একটি স্বাস্থ্য পরীক্ষা চালাতে পারেন সবকিছু সঠিকভাবে কাজ করছে তা যাচাই করার জন্য কমান্ড। আপনি নিম্নলিখিত অনুরূপ কিছু ধারণকারী আউটপুট দেখতে হবে:কেন এবং কিভাবে AWS ElasticBeanstalk এবং RDS এর সাথে আপনার Rails 6 অ্যাপ হোস্ট করবেন

আমাদের সার্ভার চালানোর আগে, আসুন কিছু বীজ ডেটা db/seeds.rb এ যোগ করি :

# This file should contain all the record creation needed to seed the database with its default values.
# The data can then be loaded with the Rails db:seed command (or created alongside the database with db:setup).
movies = Movie.create([
    { name: 'Star Wars', year: 1977, genre: 'SCI-FI'}, 
    { name: 'Lord of the Rings', year: 2001, genre: 'Fantasy' }
])

DB-তে ডেটা যোগ করতে নিম্নলিখিত কমান্ডটি চালান:

rails db:seed

আপনি এখন নিম্নলিখিত কমান্ড দিয়ে API চালাতে পারেন:

rails s

আপনি যদি https://127.0.0.1:3000/api/movies,-এ নেভিগেট করেন আপনি আমাদের বীজ তথ্য দেখতে হবে:

[
    {
        "id": 1,
        "name": "Star Wars",
        "year": 1977,
        "genre": "SCI-FI",
        "created_at": "2020-01-01T10:04:56.100Z",
        "updated_at": "2020-01-01T10:04:56.100Z"
    },
    {
        "id": 2,
        "name": "Lord of the Rings",
        "year": 2001,
        "genre": "Fantasy",
        "created_at": "2020-01-01T10:04:56.108Z",
        "updated_at": "2020-01-01T10:04:56.108Z"
    }
]

আপনার AWS অ্যাকাউন্ট তৈরি করা হচ্ছে

প্রারম্ভিকদের জন্য, এই ওয়েবসাইটে যান. আপনার যদি এখনও কোনো অ্যাকাউন্ট না থাকে, বা আপনি আপনার ব্রাউজার থেকে একটিতে সাইন ইন না করে থাকেন, তাহলে আপনাকে এর মতো একটি পৃষ্ঠা দেখতে হবে:

কেন এবং কিভাবে AWS ElasticBeanstalk এবং RDS এর সাথে আপনার Rails 6 অ্যাপ হোস্ট করবেন

এগিয়ে যান এবং কমলা Create an AWS Account ক্লিক করুন উপরের-ডান কোণে বোতাম (অথবা যদি আপনার একটি অ্যাকাউন্ট থাকে, আপনার কনসোলে সাইন ইন করুন)। একবার আপনি সাইনআপ ফর্ম পূরণ করলে (Account Type বাছাই করা নিশ্চিত করুন Personal হিসাবে আপনার ঠিকানা পূরণ করার সময়), আপনাকে সরাসরি কনসোলে ফেলে দেওয়া হবে। আপনার ইমেল ঠিকানা যাচাই করতে ভুলবেন না!

চিন্তা করবেন না যদি জিনিসগুলি অপ্রতিরোধ্য দেখায়। আপনি কোথায় যেতে চান তা জানার পরে UI নেভিগেট করা বেশ সহজ৷

একটি IAM ব্যবহারকারী সেট আপ করুন

পরবর্তী জিনিস আমাদের করতে হবে একটি IAM ব্যবহারকারী সেট আপ করা হয়. এটি আমাদের API কীগুলিতে অ্যাক্সেস দেবে যা আমরা SSH এ ব্যবহার করতে পারি এবং AWS এর বাইরে থেকে আমাদের সংস্থানগুলি অ্যাক্সেস করতে পারি৷

নিরাপত্তার উদ্দেশ্যে ডিফল্ট অ্যাডমিন শংসাপত্রগুলি ব্যবহার করার পরিবর্তে ব্যবহারকারীর প্রয়োজনীয় সংস্থানগুলিতে অ্যাক্সেস সহ একটি পৃথক IAM ব্যবহারকারী থাকাও একটি ভাল ধারণা৷

হোম পেজে, IAM সার্চ করুন এবং IAM হোম পেজে নেভিগেট করুন। কেন এবং কিভাবে AWS ElasticBeanstalk এবং RDS এর সাথে আপনার Rails 6 অ্যাপ হোস্ট করবেন

IAM হোমপেজে, IAM Resources, এর অধীনে Users: 0. এ ক্লিক করুন কেন এবং কিভাবে AWS ElasticBeanstalk এবং RDS এর সাথে আপনার Rails 6 অ্যাপ হোস্ট করবেন

এর পরে, Add User. এ ক্লিক করুন আপনি আপনার পছন্দের ব্যবহারকারীর নামটি পূরণ করতে পারেন এবং তারপর Programmatic access. এর জন্য চেকবক্স নির্বাচন করতে পারেন। কেন এবং কিভাবে AWS ElasticBeanstalk এবং RDS এর সাথে আপনার Rails 6 অ্যাপ হোস্ট করবেন

পরবর্তী স্ক্রিনে, Attach existing policies directly নির্বাচন করুন এবং তারপর AdministratorAccess. অনুসন্ধান করতে অনুসন্ধান বাক্সটি ব্যবহার করুন কেন এবং কিভাবে AWS ElasticBeanstalk এবং RDS এর সাথে আপনার Rails 6 অ্যাপ হোস্ট করবেন

পরবর্তী পৃষ্ঠায়, একটি নাম ট্যাগ যোগ করুন যাতে আপনি IAM শংসাপত্রের তালিকা থেকে পরে আপনার ব্যবহারকারীকে সনাক্ত করতে পারেন:কেন এবং কিভাবে AWS ElasticBeanstalk এবং RDS এর সাথে আপনার Rails 6 অ্যাপ হোস্ট করবেন

অবশেষে, পর্যালোচনা পৃষ্ঠায়, Create User.-এ ক্লিক করুন

পরবর্তী পৃষ্ঠায়, আপনার শংসাপত্র ব্যবহার করে CSV ফাইলটি ডাউনলোড করুন। আমাদের শেষ অংশের জন্য তাদের প্রয়োজন হবে।

একবার আপনার কাছে credentials.csv, নামের ফাইলটি আছে আপনি এটির মানগুলি দেখতে যেকোনো স্প্রেডশীট অ্যাপ বা সম্পাদকে এটি খুলতে পারেন। আমরা বেশিরভাগই Access key ID এ আগ্রহী এবং Secret accesss key.

আপনাকে যা করতে হবে তা হল আপনার হোম ফোল্ডারে গিয়ে .aws নামে একটি ফোল্ডার তৈরি করা। . এই ফোল্ডারের ভিতরে, config. নামে একটি ফাইল রাখুন লক্ষ্য করুন যে ফোল্ডারের নাম একটি . এবং ফাইলের কোন এক্সটেনশন নেই। সম্পূর্ণ পথটি /Users/your-user/.aws/config. এর মত হওয়া উচিত

আপনি যদি .aws তৈরি করতে না পারেন ফোল্ডার এবং config ফাইল, আপনি আপাতত এটি এড়িয়ে যেতে পারেন। গুরুত্বপূর্ণ বিষয় হল আপনার শংসাপত্র সহ CSV ফাইলটি পরবর্তীতে ব্যবহারের জন্য হাতে থাকা।

config-এ নিম্নলিখিতগুলি রাখুন৷ ফাইল:

[profile eb-cli]
region = us-east-1
aws_access_key_id = your-aws-access-key-id
aws_secret_access_key = your-aws-secret-access-key

আপনি সাইন ইন করার সময় AWS অ্যাকাউন্ট পৃষ্ঠার উপরের-ডান কোণে আপনার AWS অঞ্চল খুঁজে পেতে পারেন৷

RDS DB তৈরি করুন

আমরা এখন এগিয়ে যাব এবং Postgres DB তৈরি করব যার সাথে আমাদের অ্যাপ যোগাযোগ করবে। IAM-এর মতো, আপনি RDS অনুসন্ধান করতে এবং এটিতে নেভিগেট করতে হোম পেজে সার্চবক্স ব্যবহার করতে পারেন।

RDS-এর হোম পেজে, Create database.-এ ক্লিক করুন কেন এবং কিভাবে AWS ElasticBeanstalk এবং RDS এর সাথে আপনার Rails 6 অ্যাপ হোস্ট করবেন

পরবর্তী পৃষ্ঠায়, Standard Create নির্বাচন করুন; তারপর, Engine Options, এর অধীনে PostgreSQL. নির্বাচন করুন কেন এবং কিভাবে AWS ElasticBeanstalk এবং RDS এর সাথে আপনার Rails 6 অ্যাপ হোস্ট করবেন

আপনি স্ক্রলিং চালিয়ে যাওয়ার সাথে সাথে Free tier বেছে নিন Templates এর অধীনে , এবং Settings, এর অধীনে DB instance identifier দিন movie-api. হবে আপনি Master username ছেড়ে যেতে পারেন postgres, হিসাবে কিন্তু এগিয়ে যান এবং একটি পাসওয়ার্ড যোগ করুন। কেন এবং কিভাবে AWS ElasticBeanstalk এবং RDS এর সাথে আপনার Rails 6 অ্যাপ হোস্ট করবেন

DB instance size, বিভাগগুলি এড়িয়ে যান Storage, এবং Availability & durability. Connectivity, এর অধীনে Additional connectivity configuration নির্বাচন করুন এবং Publicly accessible সেট করুন Yes এবং VPC Security group Create new. কেন এবং কিভাবে AWS ElasticBeanstalk এবং RDS এর সাথে আপনার Rails 6 অ্যাপ হোস্ট করবেন

চালিয়ে যান এবং Database authentication. এড়িয়ে যান Additional configuration, এর অধীনে Initial database name যোগ করতে ভুলবেন না; movie_api_db করব. একবার সেট হয়ে গেলে, বাকি সব এড়িয়ে যান এবং Create Database এ ক্লিক করুন পৃষ্ঠার নীচে।

সবশেষে, RDS ড্যাশবোর্ডে ফিরে, VPC Security groups এর অধীনে ডিফল্ট গ্রুপে ক্লিক করুন ডান কলামে:কেন এবং কিভাবে AWS ElasticBeanstalk এবং RDS এর সাথে আপনার Rails 6 অ্যাপ হোস্ট করবেন

পরবর্তী পৃষ্ঠার নীচে, Inbound নির্বাচন করুন এবং নিম্নলিখিত হিসাবে দেখতে নিয়ম সম্পাদনা করুন:কেন এবং কিভাবে AWS ElasticBeanstalk এবং RDS এর সাথে আপনার Rails 6 অ্যাপ হোস্ট করবেন

এছাড়াও, Outbound নিশ্চিত করুন নিয়ম নিম্নলিখিত মত দেখায়:কেন এবং কিভাবে AWS ElasticBeanstalk এবং RDS এর সাথে আপনার Rails 6 অ্যাপ হোস্ট করবেন

Elasticbeanstalk অ্যাপ তৈরি করুন

ইলাস্টিক বিনস্টাল হোম পেজে নেভিগেট করুন এবং Create New Application. এ ক্লিক করুন। কেন এবং কিভাবে AWS ElasticBeanstalk এবং RDS এর সাথে আপনার Rails 6 অ্যাপ হোস্ট করবেন

প্রয়োজনে নতুন আবেদনপত্র পূরণ করুন। কেন এবং কিভাবে AWS ElasticBeanstalk এবং RDS এর সাথে আপনার Rails 6 অ্যাপ হোস্ট করবেন

তারপরে আপনি বার্তা সহ একটি পৃষ্ঠা দেখতে পাবেন No environments currently exist for this application. Create one now.Create one now.-এ ক্লিক করুন

এরপরে, Web server environment. নির্বাচন করুন কেন এবং কিভাবে AWS ElasticBeanstalk এবং RDS এর সাথে আপনার Rails 6 অ্যাপ হোস্ট করবেন

পরবর্তী বিভাগে, Environment name পরিবর্তন করুন production-env. Domain ছেড়ে দিন ফাঁকা তারপর, Base Configuration, এর অধীনে Preconfigured platform নির্বাচন করুন এবং Ruby বেছে নিন ড্রপডাউন থেকে আপনি Application code ছেড়ে যেতে পারেন Sample application-এ; তারপর, এগিয়ে যান এবং Create environment. এ ক্লিক করুন এটি কিছুটা সময় নেবে, তাই ধৈর্য ধরুন। কেন এবং কিভাবে AWS ElasticBeanstalk এবং RDS এর সাথে আপনার Rails 6 অ্যাপ হোস্ট করবেন

একবার হয়ে গেলে, আপনার এমন একটি পৃষ্ঠা দেখতে হবে যা এইরকম দেখাচ্ছে:কেন এবং কিভাবে AWS ElasticBeanstalk এবং RDS এর সাথে আপনার Rails 6 অ্যাপ হোস্ট করবেন

এনভায়রনমেন্ট আইডির পরে দেওয়া ইউআরএল খুঁজুন। ইলাস্টিকবিনস্টালকের ডিফল্ট রুবি অ্যাপটি পরীক্ষা করতে এটিতে ক্লিক করুন। খুব শীঘ্রই, আপনার API একই URL-এ চলবে৷

আপনার অ্যাপকে স্থাপনার জন্য প্রস্তুত করুন

অ্যাপটিকে স্থাপনের জন্য প্রস্তুত করতে, আমাদের প্রথমে আমাদের ওয়েব সার্ভার কনফিগার করতে হবে।

যেহেতু রেলগুলি Puma, একটি প্রোডাকশন-রেডি ওয়েব সার্ভারের সাথে এটির ডিফল্ট সার্ভার হিসাবে প্রেরণ করে, আপনি সরাসরি config/puma.rb. এ কনফিগার ফাইলটি সম্পাদনা করতে পারেন।

নিম্নলিখিত মত দেখতে আপনার ফাইল সম্পাদনা করুন:

max_threads_count = ENV.fetch("RAILS_MAX_THREADS") { 5 }
min_threads_count = ENV.fetch("RAILS_MIN_THREADS") { max_threads_count }
threads min_threads_count, max_threads_count

# Specifies the `port` that Puma will listen on to receive requests; default is 3000.
#
port        ENV.fetch("PORT") { 3000 }

# Specifies the `environment` that Puma will run in.
#
environment ENV.fetch("RAILS_ENV") { "development" }

# Specifies the `pidfile` that Puma will use.
pidfile ENV.fetch("PIDFILE") { "tmp/pids/server.pid" }

# Specifies the number of `workers` to boot in clustered mode.
# Workers are forked web server processes. If using threads and workers together,
# the concurrency of the application would be max `threads` * `workers.`
# Workers do not work on JRuby or Windows (both of which do not support
# processes).
#
workers ENV.fetch("WEB_CONCURRENCY") { 2 } # <------ uncomment this line

# Use the `preload_app!` method when specifying a `workers` number.
# This directive tells Puma to first boot the application and load code
# before forking the application. This takes advantage of Copy On Write
# process behavior so workers use less memory.
#
preload_app! # <------ uncomment this line

# Allow Puma to be restarted by the `Rails restart` command.
plugin :tmp_restart

এছাড়াও, config/database.yml এর নীচে সম্পাদনা করুন বিদ্যমান production মন্তব্য করে কনফিগার করুন এবং এর পরিবর্তে এটি ব্যবহার করুন:

production:
  url: <%= ENV['DATABASE_URL'] %>

সবশেষে, AWS-এ আপনার Elasticbeanstalk কনসোলে যান, production-env নির্বাচন করুন পরিবেশ, এবং তারপর Configuration. এ যান

কনফিগারেশন ওভারভিউ স্ক্রিনে, Modify এ ক্লিক করুন Software এর জন্য অংশ:

কেন এবং কিভাবে AWS ElasticBeanstalk এবং RDS এর সাথে আপনার Rails 6 অ্যাপ হোস্ট করবেন

এরপর, DATABASE_URL যোগ করুন এবং RAILS_ENV , এবং তারপর 'প্রয়োগ করুন'-এ ক্লিক করুন:

কেন এবং কিভাবে AWS ElasticBeanstalk এবং RDS এর সাথে আপনার Rails 6 অ্যাপ হোস্ট করবেন

মনে রাখবেন যে আপনার DB URL টি Endpoint ব্যবহার করে তৈরি করা হয়েছে আপনি RDS ড্যাশবোর্ড থেকে আগে নোট করেছেন। এটি postgresql://postgres:YOURPASSWORD@ENDPOINT:5432/movie_api_db ফর্ম্যাটে রয়েছে . আপনার বেছে নেওয়া পাসওয়ার্ড মনে না থাকলে, আপনি Modify এ পরিবর্তন করতে পারেন আপনার DB এর RDS ড্যাশবোর্ডের বিভাগ।

ম্যানুয়াল স্থাপনা

এটি কমান্ড লাইন থেকে আপনার অ্যাপের একটি জিপ ফাইল তৈরি করা এবং তারপর এটিকে আপনার ইলাস্টিকবিনস্টালক কনসোলে আপলোড করার মতোই সহজ৷

প্রথমত, cd প্রকল্প ফোল্ডারে। একটি জিপ ফাইল তৈরি করতে, আপনি নিম্নলিখিত কমান্ডটি চালাতে পারেন:

zip -r deploy_1.zip .

deploy_1.zip তৈরি করা জিপ ফোল্ডারের নাম হবে এবং এটি অন্যান্য ফাইলের সাথে আপনার প্রকল্প ডিরেক্টরিতে প্রদর্শিত হবে। সম্পন্ন? চমৎকার। AWS-এ।

Elasticbeanstalk এর ড্যাশবোর্ড থেকে, Upload and Deploy এ ক্লিক করুন :

কেন এবং কিভাবে AWS ElasticBeanstalk এবং RDS এর সাথে আপনার Rails 6 অ্যাপ হোস্ট করবেন

আপনি সংস্করণ লেবেলটিকে আরও অর্থপূর্ণ কিছুতে পরিবর্তন করতে পারেন:

কেন এবং কিভাবে AWS ElasticBeanstalk এবং RDS এর সাথে আপনার Rails 6 অ্যাপ হোস্ট করবেন

একবার Elasticbeanstalk পরিবেশ আপডেট করা শেষ হলে, আপনি আপনার API চলমান দেখতে আপনার পরিবেশ URL দেখতে পারেন! কিছু অনুরোধ পাঠাতে এবং AWS-এ আপনার DB পূরণ করতে আপনি একটি বিনামূল্যের পরিষেবা ব্যবহার করতে পারেন, যেমন এটি৷

EB CLI এর সাথে স্থাপনা

Elasticbeanstalk CLI কিছু কমান্ডের সাহায্যে এই মুহুর্তে আপনাকে ম্যানুয়ালি যা করতে হয়েছে তার বেশিরভাগই সহজ করে তোলে। আমি আপনাকে দেখাব কিভাবে এটি সেট আপ করবেন এবং আমাদের বর্তমান প্রকল্পে এটি ব্যবহার করবেন। এটি সব আপনার IAM ব্যবহারকারীর সঠিকভাবে সেট আপ করার উপর নির্ভর করে, তাই নিশ্চিত করুন যে এই ধাপ থেকে সবকিছু ঠিক আছে বা আপনার কাছে আপনার শংসাপত্র সহ CSV প্রস্তুত আছে।

বেশিরভাগ কম্পিউটারের জন্য, আপনার ইতিমধ্যেই পাইথন ইনস্টল করা উচিত। ইনস্টলেশন, তাই, নিম্নলিখিত হিসাবে সহজ হবে:

pip install awsebcli --user

MacOS-এ, আপনিও ব্যবহার করতে পারেন:

brew install awsebcli

আপনি এখানে ইনস্টলেশন সম্পর্কে আরও পড়তে পারেন।

ইনস্টলেশন শেষ হলে, cd আপনার প্রোজেক্ট ফোল্ডারে এবং eb init. চালান

আপনার AWS পরিবেশ অনুযায়ী প্রম্পটগুলি অনুসরণ করুন। সঠিক সংখ্যা নির্বাচন প্রবেশ করে একটি অঞ্চল নির্বাচন করুন:

Select a default region
1) us-east-1 : US East (N. Virginia)
2) us-west-1 : US West (N. California)
3) us-west-2 : US West (Oregon)
4) eu-west-1 : EU (Ireland)
5) eu-central-1 : EU (Frankfurt)
6) ap-south-1 : Asia Pacific (Mumbai)
7) ap-southeast-1 : Asia Pacific (Singapore)
8) ap-southeast-2 : Asia Pacific (Sydney)
9) ap-northeast-1 : Asia Pacific (Tokyo)
10) ap-northeast-2 : Asia Pacific (Seoul)
11) sa-east-1 : South America (Sao Paulo)
12) cn-north-1 : China (Beijing)
13) cn-northwest-1 : China (Ningxia)
14) us-east-2 : US East (Ohio)
15) ca-central-1 : Canada (Central)
16) eu-west-2 : EU (London)
17) eu-west-3 : EU (Paris)

রুবি সংস্করণ অংশের জন্য, Puma ব্যবহার করে প্রাসঙ্গিক সংস্করণ নির্বাচন করুন:

1) Ruby 2.6 (Passenger Standalone)
2) Ruby 2.6 (Puma)
3) Ruby 2.5 (Passenger Standalone)
4) Ruby 2.5 (Puma)
5) Ruby 2.4 (Passenger Standalone)
6) Ruby 2.4 (Puma)
7) Ruby 2.3 (Passenger Standalone)
8) Ruby 2.3 (Puma)
9) Ruby 2.2 (Passenger Standalone)
10) Ruby 2.2 (Puma)
11) Ruby 2.1 (Passenger Standalone)
12) Ruby 2.1 (Puma)
13) Ruby 2.0 (Passenger Standalone)
14) Ruby 2.0 (Puma)
15) Ruby 1.9.3

আমি 2 বাছাই করেছি।

বাকি প্রম্পটগুলি দিয়ে যান এবং CodeCommit ব্যবহার করতে 'না' নির্বাচন করুন৷ এবং SSH সেট আপ করতে 'না'।

আপনি AWS কনফিগারেশন সেট আপ না করলে, CLI আপনাকে আপনার AWS কীগুলির জন্য অনুরোধ করবে৷ প্রয়োজনে সেগুলি যোগ করুন৷

একবার এটি সম্পন্ন হলে, CLI প্রস্থান করবে। তারপর আপনি কমান্ড চালাতে পারেন, যেমন eb status, আমরা যে অ্যাপটি স্থাপন করেছি তার স্থিতি পরীক্ষা করতে।

Environment details for: production-env
  Application name: movie-api
  Region: us-east-2
  Deployed Version: Deploy 2-2
  Environment ID: e-mab3kjy6pp
  Platform: arn:aws:elasticbeanstalk:us-east-2::platform/Puma with Ruby 2.6 running on 64bit Amazon Linux/2.11.1
  Tier: WebServer-Standard-1.0
  CNAME: production-env.qnbznvpp2t.us-east-2.elasticbeanstalk.com
  Updated: 2020-01-22 23:37:17.183000+00:00
  Status: Ready
  Health: Green

একটি নতুন সংস্করণ স্থাপন করতে, কেবল eb deploy. চালান

এবং এটাই! আপনি এখানে চেষ্টা করতে পারেন এমন অন্যান্য CLI কমান্ড সম্পর্কে আরও পড়তে পারেন

সারাংশ

এই টিউটোরিয়ালে, আমরা শিখেছি কিভাবে একটি সহজ Rails API সেট আপ করতে হয়, কিভাবে AWS রিসোর্স সেট আপ করতে হয়, যেমন Elasticbeanstalk এবং RDS, এবং কিভাবে অ্যাপটি ব্যবহার করতে হয়।

আমাদের ক্লাউড অ্যাপে ডিপ্লয়মেন্ট স্বয়ংক্রিয় করতে ইলাস্টিকবিনস্টালক সিএলআই কীভাবে ব্যবহার করবেন তাও আমরা কভার করেছি। আপনি এখন শিখেছেন কিভাবে আপনার স্থানীয় মেশিনে কাজ করা অ্যাপ থেকে AWS-এ বিশ্বের সাথে শেয়ার করা একটি কার্যকরী অ্যাপে যেতে হয়।


  1. কিভাবে ম্যালওয়্যারবাইটস দিয়ে আপনার কম্পিউটার ইনস্টল এবং পরিষ্কার করবেন

  2. কিভাবে উইন্ডোজ 10 এ আপনার ফোন সেট আপ এবং ব্যবহার করবেন

  3. কিভাবে আপনার আইপ্যাড এবং আইফোন দিয়ে একটি QR কোড স্ক্যান করবেন?

  4. একটি ব্যক্তিগত অনুস্মারক অ্যাপ কীভাবে ব্যবহার করবেন এবং কেন