A Rails 5.2 PostgreSQL alkalmazás telepítése az AWS Elastic Beanstalk alkalmazásra

Hivatalos, a Heroku használata az összes eddigi Rails projektemnél elrontott. Miután néhány AWS-kreditet kaptam egy pályaversenynek köszönhetően, úgy döntöttem, hogy legújabb projektemet az Elastic Beanstalk-on (AWS Heroku versenyzője) telepítem. Csak annyit kell mondanom, hogy hiányzik Heroku.

Jaj, ha hasonló helyzetben van, itt talál részletes utasításokat a Rails 5.2 / PostgreSQL alkalmazás Elastic Beanstalk alkalmazásra történő telepítéséhez.

Az Elastic Beanstalk CLI telepítése

A terminált ebben az oktatóanyagban fogjuk használni. Kezdjük az „Elastic Beanstalk parancssori felület” telepítésével. Így teheti meg a MacOS-on a Homebrew használatával:

brew install awsebcli

Ha másik platformot használ, akkor a „Hogyan telepítsük az awsebcli-t a [platformjára]” guglizással jó irányba kell vezetnie.

Az Rugalmas Beanstalk inicializálása

Feltételezem, hogy már rendelkezik Amazon Web Services-fiókkal, ha nem folytatja, és létrehoz egyet. Most lépjen be a projekt könyvtárába, és inicializálja az Elastic Beanstalk parancsot:

cd my_projecteb init

Ezután az EB CLI feltesz néhány kérdést az Elastic Beanstalk alkalmazás inicializálásához. Az inicializálási rész egyértelmű. Ha bárhol elakad, megtekintheti a dokumentációban található „Az EB CLI konfigurálása” oldalt.

Új környezet megteremtése

Mint már tudod, az alkalmazásod sokféle környezettel rendelkezhet (gondolj rájuk különböző konfigurációkra). Előfordulhat például, hogy „gyártási” környezetet használ. Ezt a környezetet használja az alkalmazás felhasználóarányos verziójához. De érdemes lehet egy másik környezetet elnevezni „színpadkép”. Itt próbálja ki alkalmazásának új verzióit, mielőtt áttérne a termelési környezetre.

Környezetet létrehozhatunk az alábbi paranccsal:

eb create production

Bevezetés az Elastic Beanstalk-ba

Feltételezve, hogy a Git programot használja, hajtsa végre a változtatásokat az alkalmazás telepítése előtt. Az EB CLI végrehajtja az utolsó elkötelezettséget. Ha a végrehajtás előtt telepíti, akkor az alkalmazás egy korábbi verzióját telepíti.

A változtatások végrehajtása után telepítse a következőket:

eb deploy

Eddig nagyon jó, most be kell állítanunk néhány dolgot, mielőtt az alkalmazásunk valóban működni kezdene.

A fő kulcs beállítása

Használhatja a CLI-t erre a célra is, de ehhez inkább a webpanelt használom. Így:

  1. Lépjen az AWS oldalra, válassza a „Szolgáltatások -> Rugalmas babkagyló” lehetőséget, majd kattintson a környezetére.
  2. Nyissa meg a „Konfiguráció” fület, majd a „Szoftver” mezőben kattintson a „Módosítás” gombra.
  3. A „Környezet tulajdonságai” alatt adjon hozzá egy új kulcsot RAILS_MASTER_KEY. Állítsa az értékét a „master.key” fájl tartalmára. Ezt a fájlt a Rails alkalmazás „config” könyvtárában találja meg.
  4. Kattintson az „Alkalmaz” gombra az oldal alján.

PostgreSQL adatbázis beállítása

Az Elastic Beanstalk egyszerű módszert kínál egy adatbázis létrehozására, amelyet a „Konfiguráció -> Adatbázis” oldalon érhet el. Inkább nem használom, mert ha újra kell építenie az Elastic Beanstalk környezetét, akkor az adatbázisa törlődik. Tehát az Elastic Beanstalk környezetünktől elkülönítve állítjuk be az adatbázist.

PostgreSQL adatbázis létrehozása RDS-en

  1. Lépjen az AWS oldalra, válassza a „Szolgáltatások -> RDS” lehetőséget.
  2. Válassza az „Adatbázis létrehozása” lehetőséget.
  3. Válassza a „PostgreSQL” lehetőséget, majd kattintson a „Tovább” gombra.
  4. Válassza ki a használati esetet: „Gyártás” vagy „Fejlesztés / teszt”, majd kattintson a „Tovább” gombra.
  5. Itt kipróbálhatja a különböző lehetőségeket, és megnézheti a becsült havi költségeket. Számoljon el valamivel, ami a költségvetésén belül van. Kezdhet egy db.t2.micropéldánnyal, nem multi-AZ telepítéssel és általános célú SSD-vel.
  6. Válasszon példányazonosítót, ez egyfajta „névtér”.
  7. Válasszon felhasználónevet és jelszót, tartsa ezeket egyelőre kéznél, kattintson a „Tovább” gombra.
  8. A „Speciális beállítások konfigurálása” szakaszban a fontosak a biztonsági csoportok. Válassza a „Meglévő VPC biztonsági csoportok kiválasztása” lehetőséget, és válassza ki a következő biztonsági nézeteket: „… -AWSEBSecurityGroup-…”
  9. Válasszon egy adatbázis nevet, például my_app_production.
  10. Kattintson az „Adatbázis létrehozása” elemre, ez eltart egy ideig.

Hozzáférés engedélyezése az adatbázishoz

Addig adjuk hozzá a Postgres hozzáférést a biztonsági csoporthoz:

  1. Lépjen az AWS oldalra, válassza a „Szolgáltatások -> EC2” lehetőséget.
  2. Kattintson a bal oldali panelen a „Biztonsági csoportok” elemre.
  3. Válassza ki az előző szakasz biztonsági csoportját.
  4. Lépjen a „Bejövő” fülre, és kattintson a „Szerkesztés” gombra.
  5. Kattintson a „Szabály hozzáadása” elemre. A „Típus” mezőben válassza a „PostgreSQL” lehetőséget, a „Forrás” mezőbe pedig annak a biztonsági csoportnak az azonosítóját, amelyhez hozzáadja ezt a szabályt. Ennek közvetlenül a „Bejövő” fül felett kell lennie, és annak kell kinéznie sg-*.
  6. Kattintson a „Mentés” gombra.

A termelési adatbázis konfigurációjának beállítása

Most a Rails könyvtárban nyissa meg config/database.yml. Változtassa meg úgy:

# ...
production: <<: *default database:  username:  password:  host:  port: 

A releváns környezeti változók hozzáadása az Elastic Beanstalk elemhez

Azt mondtuk a Rails-nek, hogy a fenti környezeti változók segítségével szerezze be az információkat a termelési adatbázishoz. Most meg kell győződnünk arról, hogy az Elastic Beanstalk környezetünk tartalmazza ezeket a változókat:

  1. Lépjen az AWS oldalra, válassza a „Szolgáltatások -> Rugalmas babkagyló” lehetőséget, majd kattintson a környezetére.
  2. Nyissa meg a „Konfiguráció” fület, majd a „Szoftver” mezőben kattintson a „Módosítás” gombra.
  3. A „Környezet tulajdonságai” alatt adja hozzá a következő kulcs-érték párokat:
  4. RDS_DB_NAME: Az adatbázis beállításakor kiválasztott adatbázis neve.
  5. RDS_USERNAME: Az adatbázis beállításakor kiválasztott felhasználónév.
  6. RDS_PASSWORD: Az adatbázis beállításakor kiválasztott jelszó.
  7. RDS_HOSTNAME: Lépjen a „Szolgáltatások -> RDS” oldalra, és ezeket az információkat az adatbázis-példány információs oldalának „Csatlakozás” szakaszában találja meg. „Végpontnak” hívják.
  8. RDS_PORT: Állítsa ezt 5432-re.
  9. Kattintson az „Alkalmaz” gombra az oldal alján.

Ezután kösse be újra a Rails alkalmazáskönyvtárat, és futtassa eb deploy. Érdemes várni néhány percet, mielőtt ezt megtenné, mert az Elastic Beanstalk néhány dolgot a háttérben végez a környezeti változók frissítése után.

Ezen lépések után a Rails alkalmazásnak „futnia kell”.

Még mindig nem működik?

Ha bármilyen probléma merül fel, lépjen az EB környezetébe az AWS webpanelen, kattintson a „Naplók” elemre, és válassza a „Naplók kérése -> Utolsó 100 sor” lehetőséget a naplók megtekintéséhez. De mielőtt ezt megtenném, azt javasoljuk, hogy próbálja meg futtatni a Rails alkalmazást a helyi gép termelési környezetének használatával vesszővel nd rails s RAILS_ENV=product.

Elsőként ismerem el, hogy nem én vagyok a legtapasztaltabb ember a telepítés terén. Mint mondtam, korábban mindig használtam a Herokut, és valószínűleg a jövőbeni projektjeimhez is felhasználom. Ezek a lépések nekem beváltak néhány nap után, amikor a fejemet kapkodtam, és megpróbáltam beállítani a Rails alkalmazást az Elastic Beanstalk-on, ezért ezeket meg akartam osztani abban a reményben, hogy időt spórolhatok meg olyan emberek számára, akik ugyanabban a helyzetben vannak, mint én. Szóval, vegye mindezt egy szem sóval, és sok sikert!

Ha tetszik ez a cikk, kövessen a Twitteren, vagy iratkozzon fel a hírlevelemre, hogy értesítést kapjon, amikor új cikkeket írok. Írok szoftverekről és startupokról.

Ha Rails fejlesztőt keres, jelenleg távmunkára vagyok elérhető. Lépjen kapcsolatba velem bátran a hi {at} evrim.io címen.

Eredetileg az evrim.io címen jelent meg 2018. november 28-án.