Bagaimana untuk mengautomasikan penyebaran projek Elixir anda ke dalam AWS

Ini adalah artikel pertama siri 2 bahagian, di mana kami menerangkan sepenuhnya cara mengautomasikan penggunaan projek Elixir anda. Teknologi yang digunakan adalah AWS, untuk menjadi tuan rumah projek anda, dan CircleCI, untuk mengautomasikan pengujian dan penggunaan aplikasi.

Bahagian II - Cara mengautomasikan penggunaan projek Elixir anda dengan CircleCI

Konfigurasi AWS

Konfigurasi AWS asas untuk aplikasi anda perlu terdiri daripada pelbagai perkhidmatan yang saling berkaitan, di mana EC2 adalah yang paling penting, kerana ia akan menjadi tuan rumah projek anda dan anda akan berinteraksi dengannya cukup banyak.

Di samping itu, kami menggunakan RDS untuk pangkalan data dan Laluan 53 untuk pengurusan domain, bersama dengan beberapa alat berguna kecil yang lain. Tutorial ini dibahagikan kepada beberapa langkah berurutan yang menerangkan bagaimana untuk mengkonfigurasi sepenuhnya perkhidmatan ini, supaya anda boleh mempunyai infrastruktur yang berfungsi sepenuhnya yang anda boleh menggunakan kod anda.

Konfigurasi AWS - Paparan umum

Jika anda mempunyai masalah mencari perkhidmatan yang kami akan mengkonfigurasi, anda boleh mencari dan mengaksesnya dalam tab perkhidmatan:

A) EC2

Kami akan mengkonfigurasi 2 contoh untuk pementasan dan satu lagi untuk persekitaran pengeluaran.

1. Buat Instansi Pementasan

Konfigurasi EC2

Perlu diingat bahawa beberapa perkhidmatan mungkin tidak tersedia di kawasan tertentu, contohnya kami akan menggunakan North Virginia.

Dalam contoh ini kita akan menggunakan imej bebas ubuntu 16.0.4 (AMI) dengan contoh t2.micro yang terdiri daripada 1GB RAM dan 20GB cakera (jumlah EBS). Untuk projek anda sendiri, bebas untuk menyesuaikan nilai-nilai ini untuk memenuhi keperluan projek. Satu lagi perkara penting ialah kawasan dan zon ketersediaan dan setiap perkhidmatan AWS mungkin atau mungkin tidak tersedia untuk kawasan tersebut.

Langkah 1-Pilih AMILangkah 2 - Pilih Type InstanceLangkah 3 - Konfigurasi Instance

Harap jangan lupa untuk memeriksa "Melindungi daripada penamatan tidak sengaja".

Langkah 4 - Tambah Penyimpanan

Langkah terakhir terdiri daripada penambahan tag kepada contoh EC2 kami. Langkah ini tidak penting untuk konfigurasi dan satu-satunya tujuan tag adalah untuk mengenal pasti contoh kami di dalam perkhidmatan AWS, jadi jangan ragu untuk menambah tag anda sendiri.

2. Konfigurasikan Kumpulan Keselamatan

Kumpulan keselamatan adalah salah satu konfigurasi yang paling penting, kerana ia menentukan siapa yang boleh mengakses mesin. Dalam kes kami, kami menentukan protokol SSH, HTTP dan HTTPS.
SSH, kerana kami mahu dapat mengakses mesin dan berinteraksi dengannya melalui terminal supaya kami dapat mengkonfigurasinya.
HTTP dan HTTPS supaya projek kami dapat diakses apabila digunakan.

Langkah 6 - Konfigurasikan Kumpulan Keselamatan

Amaran: Peraturan dengan sumber 0.0.0.0/0 membenarkan semua alamat IP untuk mengakses contoh anda. Kami mengesyorkan menetapkan peraturan kumpulan keselamatan untuk membenarkan akses dari alamat IP yang diketahui sahaja.

3. Buat Pasangan Kunci baru (untuk akses luaran ke contoh)

Pada akhir proses penciptaan contoh EC2, perlu membuat pasangan kunci (simpan pasangan kunci dalam mesin anda, supaya anda dapat mengkonfigurasi akses SSH anda secara tempatan).

B) IP anjal

Buat satu alamat IP elastik yang berkaitan dengan contoh EC2 yang dibuat. IP Elastik diperlukan kerana jika, contohnya, kita menutup contoh ini dan membuat satu lagi dengan ciri-ciri lain, kita hanya menilai semula IP elastik yang dibuat untuk contoh baru dan semuanya berfungsi dengan baik.

Langkah 1 - IP anjalLangkah 2 - Bersekutu IP elastik dengan contoh

C) Konfigurasikan Mesin EC2

1. Konfigurasi Akses SSH

### disyorkan meletakkan kekunci-pair.pem dalam folder ~ / .ssh
chmod 400 key-pair.pem
### menggantikan 111.11.111 dengan IP Elektif yang dijana
ssh -i key-pair.pem ubuntu@111.11.111

2. Pasang alat yang diperlukan dalam contoh EC2

Akses mesin dan pasang perisian yang diperlukan.

  • Elixir / Erlang
  • Git
  • Nod
  • Nginx
  • Postgres (bukan pemasangan penuh, hanya versi kliennya dalam versi yang sama dengan yang di RDS)

3. Pasang Certbot

Anda perlu memasang Certbot dan kemudian menghasilkan sijil SSL untuk domain yang mesin anda akan sesuai. Penting: Kadangkala anda perlu menjalankan langkah "E) Laluan 53" terlebih dahulu.

# Sila ganti contoh.com oleh domain anda
sudo certbot --nginx -d example.com -d www.example.com
sudo certbot renew - kering-run

Seterusnya, ikuti langkah 3 dan 4 tutorial ini.

Amaran: Certboot adalah had kadar.

4. Konfigurasikan Nginx

Seterusnya, anda perlu mengkonfigurasi Nginx untuk menggunakan sijil yang baru anda buat untuk domain ini. Navigasi ke folder / etc / nginx / sites-available, di mana anda boleh mencari fail Nginx lalai, yang kelihatan seperti berikut:

Amaran: sila ganti dengan nama server yang dihasilkan sebelumnya.

5. Pengaturan terakhir pada contohnya

Akhirnya, anda perlu membuat folder dalam / memilih. Selepas itu kita perlu lulus kawalan ke ubuntu pengguna.

sudo mkdir 
sudo chown -R ubuntu: ubuntu  /

6. Buat Imej berdasarkan contoh yang dibuat dan Buat Contoh Pengeluaran

Anda boleh melangkau langkah ini jika anda hanya perlu persediaan satu persekitaran. Dalam projek kami biasanya bermula dengan pementasan dan persekitaran pengeluaran. Persekitaran pementasan mengandungi semua kod yang telah dilakukan setakat ini dan digunakan untuk menguji ciri-ciri terkini sebelum dimasuki. Persekitaran pengeluaran adalah yang digunakan oleh pengguna sebenar.

Langkah 1 - Buat Imej berdasarkan contoh yang dibuatLangkah 2 - Buat imej

Buat imej (EC2 - AMI) berdasarkan contoh yang telah dibuat sebelumnya (contoh pementasan). Kemudian buat contoh pengeluaran dari imej (jadi kita mempunyai dua contoh yang dibuat dan dikonfigurasikan - pengeluaran dan pementasan). Jangan lupa: simpan pasangan kunci dalam mesin anda untuk mengkonfigurasi akses SSH anda secara tempatan.

Untuk contoh produksi adalah perlu untuk mengulang langkah-langkah berikut:

  • B) IP elastik (contoh pengeluaran)
  • C) 1. Konfigurasi akses SSH (contoh pengeluaran)
  • C) 1. Konfigurasi akses SSH (contoh pengeluaran)
  • C) 3. Pasang Certbot (contoh pengeluaran)

D) RDS

Contoh yang kami tunjukkan di sini menggunakan pangkalan data hubungan. Dalam kes ini, kami menggunakan Postgres.

Konfigurasi EC2 dan RDS

1. Mewujudkan 2 DB Instances (pengeluaran dan pementasan)

  • Berhati-hati dengan pilihan yang dipilih seperti: versi enjin, kedai yang diperuntukkan dan membolehkan perlindungan penghapusan.
Langkah 1 - Pilih enjinLangkah 2 - Spesifikasi InstanceLangkah 3- TetapanLangkah 4 - Rangkaian & KeselamatanLangkah 5 - Pilihan pangkalan dataLangkah 6 - CadanganLangkah 7 - PenyelenggaraanLangkah 8 - Perlindungan pemadaman

2. Konfigurasi Kumpulan Keselamatan untuk membolehkan EC2 disambungkan ke RDS

Pada dasarnya anda perlu menambah kumpulan keselamatan contoh kepada kumpulan keselamatan RDS untuk membolehkan EC2 menyambung ke contoh RDS.

Benarkan EC2 menyambung kepada contoh RDS

E) Laluan 53

Untuk mengarahkan domain dan subdomain kepada mesin yang telah dibuat sebelumnya kami menggunakan Route 53.

Laluan 53 - contohnya

1. Buat Zon Hosted dengan Nama Domain

Langkah 1 - Buat zon dihoskan

2. Buat Aliases

  • Buat satu set rekod alias untuk mengendalikan IP elastik mesin EC2
  • Buat satu set rekod alias untuk IP elastik mesin EC2 pengeluaran
Langkah 2- Buat set rekod

Anda kini mempunyai persediaan AWS berfungsi sepenuhnya (routing, database, contoh server) bersedia menerima dan menjadi tuan rumah pelayan berasaskan elixir. Di bahagian seterusnya tutorial kami akan mengkonfigurasi CircleCI untuk menyebarkan projek anda secara automatik ke dalam persediaan AWS yang baru kami buat.

Terima kasih kerana membaca!

Terima kasih banyak untuk membaca dan jika anda menikmati artikel ini, pastikan anda menekan butang itu. Ia bermakna banyak kepada kami! Juga jangan lupa ikuti Coletiv pada Medium, Twitter, dan LinkedIn kerana kami terus menyiarkan lebih banyak artikel yang menarik mengenai pelbagai teknologi.

Sekiranya anda tidak tahu, Coletiv adalah sebuah studio pembangunan perisian dari Porto khusus dalam pembangunan app Elixir, iOS dan Android. Tetapi kita melakukan semua jenis barangan. Kami menjaga reka bentuk UX / UI, pembangunan web, dan juga keselamatan untuk anda.

Jadi, mari kita buat sesuatu bersama?