

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

# Men-deploy aplikasi Laravel ke Elastic Beanstalk
<a name="php-laravel-tutorial"></a>

Laravel adalah kerangka kerja open source, model-view-controller (MVC) untuk PHP. Tutorial ini memandu Anda melalui proses menghasilkan aplikasi Laravel, menerapkannya ke AWS Elastic Beanstalk lingkungan, dan mengonfigurasinya untuk terhubung ke instance database Amazon Relational Database Service (Amazon RDS).

**Topics**
+ [Prasyarat](#php-laravel-tutorial-prereqs)
+ [Meluncurkan lingkungan Elastic Beanstalk](#php-laravel-tutorial-launch)
+ [Menginstal Laravel dan menghasilkan sebuah situs web](#php-laravel-tutorial-generate)
+ [Men-deploy aplikasi Anda](#php-laravel-tutorial-deploy)
+ [Mengonfigurasi pengaturan Composer](#php-laravel-tutorial-configure)
+ [Menambahkan basis data ke lingkungan Anda](#php-laravel-tutorial-database)
+ [Pembersihan](#php-laravel-tutorial-cleanup)
+ [Langkah selanjutnya](#php-laravel-tutorial-nextsteps)

## Prasyarat
<a name="php-laravel-tutorial-prereqs"></a>

Tutorial ini mengasumsikan Anda memiliki pengetahuan tentang operasi Elastic Beanstalk dasar dan konsol Elastic Beanstalk. Jika belum, ikuti petunjuk di [Pelajari cara memulai dengan Elastic Beanstalk](GettingStarted.md) 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. Pada Windows Anda dapat [menginstal Windows Subsystem untuk Linux untuk](https://docs.microsoft.com/en-us/windows/wsl/install-win10) mendapatkan versi Windows terintegrasi dari Ubuntu dan Bash.

Laravel 6 membutuhkan PHP 7.2 atau yang lebih baru. Laravel 6 juga membutuhkan ekstensi PHP yang tercantum dalam topik [persyaratan server](https://laravel.com/docs/6.x/installation#server-requirements) dalam dokumentasi Laravel resmi. 4. Ikuti instruksi untuk menginstal PHP and Composer.

Untuk informasi dukungan dan pemeliharaan Laravel, lihat topik [kebijakan dukungan](https://laravel.com/docs/master/releases#support-policy) pada dokumentasi Laravel resmi.

## Meluncurkan lingkungan Elastic Beanstalk
<a name="php-laravel-tutorial-launch"></a>

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=Tutorial&EnvironmentType= LoadBalanced](https://console.aws.amazon.com/elasticbeanstalk/home#/newApplication?applicationName=tutorials&environmentType=LoadBalanced)

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

1. Untuk **Kode aplikasi**, pilih **Aplikasi sampel**.

1. Pilih **Tinjau dan Luncurkan**.

1. 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.
+ **CloudFormation stack** - Elastic 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 [Konsol CloudFormation](https://console.aws.amazon.com/cloudformation).
+ **Nama domain — Nama** domain yang merutekan ke aplikasi web Anda dalam formulir *{{subdomain}}. {{region}}.elasticbeanstalk.com*.
**Keamanan domain**  
[Untuk meningkatkan keamanan aplikasi Elastic Beanstalk Anda, domain elasticbeanstalk.com terdaftar di *Daftar* Akhiran Publik (PSL).](https://publicsuffix.org/)  
Jika Anda perlu mengatur cookie sensitif di nama domain default untuk aplikasi Elastic Beanstalk Anda, kami sarankan Anda menggunakan cookie `__Host-` dengan awalan untuk meningkatkan keamanan. Praktik ini melindungi domain Anda dari upaya pemalsuan permintaan lintas situs (CSRF). Untuk informasi selengkapnya, lihat halaman [Set-Cookie](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie#cookie_prefixes) 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](AWSHowTo.S3.md).

## Menginstal Laravel dan menghasilkan sebuah situs web
<a name="php-laravel-tutorial-generate"></a>

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

```
~$ composer create-project --prefer-dist laravel/laravel eb-laravel
```

Komposer yang diinstal Laravel dan dependensinya, dan menghasilkan proyek default.

[Jika Anda mengalami masalah saat menginstal Laravel, buka topik instalasi di dokumentasi resmi: https://laravel.com/docs/ 6.x.](https://laravel.com/docs/6.x) 

## Men-deploy aplikasi Anda
<a name="php-laravel-tutorial-deploy"></a>

Buat [paket sumber](applications-sourcebundle.md) berisi file yang dibuat oleh Composer. Perintah berikut membuat paket sumber yang bernama `laravel-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-laravel$ zip ../laravel-default.zip -r * .[^.]* -x "vendor/*"
```

Mengunggah paket sumber ke Elastic Beanstalk untuk men-deploy Laravel ke lingkungan Anda.

**Untuk men-deploy paket sumber**

1. **Buka konsol [Elastic Beanstalk, dan di daftar Wilayah, pilih konsol Elastic](https://console.aws.amazon.com/elasticbeanstalk) Beanstalk.** Wilayah AWS

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

1. Di halaman gambaran umum lingkungan, pilih **Unggah dan deploy**.

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

1. Pilih **Deploy**.

1. 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`](applications-sourcebundle.md#using-features.deployment.source.git) untuk membuat paket sumber. Proyek Laravel default berisi file `.gitignore` yang meminta Git untuk mengecualikan folder `vendor` dan file lain yang tidak diperlukan untuk deployment.

## Mengonfigurasi pengaturan Composer
<a name="php-laravel-tutorial-configure"></a>

Ketika deployment selesai, klik URL untuk membuka aplikasi Laravel Anda di peramban:

![403 Halaman kesalahan terlarang yang menunjukkan pengguna tidak memiliki izin untuk mengakses sumber daya yang diminta.](http://docs.aws.amazon.com/id_id/elasticbeanstalk/latest/dg/images/php-laravel-403.png)


Apa ini? Secara default, Elastic Beanstalk menyajikan akar proyek Anda di jalur akar situs web. Dalam hal ini, meskipun, halaman default (`index.php`) tersebut berada di satu tingkat di bawah dalam folder `public`. Anda dapat memverifikasinya dengan menambahkan `/public` ke URL. Misalnya, `http://{{laravel}}.{{us-east-2}}.elasticbeanstalk.com/public`.

Untuk menyajikan aplikasi Laravel di jalur akar, gunakan konsol Elastic Beanstalk untuk mengonfigurasikan *akar dokumen* untuk situs web.

**Untuk mengonfigurasi akar dokumen situs web Anda**

1. **Buka konsol [Elastic Beanstalk, dan di daftar Wilayah, pilih konsol Elastic](https://console.aws.amazon.com/elasticbeanstalk) Beanstalk.** Wilayah AWS

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

1. Pada panel navigasi, pilih **Konfigurasi**.

1. Dalam kategori konfigurasi **Pembaruan, pemantauan, dan pencatatan**, pilih **Edit**.

1. Untuk **Akar Dokumen**, masukkan **/public**.

1. Untuk menyimpan perubahan pilih **Terapkan** di bagian bawah halaman.

1. Setelah pembaruan selesai, klik URL untuk membuka kembali situs Anda di peramban.

![Logo Laravel dengan item menu navigasi: Dokumentasi, Laracast, Berita, Forge,. GitHub](http://docs.aws.amazon.com/id_id/elasticbeanstalk/latest/dg/images/php-laravel-defaultnodb.png)


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

## Menambahkan basis data ke lingkungan Anda
<a name="php-laravel-tutorial-database"></a>

Meluncurkan instans DB RDS di lingkungan Elastic Beanstalk Anda. Anda dapat menggunakan database MySQL SQLServer,, atau PostgreSQL dengan Laravel pada Elastic Beanstalk. Untuk contoh ini, kita akan menggunakan MySQL.

**Untuk menambahkan instans DB RDS ke lingkungan Elastic Beanstalk Anda**

1. **Buka konsol [Elastic Beanstalk, dan di daftar Wilayah, pilih konsol Elastic](https://console.aws.amazon.com/elasticbeanstalk) Beanstalk.** Wilayah AWS

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

1. Pada panel navigasi, pilih **Konfigurasi**.

1. Pada kategori konfigurasi **Basis data**, pilih **Edit**.

1. Untuk **Mesin**, pilih **mysql**.

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

1. Untuk menyimpan perubahan pilih **Terapkan** di bagian bawah halaman.

Membuat instans basis data membutuhkan waktu sekitar 10 menit. Untuk informasi lebih lanjut tentang database yang digabungkan ke lingkungan Elastic Beanstalk, lihat. [Menambahkan basis data ke lingkungan Elastic Beanstalk Anda](using-features.managing.db.md)

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 Laravel disimpan dalam sebuah file bernama `database.php` dalam folder `config` pada kode proyek Anda. Temukan entri `mysql` dan modifikasi variabel `host`, `database`, `username`, `and password` untuk membaca nilai-nilai yang sesuai dari Elastic Beanstalk:

**Example \~/Eb- .php laravel/config/database**  

```
...
    'connections' => [

        'sqlite' => [
            'driver' => 'sqlite',
            'database' => env('DB_DATABASE', database_path('database.sqlite')),
            'prefix' => '',
        ],

        'mysql' => [
            'driver' => 'mysql',
            'host' => env('RDS_HOSTNAME', '127.0.0.1'),
            'port' => env('RDS_PORT', '3306'),
            'database' => env('RDS_DB_NAME', 'forge'),
            'username' => env('RDS_USERNAME', 'forge'),
            'password' => env('RDS_PASSWORD', ''),
            'unix_socket' => env('DB_SOCKET', ''),
            'charset' => 'utf8mb4',
            'collation' => 'utf8mb4_unicode_ci',
            'prefix' => '',
            'strict' => true,
            'engine' => null,
        ],
...
```

Untuk memverifikasi bahwa koneksi basis data dikonfigurasi dengan benar, tambahkan kode ke `index.php` untuk menghubungkan ke basis data dan menambahkan beberapa kode ke respons default:

**Example \~/Eb- .php laravel/public/index**  

```
...
if(DB::connection()->getDatabaseName())
{
   echo "Connected to database ".DB::connection()->getDatabaseName();
}
$response->send();
...
```

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-laravel$ zip ../laravel-v2-rds.zip -r * .[^.]* -x "vendor/*"
   ```

1. **Buka konsol [Elastic Beanstalk, dan di daftar Wilayah, pilih konsol Elastic](https://console.aws.amazon.com/elasticbeanstalk) Beanstalk.** Wilayah AWS

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

1. Pilih **Unggah dan Deploy**.

1. Pilih **Jelajahi**, dan unggah `laravel-v2-rds.zip`.

1. 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:

![Beranda aplikasi Laravel menunjukkan koneksi database yang sukses ke ebdb.](http://docs.aws.amazon.com/id_id/elasticbeanstalk/latest/dg/images/php-laravel-defaultwdb.png)


## Pembersihan
<a name="php-laravel-tutorial-cleanup"></a>

Setelah Anda selesai bekerja dengan kode demo, Anda dapat mengakhiri lingkungan Anda. [[Elastic Beanstalk menghapus AWS semua sumber daya terkait, seperti instans [Amazon EC2, instans database, penyeimbang](using-features.managing.ec2.md)[beban, grup keamanan,](using-features.managing.db.md) dan alarm.](using-features.alarms.md#using-features.alarms.title)](using-features.managing.elb.md) 

Menghapus sumber daya tidak menghapus aplikasi Elastic Beanstalk, sehingga Anda dapat membuat lingkungan baru untuk aplikasi Anda kapan saja.

**Untuk mengakhiri lingkungan Elastic Beanstalk Anda dari konsol**

1. **Buka konsol [Elastic Beanstalk, dan di daftar Wilayah, pilih konsol Elastic](https://console.aws.amazon.com/elasticbeanstalk) Beanstalk.** Wilayah AWS

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

1. Pilih **Tindakan**, lalu pilih **Terminate environment**.

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

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](https://console.aws.amazon.com/rds).

1. Pilih **Basis data**.

1. Pilih instans DB Anda.

1. Pilih **Tindakan**, dan lalu pilih **Hapus**.

1. Pilih apakah akan membuat snapshot, dan kemudian memilih **Hapus**.

## Langkah selanjutnya
<a name="php-laravel-tutorial-nextsteps"></a>

Untuk informasi selengkapnya tentang Laravel, kunjungi situs web resmi Laravel di [laravel.com](https://laravel.com/).

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](eb-cli3.md) Beanstalk dari baris perintah.

Dalam tutorial ini, Anda menggunakan konsol Elastic Beanstalk untuk mengonfigurasi opsi komposer. Untuk membuat bagian konfigurasi ini dari sumber aplikasi Anda, Anda dapat menggunakan file konfigurasi seperti berikut.

**Example .ebextensions/composer.config**  

```
option_settings:
  aws:elasticbeanstalk:container:php:phpini:
    document_root: /public
```

Untuk informasi selengkapnya, lihat [Penyesuaian lingkungan lanjutan dengan file konfigurasi (`.ebextensions`)](ebextensions.md).

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 Amazon RDS DB ke lingkungan PHP Elastic Beanstalk Anda](create_deploy_PHP.rds.md) 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](customdomains.md) untuk lingkungan Anda dan [mengaktifkan HTTPS](configuring-https.md) untuk koneksi yang aman.