

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

# Tutorial: Membuat server web dan instans DB Amazon RDS
<a name="TUT_WebAppWithRDS"></a>

Tutorial ini menunjukkan cara menginstal server web Apache dengan PHP dan membuat basis data MariaDB, MySQL, atau PostgreSQL. Server web berjalan di instans Amazon EC2 menggunakan Amazon Linux 2023, dan Anda dapat memilih antara instans DB MySQL atau PostgreSQL. Baik instans Amazon EC2 maupun instans DB berjalan di cloud privat virtual (VPC) berdasarkan layanan Amazon VPC. 

**penting**  
Tidak ada biaya untuk membuat AWS akun. Namun, dengan menyelesaikan tutorial ini, Anda mungkin dikenakan biaya untuk AWS sumber daya yang Anda gunakan. Anda dapat menghapus sumber daya ini setelah menyelesaikan tutorial jika tidak diperlukan lagi.

**catatan**  
Tutorial ini berfungsi dengan Amazon Linux 2023 dan mungkin tidak berfungsi untuk versi Linux lainnya.

Dalam tutorial berikut, Anda membuat instans EC2 yang menggunakan VPC, subnet, dan grup keamanan default untuk Akun AWS Anda. Tutorial ini menunjukkan cara membuat instans DB dan secara otomatis menyiapkan konektivitas dengan instans EC2 yang Anda buat. Tutorial kemudian menunjukkan cara menginstal server web pada instans EC2. Anda menghubungkan server web ke instans DB di VPC menggunakan titik akhir penulis klaster DB.

1. [Luncurkan instans EC2 untuk terhubung dengan instans Anda](CHAP_Tutorials.WebServerDB.LaunchEC2.md)

1. [Membuat instans DB Amazon RDS](CHAP_Tutorials.WebServerDB.CreateDBInstance.md)

1. [Menginstal server web di instans EC2 Anda](CHAP_Tutorials.WebServerDB.CreateWebServer.md)

Diagram berikut menunjukkan konfigurasi setelah tutorial selesai.

![\[Skenario VPC tunggal\]](http://docs.aws.amazon.com/id_id/AmazonRDS/latest/UserGuide/images/con-VPC-sec-grp.png)


**catatan**  
Setelah Anda menyelesaikan tutorial, ada subnet publik dan privat di setiap Zona Ketersediaan di VPC Anda.  Jika Anda lebih suka mengonfigurasi VPC baru untuk skenario ini, selesaikan tugas di [Tutorial: Buat VPC untuk digunakan dengan ) IPv4](CHAP_Tutorials.WebServerDB.CreateVPC.md).

# Luncurkan instans EC2 untuk terhubung dengan instans Anda
<a name="CHAP_Tutorials.WebServerDB.LaunchEC2"></a>

Buat instans Amazon EC2 di subnet publik VPC Anda.

**Untuk meluncurkan instans EC2**

1. Masuk ke Konsol Manajemen AWS dan buka konsol Amazon EC2 di. [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)

1. Di sudut kanan atas Konsol Manajemen AWS, pilih Wilayah AWS tempat Anda ingin membuat instans EC2.

1. Pilih **Dasbor EC2**, lalu pilih **Luncurkan instans**, seperti yang ditampilkan berikut ini.  
![\[Dasbor EC2\]](http://docs.aws.amazon.com/id_id/AmazonRDS/latest/UserGuide/images/Tutorial_WebServer_11.png)

1. Pilih pengaturan berikut di halaman **Luncurkan instans**.

   1. Di bagian **Nama dan tag**, untuk **Nama**, masukkan **tutorial-ec2-instance-web-server**.

   1. Di bagian **Gambar Aplikasi dan OS (Amazon Machine Image)**, pilih **Amazon Linux**, lalu pilih **AMI Amazon Linux 2023**. Biarkan default untuk pilihan lain.  
![\[Memilih Amazon Machine Image\]](http://docs.aws.amazon.com/id_id/AmazonRDS/latest/UserGuide/images/Tutorial_WebServer_12.png)

   1. Di bagian **Jenis instans**, pilih **t2.micro**.

   1. Pada **Pasangan kunci (login)**, pilih **Nama pasangan kunci** untuk menggunakan pasangan kunci yang ada. Untuk membuat pasangan kunci baru untuk instans Amazon EC2, pilih **Buat Pasangan kunci baru** lalu gunakan jendela **Buat pasangan kunci** untuk membuatnya.

      Untuk informasi selengkapnya tentang membuat key pair baru, lihat [Membuat key pair](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/get-set-up-for-amazon-ec2.html#create-a-key-pair) di *Panduan Pengguna Amazon EC2*.

   1. Di bagian **Pengaturan jaringan**, atur nilai-nilai ini dan biarkan nilai-nilai lainnya sebagai default:
      + Untuk **Izinkan lalu lintas SSH dari**, pilih sumber koneksi SSH ke instans EC2.

        Anda dapat memilih **IP Saya** jika alamat IP yang ditampilkan benar untuk koneksi SSH.

        Jika tidak, Anda dapat menentukan alamat IP yang akan digunakan untuk menghubungkan ke instans EC2 di VPC Anda menggunakan Secure Shell (SSH). Untuk menentukan alamat IP publik Anda, di jendela atau tab browser yang berbeda, Anda dapat menggunakan layanan di [https://checkip.amazonaws.com](https://checkip.amazonaws.com). Contoh alamat IP adalah `203.0.113.25/32`.

        Dalam banyak kasus, Anda dapat menghubungkan melalui penyedia layanan Internet (ISP) atau dari belakang firewall Anda tanpa alamat IP statis. Jika demikian, tentukan rentang alamat IP yang digunakan oleh komputer klien.
**Awas**  
Jika Anda menggunakan `0.0.0.0/0` untuk akses SSH, Anda memungkinkan semua alamat IP untuk mengakses instans publik Anda menggunakan SSH. Hal ini dapat diterima untuk waktu yang singkat di lingkungan pengujian, tetapi tidak aman untuk lingkungan produksi. Dalam produksi, Anda hanya dapat memberikan otorisasi pada alamat IP atau rentang alamat tertentu saja untuk mengakses instans-instans Anda menggunakan SSH.
      + Aktifkan **Izinkan HTTPs lalu lintas dari internet**.
      + Aktifkan **Izinkan lalu lintas HTTP dari internet**.  
![\[Mengonfigurasi Detail Instans\]](http://docs.aws.amazon.com/id_id/AmazonRDS/latest/UserGuide/images/Tutorial_WebServer_14.png)

   1. Biarkan nilai default untuk bagian yang lainnya.

   1. Tinjau ringkasan konfigurasi instans di panel **Ringkasan**, dan ketika Anda siap, pilih **Luncurkan instans**.

1. Di halaman **Status Peluncuran**, catat pengidentifikasi untuk instans EC2 baru Anda, misalnya: `i-1234567890abcdef0`.  
![\[Pengidentifikasi instans EC2 di halaman Status Peluncuran.\]](http://docs.aws.amazon.com/id_id/AmazonRDS/latest/UserGuide/images/getting-started-ec2-id.png)

1. Pilih pengidentifikasi instans EC2 untuk membuka daftar instans EC2, lalu pilih instans EC2 Anda.

1. Di tab **Detail**, catat nilai-nilai berikut, yang akan Anda butuhkan saat menghubungkan menggunakan SSH:

   1. Dalam **ringkasan Instance**, perhatikan nilai untuk ** IPv4 DNS Publik**.  
![\[Nama DNS publik EC2 pada tab Detail halaman Instans.\]](http://docs.aws.amazon.com/id_id/AmazonRDS/latest/UserGuide/images/easy-create-ec2-public-dns.png)

   1. Di **Detail instans**, catat nilai untuk **Nama pasangan kunci**.  
![\[Nama pasangan kunci EC2 di tab Detail halaman Instans.\]](http://docs.aws.amazon.com/id_id/AmazonRDS/latest/UserGuide/images/easy-create-ec2-key-pair.png)

1. Tunggu hingga **status instans** untuk instans Anda **Berjalan** sebelum melanjutkan.

1. Selesaikan [Membuat instans DB Amazon RDS](CHAP_Tutorials.WebServerDB.CreateDBInstance.md).

# Membuat instans DB Amazon RDS
<a name="CHAP_Tutorials.WebServerDB.CreateDBInstance"></a>

Buat instans DB RDS for MariaDB, RDS for MySQL, atau RDS for PostgreSQL yang mempertahankan data yang digunakan oleh aplikasi web. 

------
#### [ RDS for MariaDB ]

**Untuk membuat instans MariaDB**

1. Masuk ke Konsol Manajemen AWS dan buka konsol Amazon RDS di [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. Di sudut kanan atas Konsol Manajemen AWS, periksa. Wilayah AWS Itu harus sama dengan tempat Anda membuat EC2 instance Anda.

1. Di panel navigasi, pilih **Basis Data**.

1. Pilih **Buat basis data**.

1. Di halaman **Buat basis data**, pilih **Pembuatan standar**.

1. Untuk **opsi Mesin**, pilih **MariaDB**.  
![\[Pilih jenis mesin\]](http://docs.aws.amazon.com/id_id/AmazonRDS/latest/UserGuide/images/tutorial-create-mariadb.png)

1. Untuk **Template**, pilih **Tingkat gratis** atau **Kotak Pasir**. **Tingkat gratis** muncul untuk akun paket gratis. **Kotak pasir** muncul untuk akun paket berbayar.  
![\[Pilih Template\]](http://docs.aws.amazon.com/id_id/AmazonRDS/latest/UserGuide/images/tutorial-create-template.png)

1. Di bagian **Ketersediaan dan daya tahan**, pertahankan default-nya.

1. Di bagian **Pengaturan**, atur nilai-nilai ini:
   + **Pengidentifikasi instans DB** – Ketikkan **tutorial-db-instance**.
   + **Nama pengguna utama** – Ketikkan **tutorial\$1user**.
   + **Buat kata sandi secara otomatis** – Biarkan opsi nonaktif.
   + **Kata sandi utama** – Ketikkan kata sandi.
   + **Konfirmasi kata sandi** – Ketik ulang kata sandi.  
![\[Bagian pengaturan\]](http://docs.aws.amazon.com/id_id/AmazonRDS/latest/UserGuide/images/Tutorial_WebServer_Settings.png)

1. Di bagian **Konfigurasi instans**, atur nilai-nilai ini:
   + **Kelas runtutan (termasuk kelas t)**
   + **db.t3.micro**  
![\[Bagian konfigurasi instans\]](http://docs.aws.amazon.com/id_id/AmazonRDS/latest/UserGuide/images/Tutorial_WebServer_DB_instance_micro.png)

1. Di bagian **Penyimpanan**, pertahankan default-nya.

1. Di bagian **Konektivitas**, atur nilai-nilai ini dan biarkan nilai lainnya sebagai default:
   + Untuk **sumber daya Compute**, pilih **Connect to an EC2 compute** resource.
   + **EC2 Misalnya, pilih EC2 instance** yang Anda buat sebelumnya, seperti **tutorial-ec2** -. instance-web-server  
![\[Bagian konektivitas\]](http://docs.aws.amazon.com/id_id/AmazonRDS/latest/UserGuide/images/Tutorial_WebServer_Connectivity.png)

1. Di bagian **Autentikasi basis data**, pastikan **Autentikasi kata sandi** dipilih.

1. Buka bagian **Konfigurasi tambahan**, dan masukkan **sample** untuk **Nama basis data awal**. Biarkan opsi lainnya menggunakan pengaturan default.

1. Untuk membuat instans MariaDB, pilih **Buat basis data**.

   Instans DB baru Anda muncul di daftar **Basis data** dengan status **Membuat**.

1. Tunggu sampai **Status** instans DB baru Anda menampilkan status **Tersedia**. Lalu pilih nama instans DB untuk menampilkan detailnya.

1. Di bagian **Konektivitas & keamanan**, lihat **Titik Akhir** dan **Port** instans DB.  
![\[Detail instans DB\]](http://docs.aws.amazon.com/id_id/AmazonRDS/latest/UserGuide/images/Tutorial_WebServer_Endpoint_Port.png)

   Catat titik akhir dan port untuk instans DB Anda. Gunakan informasi ini untuk menghubungkan server web Anda ke instans DB Anda.

1. Selesaikan [Menginstal server web di instans EC2 Anda](CHAP_Tutorials.WebServerDB.CreateWebServer.md).

------
#### [ RDS for MySQL ]

**Untuk membuat instans DB MySQL**

1. Masuk ke Konsol Manajemen AWS dan buka konsol Amazon RDS di [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. Di sudut kanan atas Konsol Manajemen AWS, periksa. Wilayah AWS Itu harus sama dengan tempat Anda membuat EC2 instance Anda.

1. Di panel navigasi, pilih **Basis Data**.

1. Pilih **Buat basis data**.

1. Di halaman **Buat basis data**, pilih **Pembuatan standar**.

1. Untuk **opsi Mesin**, pilih **MySQL**.  
![\[Pilih jenis mesin\]](http://docs.aws.amazon.com/id_id/AmazonRDS/latest/UserGuide/images/tutorial-create-mysql.png)

1. Untuk **Template**, pilih **Tingkat gratis** atau **Kotak Pasir**. **Tingkat gratis** muncul untuk akun paket gratis. **Kotak pasir** muncul untuk akun paket berbayar.  
![\[Pilih Template\]](http://docs.aws.amazon.com/id_id/AmazonRDS/latest/UserGuide/images/tutorial-create-template.png)

1. Di bagian **Ketersediaan dan daya tahan**, pertahankan default-nya.

1. Di bagian **Pengaturan**, atur nilai-nilai ini:
   + **Pengidentifikasi instans DB** – Ketikkan **tutorial-db-instance**.
   + **Nama pengguna utama** – Ketikkan **tutorial\$1user**.
   + **Buat kata sandi secara otomatis** – Biarkan opsi nonaktif.
   + **Kata sandi utama** – Ketikkan kata sandi.
   + **Konfirmasi kata sandi** – Ketik ulang kata sandi.  
![\[Bagian pengaturan\]](http://docs.aws.amazon.com/id_id/AmazonRDS/latest/UserGuide/images/Tutorial_WebServer_Settings.png)

1. Di bagian **Konfigurasi instans**, atur nilai-nilai ini:
   + **Kelas runtutan (termasuk kelas t)**
   + **db.t3.micro**  
![\[Bagian konfigurasi instans\]](http://docs.aws.amazon.com/id_id/AmazonRDS/latest/UserGuide/images/Tutorial_WebServer_DB_instance_micro.png)

1. Di bagian **Penyimpanan**, pertahankan default-nya.

1. Di bagian **Konektivitas**, atur nilai-nilai ini dan biarkan nilai lainnya sebagai default:
   + Untuk **sumber daya Compute**, pilih **Connect to an EC2 compute** resource.
   + **EC2 Misalnya, pilih EC2 instance** yang Anda buat sebelumnya, seperti **tutorial-ec2** -. instance-web-server  
![\[Bagian konektivitas\]](http://docs.aws.amazon.com/id_id/AmazonRDS/latest/UserGuide/images/Tutorial_WebServer_Connectivity.png)

1. Di bagian **Autentikasi basis data**, pastikan **Autentikasi kata sandi** dipilih.

1. Buka bagian **Konfigurasi tambahan**, dan masukkan **sample** untuk **Nama basis data awal**. Biarkan opsi lainnya menggunakan pengaturan default.

1. Untuk membuat instans DB MySQL, pilih **Buat basis data**.

   Instans DB baru Anda muncul di daftar **Basis data** dengan status **Membuat**.

1. Tunggu sampai **Status** instans DB baru Anda menampilkan status **Tersedia**. Lalu pilih nama instans DB untuk menampilkan detailnya.

1. Di bagian **Konektivitas & keamanan**, lihat **Titik Akhir** dan **Port** instans DB.  
![\[Detail instans DB\]](http://docs.aws.amazon.com/id_id/AmazonRDS/latest/UserGuide/images/Tutorial_WebServer_Endpoint_Port.png)

   Catat titik akhir dan port untuk instans DB Anda. Gunakan informasi ini untuk menghubungkan server web Anda ke instans DB Anda.

1. Selesaikan [Menginstal server web di instans EC2 Anda](CHAP_Tutorials.WebServerDB.CreateWebServer.md).

------
#### [ RDS for PostgreSQL ]

**Untuk membuat instans DB PostgreSQL**

1. Masuk ke Konsol Manajemen AWS dan buka konsol Amazon RDS di [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. Di sudut kanan atas Konsol Manajemen AWS, periksa. Wilayah AWS Itu harus sama dengan tempat Anda membuat EC2 instance Anda.

1. Di panel navigasi, pilih **Basis Data**.

1. Pilih **Buat basis data**.

1. Di halaman **Buat basis data**, pilih **Pembuatan standar**.

1. Untuk **opsi Mesin**, pilih **PostgreSQL**.  
![\[Pilih jenis mesin\]](http://docs.aws.amazon.com/id_id/AmazonRDS/latest/UserGuide/images/tutorial-create-postgres.png)

1. Untuk **Template**, pilih **Tingkat gratis** atau **Kotak Pasir**. **Tingkat gratis** muncul untuk akun paket gratis. **Kotak pasir** muncul untuk akun paket berbayar.  
![\[Pilih Template\]](http://docs.aws.amazon.com/id_id/AmazonRDS/latest/UserGuide/images/tutorial-create-template.png)

1. Di bagian **Ketersediaan dan daya tahan**, pertahankan default-nya.

1. Di bagian **Pengaturan**, atur nilai-nilai ini:
   + **Pengidentifikasi instans DB** – Ketikkan **tutorial-db-instance**.
   + **Nama pengguna utama** – Ketikkan **tutorial\$1user**.
   + **Buat kata sandi secara otomatis** – Biarkan opsi nonaktif.
   + **Kata sandi utama** – Ketikkan kata sandi.
   + **Konfirmasi kata sandi** – Ketik ulang kata sandi.  
![\[Bagian pengaturan\]](http://docs.aws.amazon.com/id_id/AmazonRDS/latest/UserGuide/images/Tutorial_WebServer_Settings.png)

1. Di bagian **Konfigurasi instans**, atur nilai-nilai ini:
   + **Kelas runtutan (termasuk kelas t)**
   + **db.t3.micro**  
![\[Bagian konfigurasi instans\]](http://docs.aws.amazon.com/id_id/AmazonRDS/latest/UserGuide/images/Tutorial_WebServer_DB_instance_micro.png)

1. Di bagian **Penyimpanan**, pertahankan default-nya.

1. Di bagian **Konektivitas**, atur nilai-nilai ini dan biarkan nilai lainnya sebagai default:
   + Untuk **sumber daya Compute**, pilih **Connect to an EC2 compute** resource.
   + **EC2 Misalnya, pilih EC2 instance** yang Anda buat sebelumnya, seperti **tutorial-ec2** -. instance-web-server  
![\[Bagian konektivitas\]](http://docs.aws.amazon.com/id_id/AmazonRDS/latest/UserGuide/images/Tutorial_WebServer_Connectivity.png)

1. Di bagian **Autentikasi basis data**, pastikan **Autentikasi kata sandi** dipilih.

1. Buka bagian **Konfigurasi tambahan**, dan masukkan **sample** untuk **Nama basis data awal**. Biarkan opsi lainnya menggunakan pengaturan default.

1. Untuk membuat instans DB PostgreSQL, pilih **Buat basis data**.

   Instans DB baru Anda muncul di daftar **Basis data** dengan status **Membuat**.

1. Tunggu sampai **Status** instans DB baru Anda menampilkan status **Tersedia**. Lalu pilih nama instans DB untuk menampilkan detailnya.

1. Di bagian **Konektivitas & keamanan**, lihat **Titik Akhir** dan **Port** instans DB.  
![\[Detail instans DB\]](http://docs.aws.amazon.com/id_id/AmazonRDS/latest/UserGuide/images/Tutorial_WebServer_Endpoint_Port_postgres.png)

   Catat titik akhir dan port untuk instans DB Anda. Gunakan informasi ini untuk menghubungkan server web Anda ke instans DB Anda.

1. Selesaikan [Menginstal server web di instans EC2 Anda](CHAP_Tutorials.WebServerDB.CreateWebServer.md).

------

# Menginstal server web di instans EC2 Anda
<a name="CHAP_Tutorials.WebServerDB.CreateWebServer"></a>

Instal server web pada instans EC2 yang Anda buat di [Luncurkan instans EC2 untuk terhubung dengan instans Anda](CHAP_Tutorials.WebServerDB.LaunchEC2.md). Server web ini terhubung ke instans DB Amazon RDS yang Anda buat di [Membuat instans DB Amazon RDS](CHAP_Tutorials.WebServerDB.CreateDBInstance.md). 

## Menginstal server web Apache dengan PHP dan MariaDB
<a name="CHAP_Tutorials.WebServerDB.CreateWebServer.Apache"></a>

Hubungkan ke instans EC2 Anda dan instal server web.

**Menghubungkan ke instans EC2 dan menginstal server web Apache dengan PHP**

1. Connect ke instans EC2 yang Anda buat sebelumnya dengan mengikuti langkah-langkah di [Connect to Linux Anda](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AccessingInstances.html) di Panduan Pengguna *Amazon EC2*.

   Sebaiknya Anda menghubungkan ke instans EC2 menggunakan SSH. Jika utilitas klien SSH diinstal di Windows, Linux, atau Mac, Anda dapat menghubungkan ke instans menggunakan format perintah berikut:

   ```
   ssh -i location_of_pem_file ec2-user@ec2-instance-public-dns-name
   ```

   Misalnya, asumsikan bahwa `ec2-database-connect-key-pair.pem` disimpan di `/dir1` di Linux, dan DNS IPv4 publik untuk instans EC2 Anda adalah `ec2-12-345-678-90.compute-1.amazonaws.com`. Perintah SSH Anda akan tampak seperti berikut:

   ```
   ssh -i /dir1/ec2-database-connect-key-pair.pem ec2-user@ec2-12-345-678-90.compute-1.amazonaws.com
   ```

1. Dapatkan pembaruan keamanan dan perbaikan bug terbaru dengan memperbarui perangkat lunak di instans EC2 Anda. Untuk melakukannya, gunakan perintah berikut.
**catatan**  
Opsi `-y` menginstal pembaruan tanpa meminta konfirmasi. Hilangkan opsi ini untuk memeriksa pembaruan sebelum menginstal.

   ```
   sudo dnf update -y
   ```

1. Setelah pembaruan selesai, instal server web Apache, PHP, dan MariaDB atau perangkat lunak PostgreSQL menggunakan perintah berikut. Perintah ini menginstal beberapa paket perangkat lunak dan dependensi terkait bersamaan.

------
#### [ MariaDB & MySQL ]

   ```
   sudo dnf install -y httpd php php-mysqli mariadb105
   ```

------
#### [ PostgreSQL ]

   ```
   sudo dnf install -y httpd php php-pgsql postgresql15
   ```

------

   Jika Anda mengalami kesalahan, instans Anda mungkin tidak diluncurkan dengan AMI Amazon Linux 2023. Sebaiknya gunakan AMI Amazon Linux 2 AMI. Anda dapat melihat versi Amazon Linux Anda menggunakan perintah berikut.

   ```
   cat /etc/system-release
   ```

   Untuk informasi selengkapnya, lihat [Memperbarui perangkat lunak instans](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/install-updates.html).

1. Mulai server web dengan perintah yang ditampilkan berikut ini.

   ```
   sudo systemctl start httpd
   ```

   Anda dapat menguji apakah server web Anda terinstal dan berjalan dengan benar. Untuk melakukannya, masukkan nama Sistem Nama Domain (DNS) publik dari instans EC2 Anda di bilah alamat browser web, misalnya: `http://ec2-42-8-168-21.us-west-1.compute.amazonaws.com`. Jika server web Anda berjalan, maka Anda akan melihat halaman uji Apache. 

   Jika Anda tidak melihat halaman uji Apache, periksa aturan masuk Anda untuk grup keamanan VPC yang Anda buat di [Tutorial: Buat VPC untuk digunakan dengan ) IPv4](CHAP_Tutorials.WebServerDB.CreateVPC.md). Pastikan aturan masuk Anda menyertakan aturan yang mengizinkan akses HTTP (port 80) untuk alamat IP agar terhubung ke server web.
**catatan**  
Halaman uji Apache hanya muncul jika tidak ada konten di direktori root dokumen, `/var/www/html`. Setelah konten ditambahkan ke direktori root dokumen, konten tersebut akan muncul di alamat DNS publik dari instans EC2 Anda. Sebelumnya, konten tersebut muncul di halaman uji Apache.

1. Konfigurasikan server web untuk memulai setiap boot sistem menggunakan perintah `systemctl`.

   ```
   sudo systemctl enable httpd
   ```

Untuk mengizinkan `ec2-user` mengelola file di direktori root default untuk server web Apache Anda, ubah kepemilikan dan izin direktori `/var/www`. Ada banyak cara untuk menyelesaikan tugas ini. Dalam tutorial ini, Anda menambahkan `ec2-user` ke grup `apache`, untuk memberikan kepemilikan grup `apache` atas direktori `/var/www` dan menetapkan izin tulis ke grup.

**Mengatur izin file untuk server web Apache**

1. Tambahkan pengguna `ec2-user` ke grup `apache`.

   ```
   sudo usermod -a -G apache ec2-user
   ```

1. Keluar untuk menyegarkan izin Anda dan masukkan grup `apache` baru.

   ```
   exit
   ```

1. Masuk kembali dan verifikasi apakah grup `apache` ada dengan perintah `groups`.

   ```
   groups
   ```

   Output Anda akan terlihat seperti berikut ini:

   ```
   ec2-user adm wheel apache systemd-journal
   ```

1. Ubah kepemilikan grup atas direktori `/var/www` dan kontennya ke grup `apache`.

   ```
   sudo chown -R ec2-user:apache /var/www
   ```

1. Ubah izin direktori atas `/var/www` dan subdirektorinya untuk menambahkan izin tulis grup dan atur ID grup pada subdirektori yang dibuat di masa mendatang.

   ```
   sudo chmod 2775 /var/www
   find /var/www -type d -exec sudo chmod 2775 {} \;
   ```

1. Ubah izin file secara berulang di direktori `/var/www` dan subdirektorinya untuk menambahkan izin tulis grup.

   ```
   find /var/www -type f -exec sudo chmod 0664 {} \;
   ```

Sekarang, `ec2-user` (dan setiap anggota grup `apache` mendatang) dapat menambahkan, menghapus, dan mengedit file pada root dokumen Apache. Ini memungkinkan Anda untuk menambahkan konten, seperti situs web statis atau aplikasi PHP. 

**catatan**  
Server web yang menjalankan protokol HTTP tidak memberikan keamanan transportasi untuk data yang dikirim atau diterimanya. Saat Anda menghubungkan ke server HTTP menggunakan browser web, banyak informasi yang terlihat oleh penyadap di mana saja di sepanjang jalur jaringan. Informasi ini mencakup URLs yang Anda kunjungi, konten halaman web yang Anda terima, dan konten (termasuk kata sandi) dari formulir HTML apa pun.   
Praktik terbaik untuk mengamankan server web Anda adalah dengan menginstal dukungan untuk HTTPS (HTTP Secure). Protokol ini melindungi data Anda dengan SSL/TLS enkripsi. Untuk informasi selengkapnya, lihat [Tutorial: Mengkonfigurasi SSL/TLS dengan Amazon Linux AMI](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/SSL-on-amazon-linux-ami.html) di *Panduan Pengguna Amazon EC2*.

## Menghubungkan server web Apache ke instans DB
<a name="CHAP_Tutorials.WebServerDB.CreateWebServer.PHPContent"></a>

Selanjutnya, Anda menambahkan konten ke server web Apache yang terhubung ke instans DB Amazon RDS.

**Menambahkan konten ke server web Apache yang terhubung ke instans DB Anda**

1. Saat masih terhubung ke instans EC2, ubah direktori ke `/var/www` dan buat subdirektori baru yang diberi nama `inc`.

   ```
   cd /var/www
   mkdir inc
   cd inc
   ```

1. Buat file baru dalam direktori `inc` yang diberi nama `dbinfo.inc`, lalu edit file tersebut dengan menggunakan nano (atau editor pilihan Anda).

   ```
   >dbinfo.inc
   nano dbinfo.inc
   ```

1. Tambahkan konten berikut ini ke file `dbinfo.inc`. 
**catatan**  
Sebaiknya tempatkan nama pengguna dan informasi kata sandi dalam folder yang bukan bagian dari root dokumen untuk server web Anda. Hal ini mengurangi kemungkinan informasi keamanan Anda terungkap.  
Pastikan untuk mengubah `master password` ke kata sandi yang sesuai di aplikasi Anda.

   ```
   <?php
   
   define('DB_SERVER', 'db_instance_endpoint');
   define('DB_USERNAME', 'tutorial_user');
   define('DB_PASSWORD', 'master password');
   define('DB_DATABASE', 'sample');
   ?>
   ```

1. Simpan dan tutup file `dbinfo.inc`. Jika Anda menggunakan nano, simpan dan tutup file dengan menggunakan Ctrl\$1S dan Ctrl\$1X.

1. Ubah direktori ke `/var/www/html`.

   ```
   cd /var/www/html
   ```

1. Buat file baru dalam direktori `html` yang diberi nama `SamplePage.php`, lalu edit file tersebut dengan menggunakan nano (atau editor pilihan Anda).

   ```
   >SamplePage.php
   nano SamplePage.php
   ```

1. Tambahkan konten berikut ini ke file `SamplePage.php`:

------
#### [ MariaDB & MySQL ]

   ```
   <?php include "../inc/dbinfo.inc"; ?>
   <html>
   <body>
   <h1>Sample page</h1>
   <?php
   
     /* Connect to MySQL and select the database. */
     $connection = mysqli_connect(DB_SERVER, DB_USERNAME, DB_PASSWORD);
   
     if (mysqli_connect_errno()) echo "Failed to connect to MySQL: " . mysqli_connect_error();
   
     $database = mysqli_select_db($connection, DB_DATABASE);
   
     /* Ensure that the EMPLOYEES table exists. */
     VerifyEmployeesTable($connection, DB_DATABASE);
   
     /* If input fields are populated, add a row to the EMPLOYEES table. */
     $employee_name = htmlentities($_POST['NAME']);
     $employee_address = htmlentities($_POST['ADDRESS']);
   
     if (strlen($employee_name) || strlen($employee_address)) {
       AddEmployee($connection, $employee_name, $employee_address);
     }
   ?>
   
   <!-- Input form -->
   <form action="<?PHP echo $_SERVER['SCRIPT_NAME'] ?>" method="POST">
     <table border="0">
       <tr>
         <td>NAME</td>
         <td>ADDRESS</td>
       </tr>
       <tr>
         <td>
           <input type="text" name="NAME" maxlength="45" size="30" />
         </td>
         <td>
           <input type="text" name="ADDRESS" maxlength="90" size="60" />
         </td>
         <td>
           <input type="submit" value="Add Data" />
         </td>
       </tr>
     </table>
   </form>
   
   <!-- Display table data. -->
   <table border="1" cellpadding="2" cellspacing="2">
     <tr>
       <td>ID</td>
       <td>NAME</td>
       <td>ADDRESS</td>
     </tr>
   
   <?php
   
   $result = mysqli_query($connection, "SELECT * FROM EMPLOYEES");
   
   while($query_data = mysqli_fetch_row($result)) {
     echo "<tr>";
     echo "<td>",$query_data[0], "</td>",
          "<td>",$query_data[1], "</td>",
          "<td>",$query_data[2], "</td>";
     echo "</tr>";
   }
   ?>
   
   </table>
   
   <!-- Clean up. -->
   <?php
   
     mysqli_free_result($result);
     mysqli_close($connection);
   
   ?>
   
   </body>
   </html>
   
   
   <?php
   
   /* Add an employee to the table. */
   function AddEmployee($connection, $name, $address) {
      $n = mysqli_real_escape_string($connection, $name);
      $a = mysqli_real_escape_string($connection, $address);
   
      $query = "INSERT INTO EMPLOYEES (NAME, ADDRESS) VALUES ('$n', '$a');";
   
      if(!mysqli_query($connection, $query)) echo("<p>Error adding employee data.</p>");
   }
   
   /* Check whether the table exists and, if not, create it. */
   function VerifyEmployeesTable($connection, $dbName) {
     if(!TableExists("EMPLOYEES", $connection, $dbName))
     {
        $query = "CREATE TABLE EMPLOYEES (
            ID int(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
            NAME VARCHAR(45),
            ADDRESS VARCHAR(90)
          )";
   
        if(!mysqli_query($connection, $query)) echo("<p>Error creating table.</p>");
     }
   }
   
   /* Check for the existence of a table. */
   function TableExists($tableName, $connection, $dbName) {
     $t = mysqli_real_escape_string($connection, $tableName);
     $d = mysqli_real_escape_string($connection, $dbName);
   
     $checktable = mysqli_query($connection,
         "SELECT TABLE_NAME FROM information_schema.TABLES WHERE TABLE_NAME = '$t' AND TABLE_SCHEMA = '$d'");
   
     if(mysqli_num_rows($checktable) > 0) return true;
   
     return false;
   }
   ?>
   ```

------
#### [ PostgreSQL ]

   ```
   <?php include "../inc/dbinfo.inc"; ?>
   
   <html>
   <body>
   <h1>Sample page</h1>
   <?php
   
   /* Connect to PostgreSQL and select the database. */
   $constring = "host=" . DB_SERVER . " dbname=" . DB_DATABASE . " user=" . DB_USERNAME . " password=" . DB_PASSWORD ;
   $connection = pg_connect($constring);
   
   if (!$connection){
    echo "Failed to connect to PostgreSQL";
    exit;
   }
   
   /* Ensure that the EMPLOYEES table exists. */
   VerifyEmployeesTable($connection, DB_DATABASE);
   
   /* If input fields are populated, add a row to the EMPLOYEES table. */
   $employee_name = htmlentities($_POST['NAME']);
   $employee_address = htmlentities($_POST['ADDRESS']);
   
   if (strlen($employee_name) || strlen($employee_address)) {
     AddEmployee($connection, $employee_name, $employee_address);
   }
   
   ?>
   
   <!-- Input form -->
   <form action="<?PHP echo $_SERVER['SCRIPT_NAME'] ?>" method="POST">
     <table border="0">
       <tr>
         <td>NAME</td>
         <td>ADDRESS</td>
       </tr>
       <tr>
         <td>
       <input type="text" name="NAME" maxlength="45" size="30" />
         </td>
         <td>
       <input type="text" name="ADDRESS" maxlength="90" size="60" />
         </td>
         <td>
       <input type="submit" value="Add Data" />
         </td>
       </tr>
     </table>
   </form>
   <!-- Display table data. -->
   <table border="1" cellpadding="2" cellspacing="2">
     <tr>
       <td>ID</td>
       <td>NAME</td>
       <td>ADDRESS</td>
     </tr>
   
   <?php
   
   $result = pg_query($connection, "SELECT * FROM EMPLOYEES");
   
   while($query_data = pg_fetch_row($result)) {
     echo "<tr>";
     echo "<td>",$query_data[0], "</td>",
          "<td>",$query_data[1], "</td>",
          "<td>",$query_data[2], "</td>";
     echo "</tr>";
   }
   ?>
   </table>
   
   <!-- Clean up. -->
   <?php
   
     pg_free_result($result);
     pg_close($connection);
   ?>
   </body>
   </html>
   
   
   <?php
   
   /* Add an employee to the table. */
   function AddEmployee($connection, $name, $address) {
      $n = pg_escape_string($name);
      $a = pg_escape_string($address);
      echo "Forming Query";
      $query = "INSERT INTO EMPLOYEES (NAME, ADDRESS) VALUES ('$n', '$a');";
   
      if(!pg_query($connection, $query)) echo("<p>Error adding employee data.</p>"); 
   }
   
   /* Check whether the table exists and, if not, create it. */
   function VerifyEmployeesTable($connection, $dbName) {
     if(!TableExists("EMPLOYEES", $connection, $dbName))
     {
        $query = "CREATE TABLE EMPLOYEES (
            ID serial PRIMARY KEY,
            NAME VARCHAR(45),
            ADDRESS VARCHAR(90)
          )";
   
        if(!pg_query($connection, $query)) echo("<p>Error creating table.</p>"); 
     }
   }
   /* Check for the existence of a table. */
   function TableExists($tableName, $connection, $dbName) {
     $t = strtolower(pg_escape_string($tableName)); //table name is case sensitive
     $d = pg_escape_string($dbName); //schema is 'public' instead of 'sample' db name so not using that
   
     $query = "SELECT TABLE_NAME FROM information_schema.TABLES WHERE TABLE_NAME = '$t';";
     $checktable = pg_query($connection, $query);
   
     if (pg_num_rows($checktable) >0) return true;
     return false;
   
   }
   ?>
   ```

------

1. Simpan dan tutup file `SamplePage.php`.

1. Verifikasi bahwa server web Anda berhasil terhubung ke instans DB Anda dengan membuka browser web dan menelusuri ke `http://EC2 instance endpoint/SamplePage.php`, misalnya: `http://ec2-12-345-67-890.us-west-2.compute.amazonaws.com/SamplePage.php`.

Anda dapat menggunakan `SamplePage.php` untuk menambahkan data ke instans DB Anda. Data yang Anda tambahkan kemudian ditampilkan di halaman. Untuk memverifikasi apakah data dimasukkan ke dalam tabel, instal klien MySQL pada instans Amazon EC2. Kemudian, hubungkan ke instans DB dan kueri tabelnya. 

Untuk informasi tentang menginstal klien MySQL dan menghubungkan ke instans DB, lihat [Menghubungkan ke instans MySQL DB Anda](USER_ConnectToInstance.md).

Untuk memastikan instans DB Anda seaman mungkin, verifikasi bahwa sumber di luar VPC tidak dapat menghubungkan ke instans DB Anda. 

Setelah selesai menguji server web dan database, Anda harus menghapus instans DB dan instans Amazon EC2 Anda.
+ Untuk menghapus instans DB, ikuti petunjuk di [Menghapus instans DB](USER_DeleteInstance.md). Anda tidak perlu membuat snapshot terakhir.
+ Untuk mengakhiri instans Amazon EC2, ikuti petunjuk di [Mengakhiri instans Anda](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/terminating-instances.html) dalam *Panduan Pengguna Amazon EC2*.