Kako automatizirati implementaciju vašeg Elixir projekta u AWS

Ovo je prvi članak dvodijelne serije, gdje u potpunosti objašnjavamo kako automatizirati implementaciju vašeg Elixir projekta. Korištene su tehnologije AWS za ugošćavanje vašeg projekta i CircleCI za automatizaciju testiranja i pokretanja aplikacije.

Dio II - Kako automatizirati implementaciju vašeg Elixir projekta s CircleCI

AWS konfiguracija

Osnovna AWS konfiguracija za vašu aplikaciju trebala bi se sastojati od različitih međusobno povezanih usluga, od kojih je najvažniji EC2, jer će on ugostiti vaš projekt i vi ćete s njim prilično komunicirati.

Uz to koristimo RDS za bazu podataka i Route 53 za upravljanje domenom, zajedno s nekim drugim manje korisnim alatima. Ovaj je udžbenik podijeljen na različite uzastopne korake koji objašnjavaju kako u potpunosti konfigurirati ove usluge, tako da možete imati potpuno radnu infrastrukturu u koju možete implementirati svoj kod.

AWS Konfiguracija - Opći prikaz

Ako imate problema s pronalaženjem usluga koje ćemo konfigurirati, možete ih pretraživati ​​i pristupiti im na kartici usluge:

A) EC2

Konfigurirat ćemo dva slučaja, jedan za postavljanje, a drugi za proizvodno okruženje.

1. Stvorite inscenacijsku instancu

EC2 konfiguracija

Imajte na umu da neke usluge možda neće biti dostupne u određenim regijama, za naš primjer koristit ćemo Sjevernu Virginiju.

U ovom ćemo primjeru upotrijebiti besplatni sloj slike ubuntu 16.0.4 (AMI) s in2.micro instancom koja se sastoji od 1 GB RAM-a i 20 GB diska (EBS volumena). Za svoj vlastiti projekt slobodno prilagodite ove vrijednosti prema potrebama projekta. Druga važna stvar su regije i zone dostupnosti, a svaka AWS usluga može ili ne mora biti dostupna za to područje.

Korak 1 - odaberite AMIKorak 2 - Odaberite vrstu instanceKorak 3 - Konfiguriranje instancije

Ne zaboravite provjeriti "Zaštiti od slučajnog prekida".

4. korak - Dodajte pohranu

Posljednji korak sastoji se u dodavanju oznaka našoj EC2 instanci. Ovaj korak nije presudan za konfiguraciju i jedina svrha oznaka je identificirati našu instancu unutar AWS usluga, pa slobodno dodajte svoje oznake.

2. Konfigurirajte sigurnosnu grupu

Sigurnosna skupina jedna je od najvažnijih konfiguracija, jer ona točno određuje tko može pristupiti stroju. U našem slučaju definiramo SSH, HTTP i HTTPS protokole.
SSH, jer želimo biti u mogućnosti pristupiti stroju i komunicirati s njim putem terminala kako bismo ga mogli konfigurirati.
HTTP i HTTPS kako bi se našem projektu moglo pristupiti kada smo implementirani.

Korak 6 - Konfiguriranje grupe za sigurnost

Upozorenje: Pravila s izvorom 0.0.0.0/0 omogućuju pristup svim IP adresama vašoj instanci. Preporučujemo postavljanje pravila sigurnosne skupine kako bi se omogućio pristup samo s poznatih IP adresa.

3. Stvorite novi par ključeva (za vanjski pristup instanci)

Na kraju postupka izrade instanci EC2 potrebno je kreirati par ključeva (spremite par ključeva u svom stroju kako biste lokalno konfigurirali svoj SSH pristup).

B) elastična IP

Napravite jednu elastičnu IP adresu povezanu s stvorenom instancom EC2. Elastični IP potreban je jer ako, primjerice, zatvorimo ovu instancu i stvorimo drugu s drugim karakteristikama, jednostavno ponovo povežemo nastali elastični IP s novom instancom i sve dobro funkcionira.

1. korak - elastična IPKorak 2 - Povežite elastični IP s instancama

C) Konfigurirajte EC2 stroj

1. Konfigurirajte SSH pristup

### preporučeno je staviti key-pair.pem u mapu ~ / .ssh
chmod 400 key-pair.pem
### zamijenite 111.11.111 generiranim elastičnim IP-om
ssh -i key-pair.pem [email protected]

2. Ugradite potrebne alate u EC2 instancu

Pristupite uređaju i instalirajte potreban softver.

  • Elixir / Erlang
  • Git
  • Čvor
  • Nginx
  • Postgresi (nije puna instalacija, već samo klijentska inačica iste verzije kao u RDS-u)

3. Instalirajte Certbot

Trebate instalirati Certbot, a zatim generirati SSL certifikat za domenu kojoj će odgovarati vaš uređaj. Važno: Ponekad je potrebno prvo pokrenuti korak "E) Ruta 53".

# Zamijenite example.com svojom domenom
sudo certbot --nginx -d example.com -d www.example.com
sudo certbot obnoviti - sušiti

Zatim slijedite korake 3 i 4 ovog vodiča.

Upozorenje: Certboot je ograničenje brzine.

4. Konfigurirajte Nginx

Zatim trebate konfigurirati Nginx za upotrebu certifikata koji ste upravo stvorili za ovu domenu. Dođite do mape / etc / nginx / available-available, gdje možete pronaći zadanu Nginx datoteku, koja izgleda poput one koja slijedi:

Upozorenje: zamijenite ranije generiranim imenom poslužitelja.

5. Zadnje postavke na instanci

Na kraju, morate kreirati mapu u / opt. Nakon toga kontrolu moramo prenijeti korisničkom ubuntu.

sudo mkdir 
sudo chown -R ubuntu: ubuntu  /

6. Napravite sliku na temelju stvorene instance i Stvorite proizvodnu instancu

Ovaj korak možete preskočiti ako samo trebate postaviti jedno okruženje. U našim projektima obično započinjemo scenskim i proizvodnim okruženjem. Ekološko okruženje sadrži sav dosad učinjen kod i koristi se za testiranje najnovijih značajki prije nego što krenu u proizvodnju. Proizvodno okruženje je ono koje koriste stvarni korisnici.

Korak 1 - Stvorite sliku na temelju stvorene instanceKorak 2 - Stvorite sliku

Stvorite sliku (EC2 - AMI) na temelju prethodno stvorene instancije (instanca postavljanja). Zatim iz slike stvorite proizvodnu instancu (tako smo stvorili i konfigurirali dvije instance - proizvodnju i postavljanje). Ne zaboravite: spremite par ključeva u uređaj kako biste lokalno konfigurirali svoj SSH pristup.

Za primjerak proizvodnje potrebno je ponoviti sljedeće korake:

  • B) elastični IP (proizvodni primjerak)
  • C) 1. Konfiguriranje SSH pristupa (proizvodna instanca)
  • C) 1. Konfiguriranje SSH pristupa (proizvodna instanca)
  • C) 3. Instalirajte Certbot (proizvodni primjerak)

D) RDS

Primjer koji vam ovdje prikazujemo koristi relacijsku bazu podataka. U ovom slučaju koristimo Postgres.

EC2 i RDS konfiguracije

1. Stvorite 2 DB instance (izrada i postavljanje)

  • Oprezno s opcijama koje su odabrane kao što su: inačica motora, dodijeljena trgovina i omogućuju zaštitu od brisanja.
Korak 1 - Odaberite motorKorak 2 - Specifikacije instancijeKorak 3- Postavke4. korak - mreža i sigurnostKorak 5 - Opcije baze podatakaKorak 6 - sigurnosna kopijaKorak 7 - OdržavanjeKorak 8 - Zaštita od brisanja

2. Konfigurirajte Security Group da dopušta EC2 da se poveže s RDS-om

U osnovi morate dodati sigurnosnu grupu primjera u sigurnosnu skupinu RDS-a kako biste EC2-u omogućili povezivanje s instancom RDS-a.

Dopustite EC2 da se poveže s RDS instancom

E) Put 53

Za usmjeravanje domena i poddomena na prethodno stvorene strojeve koristili smo Route 53.

Put 53 - primjer

1. Stvorite zvanu zonu s nazivom domene

Korak 1 - Stvorite zonu s hostom

2. Stvorite aliasa

  • Napravite jedan set za pseudonim za postavljanje elastičnog IP-a EC2 stroja
  • Napravite jednu pločicu zapisa za proizvodnju elastičnog IP-a EC2 stroja
Korak 2 - Napravite set zapisa

Sada imate potpuno funkcionalno postavljanje AWS (usmjeravanje, baza podataka, instanca poslužitelja) spremno za prijem i host poslužitelja temeljenog na eliksiru. U sljedećem dijelu vodiča konfigurirat ćemo CircleCI da automatski implementira vaš projekt u AWS postavku koju smo upravo stvorili.

Hvala na čitanju!

Puno vam hvala na čitanju i ako ste uživali u ovom članku, obavezno pritisnite taj gumb . Mnogo nam znači! Također ne zaboravite pratiti Coletiv na medijima, Twitteru i LinkedInu dok stalno objavljujemo sve više i više zanimljivih članaka o više tehnologija.

U slučaju da ne znate, Coletiv je Porto softver studio za razvoj softvera specijaliziran za razvoj aplikacija Elixir, iOS i Android. Ali radimo sve vrste stvari. Mi se brinemo za UX / UI dizajn, web izradu, pa čak i sigurnost za vas.

Pa, pripremimo nešto zajedno?