
Službeno je, upotreba Herokua za sve moje dosadašnje projekte Railsa pokvarila me. Nakon što sam dobio neke AWS bodove zahvaljujući natjecanju u smotri, odlučio sam svoj najnoviji projekt rasporediti na Elastic Beanstalk (AWS-ov Heroku konkurent). Sve što moram reći je da mi nedostaje Heroku.
Jao, ako ste u sličnoj situaciji, evo detaljnih uputa za postavljanje vaše Rails 5.2 / PostgreSQL aplikacije na Elastic Beanstalk.
Instaliranje Elastic Beanstalk CLI
Terminal ćemo upotrijebiti u ovom vodiču. Počnimo s instaliranjem "Elastičnog sučelja naredbenog retka Beanstalk". Evo kako to učiniti na macOS-u pomoću Homebrewa:
brew install awsebcli
Ako koristite drugu platformu, guglanje "kako instalirati awsebcli na [vašu platformu]" trebalo bi vas odvesti u pravom smjeru.
Inicijalizacija elastičnog zrna graha
Pretpostavit ću da već imate račun Amazon Web Services, ako ne, kreirajte ga. Sada idite u direktorij vašeg projekta i inicijalizirajte Elastic Beanstalk:
cd my_projecteb init
Tada će vam EB CLI postaviti nekoliko pitanja za inicijalizaciju aplikacije Elastic Beanstalk. Dio za inicijalizaciju je jednostavan. Ako negdje zapnete, možete pogledati stranicu "Konfiguriranje EB CLI-a" iz dokumentacije.
Stvaranje novog okruženja
Kao što već znate, vaš program može imati mnogo okruženja (shvatite ih kao različite konfiguracije). Na primjer, možda imate "proizvodno" okruženje. Ovo je okruženje koje upotrebljavate za verziju svoje aplikacije okrenute prema korisnicima. Ali možda biste željeli imati drugo okruženje pod nazivom "inscenacija". Ovdje isprobavate nove verzije aplikacije prije nego što je gurnete u produkcijsko okruženje.
Okruženje možemo stvoriti pomoću naredbe u nastavku:
eb create production
Raspoređivanje u Elastično zrno graha
Pod pretpostavkom da koristite Git, izvršite promjene prije postavljanja aplikacije. EB CLI postavlja vaše posljednje urezivanje. Ako implementirate prije urezivanja, postavit ćete stariju verziju svoje aplikacije.
Nakon što izvršite promjene, implementirajte se pomoću sljedećeg:
eb deploy
Do sada je dobro, sada moramo postaviti nekoliko stvari prije nego što naša aplikacija stvarno počne raditi.
Postavljanje glavnog ključa
CLI možete koristiti i u tu svrhu, ali ja više volim koristiti web ploču za to. Evo kako:
- Idite na AWS, odaberite "Services -> Elastic Beanstalk", a zatim kliknite svoje okruženje.
- Otvorite karticu "Konfiguracija" i kliknite "Izmijeni" ispod okvira pod nazivom "Softver".
- U odjeljak "Svojstva okoliša" dodajte novi ključ s imenom
RAILS_MASTER_KEY
. Postavite njegovu vrijednost na sadržaj vaše datoteke "master.key". Ovu datoteku možete pronaći u direktoriju “config” vaše aplikacije Rails. - Kliknite gumb "Primijeni" na dnu stranice.
Postavljanje baze podataka PostgreSQL
Elastic Beanstalk pruža jednostavan način postavljanja baze podataka do koje možete doći putem "Konfiguracija -> Baza podataka". Radije to ne bih koristio, jer ako trebate obnoviti svoje okruženje Elastic Beanstalk, vaša će se baza podataka izbrisati. Dakle, bazu podataka ćemo postaviti odvojeno od našeg okruženja Elastic Beanstalk.
Stvaranje PostgreSQL baze podataka na RDS-u
- Idite na AWS, odaberite "Usluge -> RDS".
- Odaberite "Stvori bazu podataka".
- Odaberite "PostgreSQL" i kliknite "Dalje".
- Odaberite svoj slučaj upotrebe, "Proizvodnja" ili "Razvoj / test", i kliknite "Dalje".
- Ovdje možete isprobati različite opcije i vidjeti koliki su procijenjeni mjesečni troškovi. Riješite se s nečim što vam je unutar proračuna. Možete započeti s
db.t2.micro
instancom, bez implementacije više AZ-a i SSD-a opće namjene. - Odaberite identifikator instance, ovo je vrsta "prostora imena".
- Odaberite korisničko ime i lozinku, držite ih za sada pri ruci, kliknite "Dalje".
- U odjeljku "Konfiguriranje naprednih postavki" važne su sigurnosne grupe. Odaberite "Odaberi postojeće VPC sigurnosne grupe" i odaberite sigurnosnu grupu koja izgleda poput "... -AWSEBSecurityGroup- ..."
- Odaberite naziv baze podataka, kao što je
my_app_production
. - Kliknite "Stvori bazu podataka", ovo će potrajati.
Omogućavanje pristupa bazi podataka
U međuvremenu, dodamo Postgres pristup vašoj sigurnosnoj grupi:
- Idite na AWS, odaberite "Usluge -> EC2".
- Kliknite "Sigurnosne grupe" na lijevoj ploči.
- Odaberite sigurnosnu grupu iz prethodnog odjeljka.
- Idite na karticu "Ulazno" i kliknite "Uredi".
- Kliknite "Dodaj pravilo". Za "Type" odaberite "PostgreSQL", a za "Source" ID u sigurnosnoj grupi u koju dodajete ovo pravilo. Trebao bi biti točno iznad kartice "Ulazno" i trebao bi izgledati
sg-*
. - Kliknite "Spremi".
Postavljanje konfiguracije proizvodne baze podataka
Sada u svom direktoriju Rails otvorite config/database.yml
. Promijenite ga kao takvog:
# ...
production: <<: *default database: username: password: host: port:
Dodavanje relevantnih varijabli okoline Elastičnom zrnu graha
Rekli smo Railsu da informacije za produkcijsku bazu podataka dobije pomoću gore navedenih varijabli okruženja. Sada moramo biti sigurni da naše okruženje Elastičnog zrna graha uključuje ove varijable:
- Idite na AWS, odaberite "Services -> Elastic Beanstalk", a zatim kliknite svoje okruženje.
- Otvorite karticu "Konfiguracija" i kliknite "Izmijeni" ispod okvira pod nazivom "Softver".
- U "Svojstva okoline" dodajte sljedeće parove ključ / vrijednost:
RDS_DB_NAME
: Ime baze podataka koje ste odabrali prilikom postavljanja baze podataka.RDS_USERNAME
: Korisničko ime koje ste odabrali prilikom postavljanja baze podataka.RDS_PASSWORD
: Lozinka koju ste odabrali prilikom postavljanja baze podataka.RDS_HOSTNAME
: Idite na "Usluge -> RDS" i ove podatke možete pronaći u odjeljku "Povezivanje" na stranici podataka o instanci baze podataka. Zove se "Krajnja točka".RDS_PORT
: Postavite ovo na 5432.- Kliknite gumb "Primijeni" na dnu stranice.
Nakon toga, ponovo urežite svoj direktorij aplikacije Rails i pokrenite eb deploy
. Možda ćete htjeti pričekati nekoliko minuta prije nego što to učinite, jer Elastic Beanstalk radi neke stvari u pozadini nakon ažuriranja varijabli okruženja.
Nakon ovih koraka, vaša aplikacija Rails "trebala bi" biti pokrenuta.
Još uvijek ne radi?
Ako postoje problemi, možete otići u svoje EB okruženje na AWS web ploči, kliknuti na "Dnevnici" i odabrati "Zahtjev za zapisnike -> Posljednjih 100 linija" da biste pregledali zapisnike. No, prije nego što to učinite, preporučio bih da pokušate pokrenuti aplikaciju Rails koristeći produkcijsko okruženje na vašem lokalnom računalu pomoću zareza nd rails s RAILS_ENV=product
.
Prvi ću priznati da nisam najiskusnija osoba što se tiče raspoređivanja. Kao što sam rekao, Heroku sam uvijek koristio u prošlosti, a vjerojatno ću ga koristiti i za svoje buduće projekte. Ovi su mi koraci uspjeli nakon nekoliko dana češanja po glavi pokušavajući postaviti aplikaciju Rails na Elastic Beanstalk, pa sam ih želio podijeliti u nadi da uštedim vrijeme ljudima koji su u istoj situaciji u kojoj sam bio i ja. Dakle, uzmite sve ovo s rezervom i sretno!
Ako vam se sviđa ovaj članak, slijedite me na Twitteru ili se prijavite na moj bilten da biste dobivali obavijesti kada pišem nove članke. Pišem o softveru i startupovima.
Ako tražite programera za Rails, trenutno sam dostupan za rad na daljinu. Slobodno me kontaktirajte na hi {at} evrim.io.
Izvorno objavljeno na evrim.io 28. studenog 2018.