Men-deploy aplikasi CakePHP ke Elastic Beanstalk - AWS Elastic Beanstalk

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Men-deploy aplikasi CakePHP ke Elastic Beanstalk

CakePHP merupakan sumber terbuka, kerangka kerja MVC untuk PHP. Tutorial ini memandu Anda dalam proses menghasilkan proyek CakePHP, men-deploy ke suatu lingkungan Elastic Beanstalk, dan mengonfigurasikannya agar terhubung ke instans basis data Amazon RDS.

Prasyarat

Tutorial ini mengasumsikan Anda memiliki pengetahuan tentang operasi Elastic Beanstalk dasar dan konsol Elastic Beanstalk. Jika belum, ikuti petunjuk di Memulai menggunakan Elastic Beanstalk untuk meluncurkan lingkungan Elastic Beanstalk pertama Anda.

Untuk mengikuti prosedur di panduan ini, Anda memerlukan terminal atau shell baris perintah untuk menjalankan perintah. Perintah ditampilkan dalam daftar yang diawali dengan simbol prompt ($) dan nama direktori saat ini, bila perlu.

~/eb-project$ this is a command this is output

Di Linux dan macOS, Anda dapat menggunakan shell dan manajer paket pilihan Anda. Di Windows 10, Anda dapat menginstal Windows Subsystem for Linux untuk mendapatkan Ubuntu dan Bash versi terintegrasi Windows.

CakePHP 4 membutuhkan PHP 7.2 atau yang lebih baru. CakePHP 4 juga membutuhkan ekstensi PHP yang tercantum dalam dokumentasi instalasi CakePHP resmi. Ikuti petunjuk dalam topik Menyiapkan lingkungan pengembangan PHP Anda untuk menginstal PHP dan Composer.

Meluncurkan lingkungan Elastic Beanstalk

Gunakan konsol Elastic Beanstalk untuk membuat lingkungan Elastic Beanstalk. Pilih platform PHP lalu terima pengaturan default dan kode sampel.

Untuk meluncurkan lingkungan (konsol)
  1. Buka konsol Elastic Beanstalk menggunakan tautan yang telah dikonfigurasi sebelumnya: console.aws.amazon.com/elasticbeanstalk/home#/ newApplication?applicationName=Tutorials &environmentType= LoadBalanced

  2. Untuk Platform, pilih platform dan cabang platform yang sesuai dengan bahasa yang digunakan oleh aplikasi Anda.

  3. Untuk Kode aplikasi, pilih Aplikasi sampel.

  4. Pilih Tinjau dan Luncurkan.

  5. Tinjau opsi yang tersedia. Pilih opsi tersedia yang ingin Anda gunakan, dan saat Anda siap, pilih Buat aplikasi.

Pembuatan lingkungan membutuhkan waktu sekitar 5 menit dan membuat sumber daya berikut:

  • Instans EC2 – Mesin virtual Amazon Elastic Compute Cloud (Amazon EC2) yang dikonfigurasi untuk menjalankan aplikasi web di platform yang Anda pilih.

    Setiap platform menjalankan satu set perangkat lunak, file konfigurasi dan penulisan tertentu untuk mendukung versi bahasa, kerangka kerja, kontainer web tertentu, atau kombinasi dari semua ini. Sebagian besar platform menggunakan Apache atau NGINX sebagai proksi terbalik yang ada di depan aplikasi web Anda, meneruskan permintaan ke aplikasi web, menyajikan aset statis, dan menghasilkan log akses dan kesalahan.

  • Grup keamanan instans – Grup keamanan Amazon EC2 yang dikonfigurasi untuk mengizinkan lalu lintas masuk di port 80. Sumber daya ini memungkinkan lalu lintas HTTP dari penyeimbang beban mencapai instans EC2 yang menjalankan aplikasi web Anda. Secara default, lalu lintas tidak diizinkan di port lain.

  • Penyeimbang beban – Penyeimbang beban Elastic Load Balancing yang dikonfigurasi untuk mendistribusikan permintaan ke instans yang menjalankan aplikasi Anda. Penyeimbang beban juga menghilangkan kebutuhan untuk mengekspos instans Anda langsung ke internet.

  • Grup keamanan penyeimbang beban – Grup keamanan Amazon EC2 yang dikonfigurasi untuk mengizinkan lalu lintas masuk di port 80. Sumber daya ini memungkinkan lalu lintas HTTP dari internet mencapai penyeimbang beban. Secara default, lalu lintas tidak diizinkan di port lain.

  • Grup Auto Scaling – Grup Auto Scaling yang dikonfigurasi untuk menggantikan instans jika diakhiri atau menjadi tidak tersedia.

  • Bucket Amazon S3 – Lokasi penyimpanan untuk kode sumber, log, dan artifact lainnya yang dibuat saat Anda menggunakan Elastic Beanstalk.

  • CloudWatch Alarm Amazon — Dua CloudWatch alarm yang memantau beban pada instans di lingkungan Anda dan yang dipicu jika beban terlalu tinggi atau terlalu rendah. Saat alarm terpicu, grup Auto Scaling Anda akan menaikkan atau menurunkan skala sebagai respons.

  • AWS CloudFormation stack - Elastic AWS CloudFormation Beanstalk digunakan untuk meluncurkan sumber daya di lingkungan Anda dan menyebarkan perubahan konfigurasi. Sumber daya ditentukan di sebuah templat yang dapat Anda lihat di KonsolAWS CloudFormation.

  • Nama domain – Nama domain yang merutekan ke aplikasi web Anda dalam bentuk subdomain.region.elasticbeanstalk.com.

    catatan

    Untuk meningkatkan keamanan aplikasi Elastic Beanstalk Anda, domain elasticbeanstalk.com terdaftar di Daftar Akhiran Publik (PSL). Untuk keamanan lebih lanjut, kami menyarankan Anda menggunakan cookie dengan __Host- awalan jika Anda perlu mengatur cookie sensitif di nama domain default untuk aplikasi Elastic Beanstalk Anda. Praktik ini akan membantu mempertahankan domain Anda dari upaya pemalsuan permintaan lintas situs (CSRF). Untuk informasi selengkapnya, lihat halaman Set-Cookie di Jaringan Pengembang Mozilla.

Semua sumber daya ini dikelola oleh Elastic Beanstalk. Ketika Anda mengakhiri lingkungan, Elastic Beanstalk mengakhiri semua sumber daya yang dimuatnya.

catatan

Bucket Amazon S3 yang dibuat Elastic Beanstalk dibagi antar lingkungan dan tidak dihapus selama pengakhiran lingkungan. Untuk informasi selengkapnya, lihat Menggunakan Elastic Beanstalk dengan Amazon S3.

Menginstal CakePHP dan menghasilkan situs web

Composer dapat menginstal CakePHP dan membuat proyek kerja dengan satu perintah:

~$ composer create-project --prefer-dist cakephp/app eb-cake

Composer menginstal CakePHP dan sekitar 20 dependensi, dan menghasilkan proyek default.

Jika Anda mengalami masalah apa pun saat menginstal CakePHP, kunjungi topik instalasi dalam dokumentasi resmi: http://book.cakephp.org/4.0/en/installation.html

Deploy aplikasi Anda

Buat paket sumber berisi file yang dibuat oleh Composer. Perintah berikut membuat paket sumber yang bernama cake-default.zip. Paket sumber tidak termasuk file dalam folder vendor, yang memerlukan banyak ruang dan tidak perlu men-deploy aplikasi Anda ke Elastic Beanstalk.

eb-cake zip ../cake-default.zip -r * .[^.]* -x "vendor/*"

Unggah paket sumber ke Elastic Beanstalk untuk men-deploy CakePHP ke lingkungan Anda.

Untuk men-deploy paket sumber
  1. Buka konsol Elastic Beanstalk, dan di daftar Wilayah, pilih konsol Elastic Beanstalk. Wilayah AWS

  2. Di panel navigasi, pilih Lingkungan, dan kemudian pilih nama lingkungan Anda dari daftar.

    catatan

    Jika Anda memiliki banyak lingkungan, gunakan bilah pencarian untuk memfilter daftar lingkungan.

  3. Di halaman gambaran umum lingkungan, pilih Unggah dan deploy.

  4. Gunakan kotak dialog di layar untuk mengunggah paket sumber.

  5. Pilih Deploy.

  6. Ketika deployment selesai, Anda dapat memilih URL situs untuk membuka situs web Anda di tab baru.

catatan

Untuk mengoptimalkan paket sumber selanjutnya, inisialisasi repositori Git dan gunakan perintah git archive untuk membuat paket sumber. Proyek Symfony default berisi file .gitignore yang meminta Git untuk mengecualikan folder vendor dan file lain yang tidak diperlukan untuk deployment.

Ketika proses selesai, klik URL untuk membuka aplikasi CakePHP Anda di peramban.

Sejauh ini, baik-baik saja. Selanjutnya Anda akan menambahkan basis data ke lingkungan Anda dan mengonfigurasi CakePHP agar terhubung ke sana.

Menambahkan basis data ke lingkungan Anda

Luncurkan instans basis data Amazon RDS dalam lingkungan Elastic Beanstalk Anda. Anda dapat menggunakan basis data MySQL, SQLServer, atau PostgreSQL dengan CakePHP pada Elastic Beanstalk. Untuk contoh ini, kita akan menggunakan PostgreSQL.

Untuk menambahkan instans DB Amazon RDS ke lingkungan Elastic Beanstalk Anda
  1. Buka konsol Elastic Beanstalk, dan di daftar Wilayah, pilih konsol Elastic Beanstalk. Wilayah AWS

  2. Di panel navigasi, pilih Lingkungan, dan kemudian pilih nama lingkungan Anda dari daftar.

    catatan

    Jika Anda memiliki banyak lingkungan, gunakan bilah pencarian untuk memfilter daftar lingkungan.

  3. Pada panel navigasi, pilih Konfigurasi.

  4. Dalam Basis Data, Pilih Edit.

  5. Untuk Mesin DB, pilih postgres.

  6. Ketik nama pengguna utama dan kata sandi. Elastic Beanstalk akan memberikan nilai-nilai ini ke aplikasi Anda menggunakan properti lingkungan.

  7. Untuk menyimpan perubahan pilih Terapkan di bagian bawah halaman.

Membuat instans basis data membutuhkan waktu sekitar 10 menit. Sementara itu, Anda dapat memperbarui kode sumber untuk membaca informasi koneksi dari lingkungan. Elastic Beanstalk menyediakan detail koneksi menggunakan variabel lingkungan seperti RDS_HOSTNAME yang dapat Anda akses dari aplikasi Anda.

Konfigurasi basis data CakePHP berada dalam sebuah file bernama app.php dalam folder config pada kode proyek Anda. Buka file ini dan tambahkan beberapa kode yang membaca variabel lingkungan dari $_SERVER dan menetapkannya ke variabel lokal. Masukkan baris yang disorot dalam contoh di bawah ini setelah baris pertama (<?php):

contoh ~/Eb-cake/config/app.php
<?php if (!defined('RDS_HOSTNAME')) { define('RDS_HOSTNAME', $_SERVER['RDS_HOSTNAME']); define('RDS_USERNAME', $_SERVER['RDS_USERNAME']); define('RDS_PASSWORD', $_SERVER['RDS_PASSWORD']); define('RDS_DB_NAME', $_SERVER['RDS_DB_NAME']); } return [ ...

Koneksi basis data dikonfigurasi lebih lanjut di app.php. Temukan bagian berikut ini dan ubah konfigurasi sumber data default dengan nama driver yang cocok dengan mesin basis data Anda (Mysql, Sqlserver, atau Postgres), dan atur variabel host, username, password dan database untuk membaca nilai-nilai yang sesuai dari Elastic Beanstalk:

contoh ~/Eb-cake/config/app.php
... /** * Connection information used by the ORM to connect * to your application's datastores. * Drivers include Mysql Postgres Sqlite Sqlserver * See vendor\cakephp\cakephp\src\Database\Driver for complete list */ 'Datasources' => [ 'default' => [ 'className' => 'Cake\Database\Connection', 'driver' => 'Cake\Database\Driver\Postgres', 'persistent' => false, 'host' => RDS_HOSTNAME, /* * CakePHP will use the default DB port based on the driver selected * MySQL on MAMP uses port 8889, MAMP users will want to uncomment * the following line and set the port accordingly */ //'port' => 'non_standard_port_number', 'username' => RDS_USERNAME, 'password' => RDS_PASSWORD, 'database' => RDS_DB_NAME, /* * You do not need to set this flag to use full utf-8 encoding (internal default since CakePHP 3.6). */ //'encoding' => 'utf8mb4', 'timezone' => 'UTC', 'flags' => [], 'cacheMetadata' => true, 'log' => false, ...

Ketika instans DB telah menyelesaikan peluncuran, paketkan dan deploy aplikasi yang telah diperbarui ke lingkungan Anda:

Untuk memperbarui lingkungan Elastic Beanstalk
  1. Buat paket sumber baru:

    ~/eb-cake$ zip ../cake-v2-rds.zip -r * .[^.]* -x "vendor/*"
  2. Buka konsol Elastic Beanstalk, dan di daftar Wilayah, pilih konsol Elastic Beanstalk. Wilayah AWS

  3. Di panel navigasi, pilih Lingkungan, dan kemudian pilih nama lingkungan Anda dari daftar.

    catatan

    Jika Anda memiliki banyak lingkungan, gunakan bilah pencarian untuk memfilter pada daftar lingkungan.

  4. Pilih Unggah dan Deploy.

  5. Pilih Jelajahi dan unggah cake-v2-rds.zip.

  6. Pilih Deploy.

Men-deploy versi baru dari aplikasi Anda membutuhkan waktu kurang dari satu menit. Ketika deployment selesai, refresh halaman web lagi untuk memverifikasi bahwa koneksi basis data berhasil:

Pembersihan

Jika Anda sudah selesai bekerja dengan Elastic Beanstalk, Anda dapat mengakhiri lingkungan Anda. Elastic Beanstalk AWS menghentikan semua sumber daya yang terkait dengan lingkungan Anda, seperti instans Amazon EC2, instans database, penyeimbangbeban, grup keamanan, dan alarm.

Untuk mengakhiri lingkungan Elastic Beanstalk
  1. Buka konsol Elastic Beanstalk, dan di daftar Wilayah, pilih konsol Elastic Beanstalk. Wilayah AWS

  2. Di panel navigasi, pilih Lingkungan, dan kemudian pilih nama lingkungan Anda dari daftar.

    catatan

    Jika Anda memiliki banyak lingkungan, gunakan bar pencarian untuk memfilter daftar lingkungan.

  3. Pilih Tindakan, lalu pilih Terminate environment.

  4. Gunakan kotak dialog di layar untuk mengonfirmasi pengakhiran lingkungan.

Dengan Elastic Beanstalk, Anda dengan mudah dapat membuat lingkungan baru untuk aplikasi Anda kapan saja.

Selain itu, Anda dapat mengakhiri sumber daya basis data yang Anda buat di luar lingkungan Elastic Beanstalk Anda. Ketika Anda mengakhiri instans DB Amazon RDS, Anda dapat mengambil snapshot dan memulihkan data ke instans lain kelak.

Untuk mengakhiri instans DB RDS Anda
  1. Buka konsol Amazon RDS.

  2. Pilih Basis data.

  3. Pilih instans DB Anda.

  4. Pilih Tindakan, dan lalu pilih Hapus.

  5. Pilih apakah akan membuat snapshot, dan kemudian memilih Hapus.

Langkah selanjutnya

Untuk informasi lebih lanjut tentang CakePHP, baca bukunya di book.cakephp.org.

Ketika aplikasi terus dikembangkan, Anda mungkin akan menginginkan sebuah cara untuk mengelola lingkungan dan men-deploy aplikasi Anda tanpa membuat file .zip secara manual dan mengunggahnya ke konsol Elastic Beanstalk. Elastic Beanstalk Command Line Interface (EB CLI easy-to-use ) menyediakan perintah untuk membuat, mengkonfigurasi, dan menyebarkan aplikasi ke lingkungan Elastic Beanstalk dari baris perintah.

Menjalankan instans Amazon RDS DB dalam lingkungan Elastic Beanstalk Anda sangat bagus untuk pengembangan dan pengujian, tetapi mengikat siklus hidup basis data Anda ke lingkungan Anda. Lihat Menambahkan instans DB Amazon RDS ke lingkungan aplikasi PHP Anda untuk petunjuk dalam menghubungkan ke basis data yang berjalan di luar lingkungan Anda.

Terakhir, jika Anda berencana menggunakan aplikasi dalam lingkungan produksi, Anda akan ingin mengonfigurasikan nama domain khusus untuk lingkungan Anda dan mengaktifkan HTTPS untuk koneksi yang aman.