

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

# AL2 di Amazon EC2
<a name="ec2"></a>

**catatan**  
 AL2 bukan lagi versi Amazon Linux saat ini. AL2023 adalah penerus. AL2 Untuk informasi selengkapnya, lihat [Membandingkan AL2 AL2023 dan](https://docs.aws.amazon.com/linux/al2023/ug/compare-with-al2.html) dan daftar [perubahan Package AL2023 di](https://docs.aws.amazon.com/linux/al2023/release-notes/compare-packages.html) [Panduan AL2023 Pengguna](https://docs.aws.amazon.com/linux/al2023/ug/). 

 

**Topics**
+ [Luncurkan instans Amazon EC2 dengan AMI AL2](#launch-ec2-instance)
+ [Temukan AL2 AMI terbaru menggunakan Systems Manager](#find-latest-al2-using-systems-manager)
+ [Connect ke instans Amazon EC2](#connect-to-amazon-linux-limits-ec2)
+ [AL2 Mode boot AMI](#default-boot-mode-al2)
+ [Package repositori](#package-repository)
+ [Menggunakan cloud-init di AL2](amazon-linux-cloud-init.md)
+ [Konfigurasikan AL2 instance](configure-ec2-instance.md)
+ [Kernel yang disediakan pengguna](UserProvidedKernels.md)
+ [AL2 Pemberitahuan rilis AMI](linux-ami-notifications.md)
+ [Konfigurasikan koneksi desktop AL2 MATE](amazon-linux-ami-mate.md)
+ [AL2 Tutorial](al2-tutorials.md)

## Luncurkan instans Amazon EC2 dengan AMI AL2
<a name="launch-ec2-instance"></a>

Anda dapat meluncurkan instans Amazon EC2 dengan AMI AL2 . Untuk informasi selengkapnya, lihat [Langkah 1: Luncurkan instance](https://docs.aws.amazon.com//AWSEC2/latest/UserGuide/EC2_GetStarted.html#ec2-launch-instance).

## Temukan AL2 AMI terbaru menggunakan Systems Manager
<a name="find-latest-al2-using-systems-manager"></a>

Amazon EC2 menyediakan parameter AWS Systems Manager publik untuk publik yang AMIs dikelola oleh AWS yang dapat Anda gunakan saat meluncurkan instans. Misalnya, parameter yang disediakan EC2 `/aws/service/ami-amazon-linux-latest/amzn2-ami-kernel-default-hvm-x86_64-gp2` tersedia di semua Wilayah dan selalu menunjuk ke versi terbaru AL2 AMI di Wilayah tertentu.

Untuk menemukan AL2023 AMI terbaru yang digunakan AWS Systems Manager, lihat [Memulai AL2023](https://docs.aws.amazon.com/linux/al2023/ug/get-started.html).

Parameter publik AMI Amazon EC2 tersedia dari jalur berikut ini:

`/aws/service/ami-amazon-linux-latest`

Anda dapat melihat daftar semua Amazon Linux AMIs di AWS Wilayah saat ini dengan menjalankan AWS CLI perintah berikut.

```
aws ssm get-parameters-by-path --path /aws/service/ami-amazon-linux-latest --query "Parameters[].Name"
```

**Untuk meluncurkan suatu instans menggunakan parameter publik**  
Contoh berikut menggunakan parameter publik yang disediakan EC2 untuk meluncurkan `m5.xlarge` instance menggunakan AMI AL2 terbaru.

Untuk menetapkan parameter dalam perintah, gunakan sintaksis berikut: `resolve:ssm:public-parameter`, di mana `resolve:ssm` adalah awalan standar dan `public-parameter` adalah jalan dan nama parameter publik.

Dalam contoh ini, parameter `--count` dan `--security-group` tidak disertakan. Untuk `--count`, default-nya adalah 1. Jika Anda memiliki VPC default dan grup keamanan default, keduanya akan digunakan.

```
aws ec2 run-instances 
    --image-id resolve:ssm:/aws/service/ami-amazon-linux-latest/amzn2-ami-kernel-default-hvm-x86_64-gp2 
    --instance-type m5.xlarge 
    --key-name MyKeyPair
```

Untuk informasi selengkapnya, lihat [Menggunakan parameter publik](https://docs.aws.amazon.com/systems-manager/latest/userguide/parameter-store-public-parameters.html) di *Panduan AWS Systems Manager Pengguna*.

**Memahami nama Amazon Linux 2 AMI**  
Nama Amazon Linux 2 AMI menggunakan skema penamaan berikut:

`amzn2-ami-[minimal-][kernel-{5.10,default,4.14}]-hvm-{x86_64,aarch64}-{ebs,gp2}`
+ **Minimal** AMIs datang dengan seperangkat paket pra-instal yang diminimalkan untuk mengurangi ukuran gambar.
+ **Kernel-version menentukan versi** kernel yang sudah diinstal sebelumnya pada AMI masing-masing:
  + `kernel-5.10`memilih kernel Linux versi 5.10. *Ini adalah versi kernel yang direkomendasikan untuk AL2.*
  + `kernel-default`memilih kernel default yang direkomendasikan untuk AL2. Ini adalah alias untuk kernel-5.10.
  + `kernel-4.14`memilih kernel Linux versi 4.14. *Ini hanya disediakan untuk kompatibilitas dengan rilis AMI yang lebih lama. Jangan gunakan versi ini untuk peluncuran instance baru. Harapkan AMI ini menjadi tidak didukung.*
  + Satu set khusus nama AMI ada tanpa referensi ke kernel tertentu. Ini AMIs adalah alias untuk kernel-4.14. *Ini hanya AMIs disediakan untuk kompatibilitas dengan rilis AMI yang lebih lama. Jangan gunakan nama AMI ini untuk peluncuran instance baru. Harapkan kernel AMIs untuk ini diperbarui.*
+ **x86\$164/aarch64** menentukan platform CPU untuk menjalankan AMI. Pilih x86\$164 untuk instans EC2 berbasis Intel dan AMD. Pilih aarch64 untuk instans EC2 Graviton.
+ **ebs/gp2** menentukan tipe volume EBS yang digunakan untuk melayani AMI masing-masing. Lihat [Jenis Volume EBS](https://docs.aws.amazon.com/ebs/latest/userguide/ebs-volume-types.html) untuk referensi. *Selalu pilih gp2.*

## Connect ke instans Amazon EC2
<a name="connect-to-amazon-linux-limits-ec2"></a>

Ada beberapa cara untuk terhubung ke instans Amazon Linux Anda, termasuk SSH, AWS Systems Manager Session Manager, dan EC2 Instance Connect. Untuk informasi selengkapnya, lihat [Connect ke instans Linux Anda](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/connect-to-linux-instance.html) di *Panduan Pengguna Amazon EC2*.

**Pengguna SSH dan **sudo****  
Amazon Linux tidak mengizinkan remote `root` secure shell (SSH) secara default. Juga, otentikasi kata sandi dinonaktifkan untuk mencegah serangan brute force. Untuk mengaktifkan SSH login ke instans Amazon Linux, Anda harus memberikan pasangan kunci ke instans saat peluncuran. Anda juga harus mengatur grup keamanan yang digunakan untuk meluncurkan instans Anda untuk mengizinkan akses SSH. Secara default, satu-satunya akun yang dapat masuk dari jarak jauh menggunakan SSH adalah. `ec2-user` Akun ini juga memiliki **sudo** hak istimewa. Jika Anda mengaktifkan `root` login jarak jauh, ketahuilah bahwa itu kurang aman daripada mengandalkan pasangan kunci dan pengguna sekunder.

## AL2 Mode boot AMI
<a name="default-boot-mode-al2"></a>

AL2 AMIs tidak memiliki set parameter mode boot. Instans yang diluncurkan dari AL2 AMIs mengikuti nilai mode boot default dari jenis instance. Untuk informasi selengkapnya, lihat [Mode boot](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ami-boot.html) di *Panduan Pengguna Amazon EC2*.

## Package repositori
<a name="package-repository"></a>

Informasi ini berlaku untuk AL2. Untuk selengkapnya AL2023, lihat [Mengelola paket dan pembaruan sistem operasi AL2023 di](https://docs.aws.amazon.com/linux/al2023/ug/managing-repos-os-updates.html) *Panduan Pengguna Amazon Linux 2023*. 

AL2 dan AL1 dirancang untuk digunakan dengan repositori paket online yang dihosting di setiap Wilayah Amazon EC2. AWS Repositori tersedia di semua Wilayah dan diakses menggunakan alat pembaruan **yum**. Melakukan hosting repositori di setiap Wilayah memungkinkan kita untuk melakukan deploy pembaruan dengan cepat dan tanpa biaya transfer data apa pun.

**penting**  
Versi terakhir AL1 mencapai EOL pada 31 Desember 2023 dan tidak akan menerima pembaruan keamanan atau perbaikan bug mulai 1 Januari 2024. Untuk informasi lebih lanjut, lihat [Amazon Linux AMI end-of-life](https://aws.amazon.com//blogs/aws/update-on-amazon-linux-ami-end-of-life/).

Jika Anda tidak perlu menyimpan data atau penyesuaian untuk instans Anda, Anda dapat meluncurkan instans baru menggunakan AMI saat ini. AL2 Jika Anda perlu menyimpan data atau kustomisasi untuk instans Anda, Anda dapat mempertahankan instance tersebut melalui repositori paket Amazon Linux. Repositori ini memuat semua paket yang diperbarui. Anda dapat memilih untuk menerapkan pembaruan ini ke instans yang Anda jalankan. Versi sebelumnya dari AMI dan paket pembaruan terus tersedia untuk digunakan, bahkan saat versi baru dirilis.

**catatan**  
Untuk memperbarui dan menginstal paket tanpa akses internet pada instans Amazon EC2, [lihat Bagaimana cara memperbarui yum atau menginstal paket tanpa akses internet di instans Amazon EC2 saya yang berjalan,, atau? AL1 AL2 AL2023](https://repost.aws/knowledge-center/ec2-al1-al2-update-yum-without-internet)

Untuk menginstal paket, gunakan perintah berikut:

```
[ec2-user ~]$ sudo yum install package
```

Jika Anda melihat Amazon Linux tidak berisi aplikasi yang Anda butuhkan, Anda dapat menginstal aplikasi secara langsung di instans Amazon Linux Anda. Amazon Linux menggunakan RPMs dan yum untuk manajemen paket, dan itu mungkin cara paling langsung untuk menginstal aplikasi baru. Anda harus selalu memeriksa apakah aplikasi tersedia di repositori Amazon Linux pusat kami terlebih dahulu karena banyak aplikasi tersedia di sana. Dari sana, Anda dapat menambahkan aplikasi ini ke instance Amazon Linux Anda.

Untuk mengunggah aplikasi ke instans Amazon Linux yang berjalan, gunakan **scp** atau **sftp**, lalu konfigurasi aplikasi dengan masuk ke instans Anda. Aplikasi Anda juga dapat diunggah selama peluncuran instans dengan menggunakan tindakan **PACKAGE\$1SETUP** dari paket cloud-init bawaan. Untuk informasi selengkapnya, lihat [Menggunakan cloud-init di AL2](amazon-linux-cloud-init.md). 

### Pembaruan keamanan
<a name="security-updates"></a>

Pembaruan keamanan disediakan menggunakan repositori paket. Baik pembaruan keamanan dan peringatan keamanan AMI yang diperbarui diterbitkan di [Pusat Keamanan Amazon Linux](https://alas.aws.amazon.com). Untuk informasi selengkapnya tentang kebijakan keamanan AWS atau melaporkan masalah keamanan, lihat [Keamanan AWS Cloud](https://aws.amazon.com/security/).

AL1 dan AL2 dikonfigurasi untuk mengunduh dan menginstal pembaruan keamanan penting atau penting pada waktu peluncuran. Pembaruan kernel tidak termasuk dalam konfigurasi ini.

Pada tahun AL2023, konfigurasi ini telah berubah dibandingkan dengan AL1 dan AL2. Untuk informasi selengkapnya tentang pembaruan [keamanan AL2023, lihat Pembaruan dan fitur](https://docs.aws.amazon.com/linux/al2023/ug/security-features.html) keamanan di *Panduan Pengguna Amazon Linux 2023*.

Kami menyarankan agar Anda melakukan pembaruan yang diperlukan untuk kasus penggunaan Anda setelah peluncuran. Misalnya, Anda mungkin ingin menerapkan semua pembaruan (bukan hanya pembaruan keamanan) saat peluncuran, atau mengevaluasi setiap pembaruan dan hanya menerapkan yang berlaku untuk sistem Anda. Hal ini dikendalikan menggunakan pengaturan cloud-init berikut: `repo_upgrade`. Cuplikan konfigurasi cloud-init berikut menunjukkan cara Anda dapat mengubah pengaturan di teks data pengguna yang Anda teruskan ke inisialisasi instans Anda:

```
#cloud-config
repo_upgrade: security
```

 Kemungkinan nilai untuk `repo_upgrade` adalah sebagai berikut: 

`critical`  
Menerapkan pembaruan keamanan kritis yang tertunda.

`important`  
Menerapkan pembaruan keamanan kritis dan penting yang tertunda.

`medium`  
Menerapkan pembaruan keamanan kritis, penting, dan medium.

`low`  
Menerapkan semua pembaruan keamanan tertunda, termasuk pembaruan keamanan tingkat keparahan rendah.

`security`  
Menerapkan pembaruan kritis atau penting tertunda yang ditandai oleh Amazon sebagai pembaruan keamanan.

`bugfix`  
Menerapkan pembaruan yang ditandai Amazon sebagai perbaikan bug. Perbaikan bug adalah serangkaian pembaruan yang lebih besar, yang mencakup pembaruan keamanan dan perbaikan untuk berbagai bug kecil lainnya.

`all`  
Menerapkan semua pembaruan yang berlaku, terlepas dari klasifikasinya.

`none`  
Jangan menerapkan pembaruan apa pun ke instans saat memulai.

**Catatan**  
Amazon Linux tidak menandai pembaruan apa pun sebagai`bugfix`. Untuk menerapkan pembaruan terkait non-keamanan dari Amazon Linux gunakan`repo_upgrade: all`.

Pengaturan default untuk `repo_upgrade` adalah keamanan. Artinya, jika Anda tidak menentukan nilai yang berbeda dalam data pengguna Anda, secara default, Amazon Linux melakukan peningkatan keamanan saat peluncuran untuk setiap paket yang diinstal pada saat itu. Amazon Linux juga memberitahu Anda tentang setiap pembaruan pada paket yang diinstal dengan mencantumkan jumlah pembaruan yang tersedia saat masuk menggunakan file `/etc/motd`. Untuk menginstal pembaruan ini, Anda harus menjalankan **sudo yum upgrade** pada instans. 

### Konfigurasi repositori
<a name="repository-config"></a>

Untuk AL1 dan AL2, AMIs adalah snapshot dari paket yang tersedia pada saat AMI dibuat, dengan pengecualian pembaruan keamanan. Paket apa pun yang tidak ada di AMI asli, tetapi diinstal saat runtime, akan menjadi versi terbaru yang tersedia. Untuk mendapatkan paket terbaru yang tersedia AL2, jalankan**yum update -y**.

**Tip pemecahan masalah**  
Jika Anda mendapatkan `cannot allocate memory` kesalahan yang berjalan **yum update** pada jenis instance nano, seperti`t3.nano`, Anda mungkin perlu mengalokasikan ruang swap untuk mengaktifkan pembaruan.

Untuk AL2023, konfigurasi repositori telah berubah dibandingkan AL1 dengan dan. AL2 Untuk informasi selengkapnya tentang AL2023 repositori, lihat [Mengelola paket dan pembaruan sistem operasi](https://docs.aws.amazon.com/linux/al2023/ug/managing-repos-os-updates.html).

Versi hingga AL2023 dikonfigurasi untuk memberikan aliran pembaruan berkelanjutan untuk bergulir dari satu versi minor Amazon Linux ke versi berikutnya, juga disebut *rilis bergulir*. Sebagai praktik terbaik, kami sarankan Anda memperbarui AMI Anda ke AMI terbaru yang tersedia daripada meluncurkan pembaruan lama AMIs dan menerapkan.

Upgrade di tempat tidak didukung antara versi Amazon Linux utama, seperti dari AL1 ke AL2 atau dari AL2 ke. AL2023 Untuk informasi selengkapnya, lihat [Ketersediaan Amazon Linux](what-is-amazon-linux.md#amazon-linux-availability).

# Menggunakan cloud-init di AL2
<a name="amazon-linux-cloud-init"></a>

Paket cloud-init adalah aplikasi sumber terbuka yang dibangun oleh Canonical yang digunakan untuk melakukan bootstrap gambar Linux di lingkungan komputasi cloud, seperti Amazon EC2. Amazon Linux berisi versi cloud-init kustom. Ini memungkinkan Anda untuk menentukan tindakan yang seharusnya terjadi pada instance Anda saat boot. Anda dapat meneruskan tindakan yang diinginkan ke cloud-init melalui bidang data pengguna saat meluncurkan suatu instans. Ini berarti Anda dapat menggunakan common AMIs untuk banyak kasus penggunaan dan mengkonfigurasinya secara dinamis saat startup. Amazon Linux juga menggunakan cloud-init untuk melakukan konfigurasi awal akun ec2-user.

 Untuk informasi selengkapnya, lihat [dokumentasi cloud-init](http://cloudinit.readthedocs.org/en/latest/). 

Amazon Linux menggunakan tindakan cloud-init yang ditemukan di `/etc/cloud/cloud.cfg.d` dan `/etc/cloud/cloud.cfg`. Anda dapat membuat file tindakan cloud-init Anda sendiri di `/etc/cloud/cloud.cfg.d`. Semua file dalam direktori ini dibaca oleh cloud-init. File dibaca dengan urutan leksikal, dan file yang lebih baru menimpa file sebelumnya.

Paket cloud-init melakukan tugas konfigurasi umum ini (dan yang lainnya) untuk instans saat boot:
+ Mengatur lokasi default.
+ Mengatur nama host.
+ Mengurai dan menangani data pengguna.
+ Membuat kunci SSH privat host.
+ Menambahkan kunci SSH publik pengguna ke `.ssh/authorized_keys` untuk kemudahan masuk dan administrasi.
+ Menyiapkan repositori untuk manajemen paket.
+ Menangani tindakan paket yang ditentukan dalam data pengguna.
+ Jalankan skrip pengguna yang ditemukan di data pengguna.
+ Memasang volume penyimpanan instans, jika ada.
  + Secara default, volume penyimpanan instans `ephemeral0` dipasang pada `/media/ephemeral0` jika ada dan berisi sistem file yang valid; jika tidak, ia tidak dipasang.
  + Secara default, setiap volume penggantian yang terkait dengan instans akan dipasang (hanya untuk tipe instans `m1.small` dan `c1.medium`).
  + Anda dapat menimpa pemasangan volume penyimpanan instans default dengan arahan cloud-init berikut:

    ```
    #cloud-config
    mounts:
    - [ ephemeral0 ]
    ```

    Untuk lebih banyak kontrol atas pemasangan, lihat [Pemasangan](http://cloudinit.readthedocs.io/en/latest/topics/modules.html#mounts) di dokumentasi cloud-init.
  + Volume penyimpanan instans yang mendukung TRIM tidak terformat saat peluncuran instans, jadi Anda harus membuat partisi dan memformatnya sebelum dapat memasangnya. Untuk informasi selengkapnya, lihat [TRIMDukungan volume penyimpanan instans](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ssd-instance-store.html#InstanceStoreTrimSupport). Anda dapat menggunakan modul `disk_setup` untuk membuat partisi dan memformat volume penyimpanan instans Anda saat boot. Untuk informasi selengkapnya, lihat [Penyiapan Disk](http://cloudinit.readthedocs.io/en/latest/topics/modules.html#disk-setup) di dokumentasi cloud-init.

## Format data pengguna yang didukung
<a name="supported-user-data-formats"></a>

Paket cloud-init mendukung penanganan data pengguna dari berbagai format:
+ Gzip
  + Jika data pengguna dikompresi gzip, cloud-init mendekompresi data dan menanganinya dengan tepat.
+ MIME multipart
  + Dengan menggunakan file multipart MIME, Anda dapat menentukan lebih dari satu tipe data. Misalnya, Anda dapat menentukan skrip data pengguna dan jenis konfigurasi cloud. Setiap bagian file multipart dapat ditangani oleh cloud-init jika merupakan salah satu format yang didukung.
+ Penguraian kode base64
  +  Jika data pengguna dikodekan base64, cloud-init menentukan apakah data pengguna dapat memahami data yang diterjemahkan sebagai salah satu tipe yang didukung. Jika memahami data yang sudah diuraikan, ia akan mengurai data dan menanganinya dengan tepat. Jika tidak, data base64 dikembalikan secara utuh.
+ Skrip data pengguna
  + Dimulai dengan `#!` atau `Content-Type: text/x-shellscript`.
  + Skrip ini dijalankan oleh `/etc/init.d/cloud-init-user-scripts` selama siklus boot pertama. Hal ini terjadi di akhir proses boot (setelah tindakan konfigurasi awal dilakukan).
+ Menyertakan file
  + Dimulai dengan `#include` atau `Content-Type: text/x-include-url`.
  + Konten ini adalah file yang disertakan. File berisi daftar URLs, satu per baris. Masing-masing URLs dibaca, dan isinya melewati seperangkat aturan yang sama ini. Konten yang dibaca dari URL dapat dikompresi gzip, MIME-multi-part, atau teks biasa.
+ Data konfigurasi cloud
  + Dimulai dengan `#cloud-config` atau `Content-Type: text/cloud-config`.
  + Konten ini adalah data konfigurasi cloud.
+ Pekerjaan pemula (tidak didukung pada AL2)
  + Dimulai dengan `#upstart-job` atau `Content-Type: text/upstart-job`.
  + Konten ini disimpan dalam file di`/etc/init`, dan pemula mengkonsumsi konten seperti halnya dengan pekerjaan pemula lainnya.
+ Boothook awan
  + Dimulai dengan `#cloud-boothook` atau `Content-Type: text/cloud-boothook`.
  + Konten ini adalah data boothook. Ini disimpan dalam file di bagian `/var/lib/cloud`, lalu segera dijalankan.
  +  Ini adalah *hook* paling awal yang tersedia. Tidak ada mekanisme yang disediakan untuk hanya menjalankannya satu kali. Boothook sendiri yang harus mengatur ini. Hal ini disediakan dengan ID instans dalam variabel lingkungan `INSTANCE_ID`. Gunakan variabel ini untuk menyediakan satu once-per-instance set data boothook.

# Konfigurasikan AL2 instance
<a name="configure-ec2-instance"></a>

Setelah Anda berhasil meluncurkan dan masuk ke AL2 instans Anda, Anda dapat membuat perubahan padanya. Ada banyak cara berbeda untuk mengonfigurasi sebuah instans untuk memenuhi kebutuhan aplikasi tertentu. Berikut ini adalah beberapa tugas umum untuk membantu Anda memulai.

**Topics**
+ [Skenario konfigurasi umum](#instance-configuration-scenarios)
+ [Kelola perangkat lunak pada AL2 instans Anda](managing-software.md)
+ [Kontrol status prosesor untuk instans Amazon EC2 AL2 Anda](processor_state_control.md)
+ [Penjadwal I/O untuk AL2](io-scheduler.md)
+ [Ubah nama host instans Anda AL2](set-hostname.md)
+ [Siapkan DNS dinamis pada instans Anda AL2](dynamic-dns.md)
+ [Konfigurasikan antarmuka jaringan Anda menggunakan ec2-net-utils untuk AL2](ec2-net-utils.md)

## Skenario konfigurasi umum
<a name="instance-configuration-scenarios"></a>

Distribusi dasar Amazon Linux berisi paket perangkat lunak dan utilitas yang diperlukan untuk operasi server dasar. Namun, lebih banyak lagi paket perangkat lunak yang tersedia di berbagai repositori perangkat lunak, dan lebih banyak lagi paket yang tersedia untuk Anda buat dari kode sumber. Untuk informasi selengkapnya tentang menginstal dan membangun perangkat lunak dari lokasi ini, lihat [Kelola perangkat lunak pada AL2 instans Anda](managing-software.md).

Instans Amazon Linux telah dikonfigurasi sebelumnya dengan `ec2-user`, tetapi Anda mungkin ingin menambahkan pengguna lain yang tidak memiliki hak istimewa pengguna super. Untuk informasi selengkapnya tentang menambahkan dan menghapus pengguna, lihat [Mengelola pengguna di Linux instans Anda](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/managing-users.html) di *Panduan Pengguna Amazon EC2*.

Jika Anda memiliki jaringan Anda sendiri dengan nama domain yang terdaftar, Anda dapat mengubah nama host dari sebuah instans untuk mengidentifikasi dirinya sebagai bagian dari domain itu. Anda juga dapat mengubah prompt sistem untuk menampilkan nama yang lebih bermakna tanpa mengubah pengaturan nama host. Untuk informasi selengkapnya, lihat [Ubah nama host instans Anda AL2](set-hostname.md). Anda dapat mengonfigurasi sebuah instans untuk menggunakan penyedia layanan DNS dinamis. Untuk informasi selengkapnya, lihat [Siapkan DNS dinamis pada instans Anda AL2](dynamic-dns.md).

Saat Anda meluncurkan sebuah instans di Amazon EC2, Anda memiliki opsi untuk meneruskan data pengguna ke instans yang dapat digunakan untuk melakukan tugas konfigurasi umum dan bahkan menjalankan skrip setelah instans dimulai. Anda dapat meneruskan dua tipe data pengguna ke Amazon EC2: arahan cloud-init dan skrip shell. Untuk informasi selengkapnya, lihat [Menjalankan perintah pada Linux instans saat diluncurkan](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/user-data.html) di *Panduan Pengguna Amazon EC2*.

# Kelola perangkat lunak pada AL2 instans Anda
<a name="managing-software"></a>

Distribusi dasar Amazon Linux berisi paket perangkat lunak dan utilitas yang diperlukan untuk operasi server dasar.

Informasi ini berlaku untuk AL2. Untuk selengkapnya AL2023, lihat [Mengelola paket dan pembaruan sistem operasi AL2023 di](https://docs.aws.amazon.com/linux/al2023/ug/managing-repos-os-updates.html) *Panduan Pengguna Amazon Linux 2023*.

Penting untuk selalu memperbarui perangkat lunak Banyak paket dalam distribusi Linux sering diperbarui untuk memperbaiki bug, menambah fitur, dan melindungi dari eksploitasi keamanan. Untuk informasi selengkapnya, lihat [Perbarui perangkat lunak instans pada AL2 instans Anda](install-updates.md).

Secara default, AL2 instance diluncurkan dengan repositori berikut diaktifkan:
+ `amzn2-core`
+ `amzn2extra-docker`

Meskipun ada banyak paket yang tersedia di repositori ini yang diperbarui oleh AWS, mungkin ada paket yang ingin Anda instal yang terkandung dalam repositori lain. Untuk informasi selengkapnya, lihat [Tambahkan repositori pada sebuah instance AL2](add-repositories.md). Untuk bantuan menemukan dan menginstal paket di repositori yang diaktifkan, lihat [Temukan dan instal paket perangkat lunak pada sebuah AL2 instance](find-install-software.md).

Tidak semua perangkat lunak tersedia dalam paket perangkat lunak yang disimpan dalam repositori; beberapa perangkat lunak harus dikompilasi pada sebuah instans dari kode sumbernya. Untuk informasi selengkapnya, lihat [Bersiaplah untuk mengkompilasi perangkat lunak pada sebuah instance AL2](compile-software.md).

AL2 instance mengelola perangkat lunak mereka menggunakan manajer paket yum. Manajer paket yum dapat menginstal, menghapus, dan memperbarui perangkat lunak, serta mengelola semua dependensi untuk setiap paket.

**Topics**
+ [Perbarui perangkat lunak instans pada AL2 instans Anda](install-updates.md)
+ [Tambahkan repositori pada sebuah instance AL2](add-repositories.md)
+ [Temukan dan instal paket perangkat lunak pada sebuah AL2 instance](find-install-software.md)
+ [Bersiaplah untuk mengkompilasi perangkat lunak pada sebuah instance AL2](compile-software.md)

# Perbarui perangkat lunak instans pada AL2 instans Anda
<a name="install-updates"></a>

Perangkat lunak harus selalu diperbarui. Banyak paket dalam distribusi Linux sering diperbarui untuk memperbaiki bug, menambah fitur, dan melindungi dari eksploitasi keamanan. Saat pertama kali meluncurkan dan terhubung ke instans Amazon Linux, Anda mungkin melihat pesan yang meminta Anda untuk memperbarui paket perangkat lunak untuk tujuan keamanan. Bagian ini menunjukkan cara memperbarui seluruh sistem, atau hanya satu paket.

Informasi ini berlaku untuk AL2. Untuk selengkapnya AL2023, lihat [Mengelola paket dan pembaruan sistem operasi AL2023 di](https://docs.aws.amazon.com/linux/al2023/ug/managing-repos-os-updates.html) *Panduan Pengguna Amazon Linux 2023*.

Untuk informasi tentang perubahan dan pembaruan AL2, lihat [catatan AL2 rilis](https://docs.aws.amazon.com/AL2/latest/relnotes/relnotes-al2.html).

Untuk informasi tentang perubahan dan pembaruan AL2023, lihat [catatan AL2023 rilis](https://docs.aws.amazon.com/linux/al2023/release-notes/relnotes.html).

**penting**  
Jika Anda meluncurkan instans EC2 yang menggunakan Amazon Linux 2 AMI ke subnet IPv6 -only, Anda harus terhubung ke instans dan menjalankannya. `sudo amazon-linux-https disable` Ini memungkinkan AL2 instance Anda terhubung ke yum repositori di S3 melalui IPv6 menggunakan layanan patch http.

**Untuk memperbarui semua paket pada sebuah AL2 instance**

1. (Opsional) Mulai sesi **screen** di jendela shell Anda. Terkadang Anda mungkin mengalami gangguan jaringan yang dapat memutuskan koneksi SSH ke instans Anda. Jika ini terjadi selama pembaruan perangkat lunak yang lama, instans dapat dipulihkan, meskipun status membingungkan. Sebuah sesi **screen** memungkinkan Anda untuk terus menjalankan pembaruan meskipun koneksi Anda terputus, dan Anda dapat menyambung kembali ke sesi nanti tanpa masalah.

   1. Jalankan perintah **screen** untuk memulai sesi.

      ```
      [ec2-user ~]$ screen
      ```

   1. Jika sesi Anda terputus, masuk kembali ke instans Anda dan buat daftar layar yang tersedia.

      ```
      [ec2-user ~]$ screen -ls
      There is a screen on:
      	17793.pts-0.ip-12-34-56-78	(Detached)
      1 Socket in /var/run/screen/S-ec2-user.
      ```

   1. Hubungkan kembali ke layar menggunakan perintah **screen -r** dan ID proses dari perintah sebelumnya.

      ```
      [ec2-user ~]$ screen -r 17793
      ```

   1. Saat Anda selesai menggunakan **screen**, gunakan perintah **exit** untuk menutup sesi.

      ```
      [ec2-user ~]$ exit
      [screen is terminating]
      ```

1. Jalankan perintah **yum update**. Secara opsional, Anda dapat menambahkan bendera `--security` untuk menerapkan pembaruan keamanan saja.

   ```
   [ec2-user ~]$ sudo yum update
   ```

1. Tinjau paket yang terdaftar, ketik, **y**dan tekan Enter untuk menerima pembaruan. Memperbarui semua paket pada sistem memakan waktu beberapa menit. Itu**yum** output menunjukkan status pembaruan saat sedang berjalan.

1. (Opsional) [Reboot instance Anda](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-reboot.html) untuk memastikan bahwa Anda menggunakan paket dan pustaka terbaru dari pembaruan Anda; pembaruan kernel tidak dimuat sampai reboot terjadi. Pembaruan untuk semua pustaka `glibc` juga harus diikuti dengan reboot. Pembaruan pada paket yang mengontrol layanan mungkin cukup dilakukan dengan memulai ulang layanan untuk mengambil pembaruan, tetapi reboot sistem memastikan bahwa semua pembaruan paket dan pustaka sebelumnya telah selesai.

**Untuk memperbarui satu paket pada sebuah AL2 instance**

Gunakan prosedur ini untuk memperbarui satu paket (dan dependensinya) alih-alih seluruh sistem.

1. Jalankan perintah **yum update** dengan nama paket yang ingin Anda perbarui.

   ```
   [ec2-user ~]$ sudo yum update openssl
   ```

1. Tinjau informasi paket yang terdaftar, ketik, **y**dan tekan Enter untuk menerima pembaruan atau beberapa pembaruan. Terkadang akan ada lebih dari satu paket yang terdaftar jika ada dependensi paket yang harus diselesaikan. Output **yum** menunjukkan status pembaruan saat sedang berjalan.

1. (Opsional) [Reboot instance Anda](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-reboot.html) untuk memastikan bahwa Anda menggunakan paket dan pustaka terbaru dari pembaruan Anda; pembaruan kernel tidak dimuat sampai reboot terjadi. Pembaruan untuk semua pustaka `glibc` juga harus diikuti dengan reboot. Pembaruan pada paket yang mengontrol layanan mungkin cukup dilakukan dengan memulai ulang layanan untuk mengambil pembaruan, tetapi reboot sistem memastikan bahwa semua pembaruan paket dan pustaka sebelumnya telah selesai.

# Tambahkan repositori pada sebuah instance AL2
<a name="add-repositories"></a>

Informasi ini berlaku untuk AL2. Untuk selengkapnya AL2023, lihat [Peningkatan deterministik melalui repositori berversi di](https://docs.aws.amazon.com/linux/al2023/ug/deterministic-upgrades.html) Panduan Pengguna *Amazon AL2023* Linux 2023.

Secara default, AL2 instance diluncurkan dengan repositori berikut diaktifkan:
+ `amzn2-core`
+ `amzn2extra-docker`

Meskipun ada banyak paket yang tersedia di repositori ini yang diperbarui oleh Amazon Web Services, mungkin ada paket yang ingin Anda instal yang terdapat di repositori lain.

Untuk menginstal paket dari repositori yang berbeda dengan **yum**, Anda perlu menambahkan informasi repositori ke file `/etc/yum.conf` atau file `repository.repo` miliknya sendiri di direktori `/etc/yum.repos.d`. Anda dapat melakukannya secara manual, tetapi kebanyakan repositori yum menyediakan file `repository.repo` sendiri di URL repositori mereka.

**Untuk menentukan repositori yum apa yang sudah terinstal**  
Buat daftar repositori yum yang diinstal dengan perintah berikut:

```
[ec2-user ~]$ yum repolist all
```

Output yang dihasilkan mencantumkan repositori yang diinstal dan melaporkan status masing-masing. Repositori yang diaktifkan menampilkan jumlah paket yang dikandungnya.

**Untuk menambahkan repositori yum ke /etc/yum.repos.d**

1. Temukan lokasi file `.repo`. Ini akan bervariasi tergantung pada repositori yang Anda tambahkan. Dalam contoh ini, file `.repo` ada di `https://www.example.com/repository.repo`.

1. Tambahkan repositori dengan perintah **yum-config-manager**.

   ```
   [ec2-user ~]$ sudo yum-config-manager --add-repo https://www.example.com/repository.repo
   Loaded plugins: priorities, update-motd, upgrade-helper
   adding repo from: https://www.example.com/repository.repo
   grabbing file https://www.example.com/repository.repo to /etc/yum.repos.d/repository.repo
   repository.repo                                      | 4.0 kB     00:00
   repo saved to /etc/yum.repos.d/repository.repo
   ```

Setelah menginstal repositori, Anda harus mengaktifkannya seperti yang dijelaskan di prosedur selanjutnya.

**Untuk mengaktifkan repositori yum di /etc/yum.repos.d**  
Gunakan perintah **yum-config-manager** dengan bendera `--enable repository`. Perintah berikut mengaktifkan repositori Paket Ekstra untuk Enterprise Linux (EPEL) dari proyek Fedora. Secara default, repositori ini berada di `/etc/yum.repos.d` pada instans AMI Amazon Linux, tetapi tidak diaktifkan.

```
[ec2-user ~]$ sudo yum-config-manager --enable epel
```

Untuk informasi lebih lanjut, dan untuk mengunduh versi terbaru dari paket ini, lihat [https://fedoraproject. org/wiki/EPEL](https://fedoraproject.org/wiki/EPEL).

# Temukan dan instal paket perangkat lunak pada sebuah AL2 instance
<a name="find-install-software"></a>

Anda dapat menggunakan alat manajemen paket untuk menemukan dan menginstal paket perangkat lunak. Di Amazon Linux 2, alat manajemen paket perangkat lunak default adalahYUM. Di AL2023, alat manajemen paket perangkat lunak default adalahDNF. Untuk informasi selengkapnya, lihat [Alat manajemen paket](https://docs.aws.amazon.com/linux/al2023/ug/package-management.html) di *Panduan Pengguna Amazon Linux 2023*.

## Temukan paket perangkat lunak pada sebuah AL2 instance
<a name="find-software"></a>

Anda dapat menggunakan perintah **yum search** untuk mencari deskripsi paket yang tersedia di repositori yang Anda konfigurasikan. Ini sangat membantu jika Anda tidak tahu nama pasti dari paket yang ingin Anda instal. Cukup tambahkan pencarian kata kunci ke perintah; untuk pencarian beberapa kata, bungkus permintaan pencarian dengan tanda kutip.

```
[ec2-user ~]$ yum search "find"
```

Berikut ini adalah output contoh.

```
Loaded plugins: extras_suggestions, langpacks, priorities, update-motd
============================== N/S matched: find ===============================
findutils.x86_64 : The GNU versions of find utilities (find and xargs)
gedit-plugin-findinfiles.x86_64 : gedit findinfiles plugin
ocaml-findlib-devel.x86_64 : Development files for ocaml-findlib
perl-File-Find-Rule.noarch : Perl module implementing an alternative interface to File::Find
robotfindskitten.x86_64 : A game/zen simulation. You are robot. Your job is to find kitten.
mlocate.x86_64 : An utility for finding files by name
ocaml-findlib.x86_64 : Objective CAML package manager and build helper
perl-Devel-Cycle.noarch : Find memory cycles in objects
perl-Devel-EnforceEncapsulation.noarch : Find access violations to blessed objects
perl-File-Find-Rule-Perl.noarch : Common rules for searching for Perl things
perl-File-HomeDir.noarch : Find your home and other directories on any platform
perl-IPC-Cmd.noarch : Finding and running system commands made easy
perl-Perl-MinimumVersion.noarch : Find a minimum required version of perl for Perl code
texlive-xesearch.noarch : A string finder for XeTeX
valgrind.x86_64 : Tool for finding memory management bugs in programs
valgrind.i686 : Tool for finding memory management bugs in programs
```

Kueri penelusuran beberapa kata dalam tanda kutip hanya memberikan hasil yang cocok dengan kueri yang sama persis. Jika Anda tidak melihat paket yang diharapkan, sederhanakan pencarian Anda menjadi satu kata kunci dan kemudian scan hasilnya. Anda juga dapat mencoba sinonim kata kunci untuk memperluas pencarian Anda.

Untuk informasi selengkapnya tentang paket AL2, lihat berikut ini:
+ [AL2 Perpustakaan Ekstra](al2-extras.md)
+ [Package repositori](ec2.md#package-repository)

## Instal paket perangkat lunak pada sebuah AL2 instance
<a name="install-software"></a>

Di AL2, alat manajemen paket yum mencari semua repositori yang diaktifkan untuk paket perangkat lunak yang berbeda dan menangani dependensi apa pun dalam proses instalasi perangkat lunak. Untuk informasi tentang menginstal paket perangkat lunak AL2023, lihat [Mengelola paket dan pembaruan sistem operasi](https://docs.aws.amazon.com/linux/al2023/ug/managing-repos-os-updates.html) di *Panduan Pengguna Amazon Linux 2023*.

**Untuk menginstal paket dari repositori**  
Gunakan **yum install *package*** perintah, ganti *package* dengan nama perangkat lunak yang akan diinstal. Misalnya, untuk menginstal browser web berbasis teks **links**, masukkan perintah berikut.

```
[ec2-user ~]$ sudo yum install links
```

**Untuk menginstal file paket RPM yang telah diunduh**  
Anda juga bisa menggunakan **yum install** untuk menginstal file paket RPM yang telah Anda unduh dari internet. Untuk melakukan ini, cukup tambahkan nama jalur file RPM ke perintah instalasi, bukan nama paket repositori.

```
[ec2-user ~]$ sudo yum install my-package.rpm
```

**Untuk mendaftar paket yang diinstal**  
Untuk melihat daftar paket yang diinstal pada instans Anda, gunakan perintah berikut.

```
[ec2-user ~]$ yum list installed
```

# Bersiaplah untuk mengkompilasi perangkat lunak pada sebuah instance AL2
<a name="compile-software"></a>

Perangkat lunak sumber terbuka tersedia di internet yang belum dikompilasi sebelumnya dan tersedia untuk diunduh dari repositori paket. Anda mungkin akhirnya menemukan paket perangkat lunak yang harus Anda kompilasi sendiri, dari kode sumbernya. Agar sistem Anda dapat mengkompilasi perangkat lunak di AL2 dan Amazon Linux, Anda perlu menginstal beberapa alat pengembangan, seperti**make**,**gcc**, dan**autoconf**.

Karena kompilasi perangkat lunak bukanlah tugas yang dibutuhkan oleh setiap instans Amazon EC2, alat-alat ini tidak diinstal secara default, tetapi tersedia dalam grup paket yang disebut "Alat Pengembangan" yang dapat dengan mudah ditambahkan ke instans dengan perintah **yum groupinstall**.

```
[ec2-user ~]$ sudo yum groupinstall "Development Tools"
```

Paket kode sumber perangkat lunak sering tersedia untuk diunduh (dari situs web seperti [https://github.com/](https://github.com/)dan [http://sourceforge.net/](https://sourceforge.net/)) sebagai file arsip terkompresi, yang disebut tarball. Tarball ini biasanya memiliki ekstensi file `.tar.gz`. Anda dapat mendekompresi arsip ini dengan perintah **tar**.

```
[ec2-user ~]$ tar -xzf software.tar.gz
```

Setelah Anda mendekompresi dan membatalkan pengarsipan paket kode sumber, Anda harus mencari file `README` atau `INSTALL` di direktori kode sumber yang dapat memberi Anda petunjuk lebih lanjut untuk mengompilasi dan menginstal kode sumber. 

**Untuk mengambil kode sumber untuk paket Amazon Linux**  
Amazon Web Services menyediakan kode sumber untuk paket yang dipelihara. Anda dapat mengunduh kode sumber untuk paket apa pun yang diinstal dengan perintah **yumdownloader --source**.

Jalankan **yumdownloader --source *package*** perintah untuk mengunduh kode sumber untuk*package*. Misalnya, untuk mengunduh kode sumber untuk paket, `htop` masukkan perintah berikut.

```
[ec2-user ~]$ yumdownloader --source htop

Loaded plugins: priorities, update-motd, upgrade-helper
Enabling amzn-updates-source repository
Enabling amzn-main-source repository
amzn-main-source                                                                                              | 1.9 kB  00:00:00     
amzn-updates-source                                                                                           | 1.9 kB  00:00:00     
(1/2): amzn-updates-source/latest/primary_db                                                                  |  52 kB  00:00:00     
(2/2): amzn-main-source/latest/primary_db                                                                     | 734 kB  00:00:00     
htop-1.0.1-2.3.amzn1.src.rpm
```

Lokasi RPM sumber ada di direktori tempat Anda menjalankan perintah.

# Kontrol status prosesor untuk instans Amazon EC2 AL2 Anda
<a name="processor_state_control"></a>

Status-C mengontrol tingkat tidur yang dapat dimasuki inti saat idle. Status-C diberi nomor mulai dengan C0 (status paling dangkal di mana inti benar-benar terjaga dan menjalankan instruksi) hingga C6 (keadaan idle terdalam di mana inti dimatikan).

P-state mengontrol performa yang diinginkan (dalam frekuensi CPU) dari sebuah inti. Status-P diberi nomor mulai dari P0 (pengaturan performa tertinggi di mana inti diizinkan untuk menggunakan Intel Turbo Boost Technology untuk meningkatkan frekuensi jika memungkinkan), dan mereka beralih dari P1 (status-P yang meminta frekuensi acuan maksimum) ke P15 (frekuensi serendah mungkin).

Anda mungkin harus mengubah pengaturan status-C atau status-P untuk meningkatkan konsistensi performa prosesor, mengurangi latensi, atau menyelaraskan instans Anda dengan beban kerja tertentu. Pengaturan status-C dan status-P default memberikan kinerja maksimum, yang optimal untuk sebagian besar beban kerja. Namun, jika aplikasi Anda akan mendapatkan keuntungan dari pengurangan latensi dengan biaya frekuensi ssatu inti atau dua inti yang lebih tinggi, atau dari performa yang konsisten pada frekuensi yang lebih rendah, dibandingkan dengan frekuensi Turbo Boost yang melonjak, pertimbangkan untuk bereksperimen dengan pengaturan status-C atau status-P yang tersedia untuk instans ini.

*Untuk informasi tentang jenis instans Amazon EC2 yang menyediakan kemampuan sistem operasi untuk mengontrol status C dan status P prosesor, lihat [Kontrol status prosesor untuk instans Amazon EC2 Anda di Panduan Pengguna Amazon EC2](https://docs.aws.amazon.com//AWSEC2/latest/UserGuide/processor_state_control.html).*

Bagian berikut menjelaskan konfigurasi status prosesor yang berbeda dan cara memantau efek konfigurasi Anda. Prosedur ini ditulis untuk, dan berlaku untuk Amazon Linux; Namun, mereka mungkin juga bekerja untuk distribusi Linux lainnya dengan kernel Linux versi 3.9 atau yang lebih baru.

**catatan**  
Contoh di halaman ini menggunakan yang berikut:  
Utilitas **turbostat** untuk menampilkan frekuensi prosesor dan informasi status-C. Utilitas **turbostat** tersedia di Amazon Linux secara default.
Perintah **stress** untuk menyimulasikan beban kerja. Untuk menginstal **stress**, pertama aktifkan repositori EPEL dengan menjalankan **sudo amazon-linux-extras install epel**, dan kemudian jalankan **sudo yum install -y stress**.
Jika output tidak menampilkan informasi status-C, sertakan opsi **--debug** dalam perintah (**sudo turbostat --debug stress *<options>***).

**Topics**
+ [Performa tertinggi dengan frekuensi Turbo Boost maksimum](#turbo-perf)
+ [Performa tinggi dan latensi rendah dengan membatasi status C yang lebih dalam](#c-states)
+ [Performa acuan dengan variabilitas terendah](#baseline-perf)

## Performa tertinggi dengan frekuensi Turbo Boost maksimum
<a name="turbo-perf"></a>

Ini adalah konfigurasi kontrol status prosesor default untuk AMI Amazon Linux, dan direkomendasikan untuk sebagian besar beban kerja. Konfigurasi ini memberikan kinerja tertinggi dengan variabilitas yang lebih rendah. Mengizinkan inti yang tidak aktif untuk memasuki status tidur yang lebih dalam akan memberikan headroom panas yang diperlukan agar proses inti tunggal atau ganda untuk dapat mencapai potensi Turbo Boost maksimumnya.

Contoh berikut menunjukkan instans `c4.8xlarge` dengan dua inti yang secara aktif melakukan pekerjaan mencapai frekuensi Turbo Boost prosesor maksimumnya.

```
[ec2-user ~]$ sudo turbostat stress -c 2 -t 10
stress: info: [30680] dispatching hogs: 2 cpu, 0 io, 0 vm, 0 hdd
stress: info: [30680] successful run completed in 10s
pk cor CPU    %c0  GHz  TSC SMI    %c1    %c3    %c6    %c7   %pc2   %pc3   %pc6   %pc7  Pkg_W RAM_W PKG_% RAM_%
             5.54 3.44 2.90   0   9.18   0.00  85.28   0.00   0.00   0.00   0.00   0.00  94.04 32.70 54.18  0.00
 0   0   0   0.12 3.26 2.90   0   3.61   0.00  96.27   0.00   0.00   0.00   0.00   0.00  48.12 18.88 26.02  0.00
 0   0  18   0.12 3.26 2.90   0   3.61
 0   1   1   0.12 3.26 2.90   0   4.11   0.00  95.77   0.00
 0   1  19   0.13 3.27 2.90   0   4.11
 0   2   2   0.13 3.28 2.90   0   4.45   0.00  95.42   0.00
 0   2  20   0.11 3.27 2.90   0   4.47
 0   3   3   0.05 3.42 2.90   0  99.91   0.00   0.05   0.00
 0   3  21  97.84 3.45 2.90   0   2.11
...
 1   1  10   0.06 3.33 2.90   0  99.88   0.01   0.06   0.00
 1   1  28  97.61 3.44 2.90   0   2.32
...
10.002556 sec
```

Dalam contoh ini, v CPUs 21 dan 28 berjalan pada frekuensi Turbo Boost maksimumnya karena core lain telah memasuki kondisi `C6` tidur untuk menghemat daya dan menyediakan daya dan ruang kepala termal untuk inti kerja. v CPUs 3 dan 10 (masing-masing berbagi inti prosesor dengan v CPUs 21 dan 28) berada dalam `C1` keadaan, menunggu instruksi.

Dalam contoh berikut, semua 18 core secara aktif melakukan pekerjaan, sehingga tidak ada ruang kepala untuk Turbo Boost maksimum, tetapi semuanya berjalan pada kecepatan “all core Turbo Boost” 3,2. GHz

```
[ec2-user ~]$ sudo turbostat stress -c 36 -t 10
stress: info: [30685] dispatching hogs: 36 cpu, 0 io, 0 vm, 0 hdd
stress: info: [30685] successful run completed in 10s
pk cor CPU    %c0  GHz  TSC SMI    %c1    %c3    %c6    %c7   %pc2   %pc3   %pc6   %pc7  Pkg_W RAM_W PKG_% RAM_%
            99.27 3.20 2.90   0   0.26   0.00   0.47   0.00   0.00   0.00   0.00   0.00 228.59 31.33 199.26  0.00
 0   0   0  99.08 3.20 2.90   0   0.27   0.01   0.64   0.00   0.00   0.00   0.00   0.00 114.69 18.55 99.32  0.00
 0   0  18  98.74 3.20 2.90   0   0.62
 0   1   1  99.14 3.20 2.90   0   0.09   0.00   0.76   0.00
 0   1  19  98.75 3.20 2.90   0   0.49
 0   2   2  99.07 3.20 2.90   0   0.10   0.02   0.81   0.00
 0   2  20  98.73 3.20 2.90   0   0.44
 0   3   3  99.02 3.20 2.90   0   0.24   0.00   0.74   0.00
 0   3  21  99.13 3.20 2.90   0   0.13
 0   4   4  99.26 3.20 2.90   0   0.09   0.00   0.65   0.00
 0   4  22  98.68 3.20 2.90   0   0.67
 0   5   5  99.19 3.20 2.90   0   0.08   0.00   0.73   0.00
 0   5  23  98.58 3.20 2.90   0   0.69
 0   6   6  99.01 3.20 2.90   0   0.11   0.00   0.89   0.00
 0   6  24  98.72 3.20 2.90   0   0.39
...
```

## Performa tinggi dan latensi rendah dengan membatasi status C yang lebih dalam
<a name="c-states"></a>

Status-C mengontrol tingkat tidur yang dapat dimasuki inti saat tidak aktif. Anda mungkin perlu mengontrol status-C untuk menyelaraskan sistem Anda untuk latensi versus performa. Menidurkan inti membutuhkan waktu, dan meskipun inti tidur memungkinkan lebih banyak ruang kepala untuk inti lain untuk meningkat ke frekuensi yang lebih tinggi, inti tidur tersebut membutuhkan waktu untuk bangun kembali dan melakukan pekerjaan. Misalnya, jika inti yang ditugaskan untuk menangani interupsi paket jaringan tertidur, mungkin ada penundaan dalam melayani interupsi tersebut. Anda dapat mengonfigurasi sistem agar tidak menggunakan status-C yang lebih dalam, yang mengurangi latensi reaksi prosesor, tetapi nantinya juga mengurangi headroom yang tersedia pada inti lain untuk Turbo Boost.

Skenario umum untuk menonaktifkan status tidur lebih dalam adalah aplikasi basis data Redis, yang menyimpan basis data dalam memori sistem untuk waktu respons kueri yang secepat mungkin.

**Untuk membatasi kondisi tidur yang lebih dalam AL2**

1. Buka file `/etc/default/grub` dengan editor pilihan Anda.

   ```
   [ec2-user ~]$ sudo vim /etc/default/grub
   ```

1. Edit baris `GRUB_CMDLINE_LINUX_DEFAULT` dan tambahkan opsi `intel_idle.max_cstate=1` dan `processor.max_cstate=1` untuk mengatur `C1` sebagai C-state terdalam untuk inti yang idle.

   ```
   GRUB_CMDLINE_LINUX_DEFAULT="console=tty0 console=ttyS0,115200n8 net.ifnames=0 biosdevname=0 nvme_core.io_timeout=4294967295 intel_idle.max_cstate=1 processor.max_cstate=1"
   GRUB_TIMEOUT=0
   ```

   Opsi `intel_idle.max_cstate=1` ini mengonfigurasi batas C-state untuk instans berbasis Intel, dan opsi `processor.max_cstate=1` mengonfigurasi batas C-state untuk instans berbasis AMD. Anda bisa menambahkan kedua opsi ke konfigurasi Anda. Hal ini memungkinkan satu konfigurasi untuk mengatur perilaku yang diinginkan pada Intel dan AMD.

1. Simpan file dan keluar dari editor Anda.

1.  Jalankan perintah berikut untuk membangun ulang konfigurasi boot.

   ```
   [ec2-user ~]$ sudo grub2-mkconfig -o /boot/grub2/grub.cfg
   ```

1. Reboot instans Anda untuk mengaktifkan opsi kernel baru.

   ```
   [ec2-user ~]$ sudo reboot
   ```

**Untuk membatasi status tidur yang lebih dalam di Amazon Linux AMI**

1. Buka file `/boot/grub/grub.conf` dengan editor pilihan Anda.

   ```
   [ec2-user ~]$ sudo vim /boot/grub/grub.conf
   ```

1. Edit baris `kernel` pada entri pertama dan tambahkan opsi `intel_idle.max_cstate=1` dan `processor.max_cstate=1` untuk mengatur `C1` sebagai status-C terdalam untuk inti yang idle.

   ```
   # created by imagebuilder
   default=0
   timeout=1
   hiddenmenu
   
   title Amazon Linux 2014.09 (3.14.26-24.46.amzn1.x86_64)
   root (hd0,0)
   kernel /boot/vmlinuz-3.14.26-24.46.amzn1.x86_64 root=LABEL=/ console=ttyS0 intel_idle.max_cstate=1  processor.max_cstate=1
   initrd /boot/initramfs-3.14.26-24.46.amzn1.x86_64.img
   ```

   Opsi `intel_idle.max_cstate=1` ini mengonfigurasi batas C-state untuk instans berbasis Intel, dan opsi `processor.max_cstate=1` mengonfigurasi batas C-state untuk instans berbasis AMD. Anda bisa menambahkan kedua opsi ke konfigurasi Anda. Hal ini memungkinkan satu konfigurasi untuk mengatur perilaku yang diinginkan pada Intel dan AMD.

1. Simpan file dan keluar dari editor Anda.

1. Reboot instans Anda untuk mengaktifkan opsi kernel baru.

   ```
   [ec2-user ~]$ sudo reboot
   ```

Contoh berikut menunjukkan instans `c4.8xlarge` dengan dua inti yang secara aktif melakukan pekerjaan pada frekuensi inti "all core Turbo Boost".

```
[ec2-user ~]$ sudo turbostat stress -c 2 -t 10
stress: info: [5322] dispatching hogs: 2 cpu, 0 io, 0 vm, 0 hdd
stress: info: [5322] successful run completed in 10s
pk cor CPU    %c0  GHz  TSC SMI    %c1    %c3    %c6    %c7   %pc2   %pc3   %pc6   %pc7  Pkg_W RAM_W PKG_% RAM_%
             5.56 3.20 2.90   0  94.44   0.00   0.00   0.00   0.00   0.00   0.00   0.00 131.90 31.11 199.47  0.00
 0   0   0   0.03 2.08 2.90   0  99.97   0.00   0.00   0.00   0.00   0.00   0.00   0.00  67.23 17.11 99.76  0.00
 0   0  18   0.01 1.93 2.90   0  99.99
 0   1   1   0.02 1.96 2.90   0  99.98   0.00   0.00   0.00
 0   1  19  99.70 3.20 2.90   0   0.30
...
 1   1  10   0.02 1.97 2.90   0  99.98   0.00   0.00   0.00
 1   1  28  99.67 3.20 2.90   0   0.33
 1   2  11   0.04 2.63 2.90   0  99.96   0.00   0.00   0.00
 1   2  29   0.02 2.11 2.90   0  99.98
...
```

Dalam contoh ini, core untuk v CPUs 19 dan 28 berjalan pada 3.2 GHz, dan core lainnya berada dalam `C1` keadaan C, menunggu instruksi. Meskipun inti yang bekerja tidak mencapai frekuensi Turbo Boost maksimumnya, inti yang tidak aktif akan jauh lebih cepat merespons permintaan baru daripada yang mereka lakukan di dalam C-state `C6`.

## Performa acuan dengan variabilitas terendah
<a name="baseline-perf"></a>

Anda dapat mengurangi variabilitas frekuensi prosesor dengan status-P. P-state mengontrol performa yang diinginkan (dalam frekuensi CPU) dari sebuah inti. Sebagian besar beban kerja bekerja lebih baik di P0, yang meminta Turbo Boost. Tetapi Anda mungkin harus menyelaraskan sistem Anda untuk mendapatkan performa yang konsisten daripada performa yang melonjak yang dapat terjadi ketika frekuensi Turbo Boost diaktifkan. 

Beban kerja Intel Advanced Vector Extensions (AVX atau AVX2) dapat bekerja dengan baik pada frekuensi yang lebih rendah, dan instruksi AVX dapat menggunakan lebih banyak daya. Menjalankan prosesor pada frekuensi yang lebih rendah, dengan menonaktifkan Turbo Boost, dapat mengurangi jumlah daya yang digunakan dan menjaga kecepatan lebih konsisten. Untuk informasi selengkapnya tentang mengoptimalkan konfigurasi instans Anda dan beban kerja untuk AVX, lihat [situs web Intel](https://www.intel.com/content/www/us/en/developer/articles/technical/the-intel-advanced-vector-extensions-512-feature-on-intel-xeon-scalable.html?wapkw=advanced%20vector%20extensions).

Driver idle CPU mengontrol status-P. Generasi CPU yang lebih baru memerlukan driver idle CPU yang diperbarui yang sesuai dengan tingkat kernel sebagai berikut:
+ Kernel Linux versi 6.1 dan lebih tinggi - Mendukung Intel Granite Rapids (misalnya, R8i)
+ Kernel Linux versi 5.10 dan lebih tinggi — Mendukung AMD Milan (misalnya, M6a)
+ Kernel Linux versi 5.6 dan lebih tinggi - Mendukung Intel Icelake (misalnya, M6i)

Untuk mendeteksi apakah kernel sistem yang sedang berjalan mengenali CPU, jalankan perintah berikut.

```
if [ -d /sys/devices/system/cpu/cpu0/cpuidle ]; then echo "C-state control enabled"; else echo "Kernel cpuidle driver does not recognize this CPU generation"; fi
```

Jika output dari perintah ini menunjukkan kurangnya dukungan, kami sarankan Anda memutakhirkan kernel.

Bagian ini menjelaskan cara membatasi status tidur yang lebih dalam dan menonaktifkan Turbo Boost (dengan meminta status-P `P1`) untuk memberikan latensi rendah dan variabilitas kecepatan prosesor terendah untuk tipe beban kerja ini.

**Untuk membatasi kondisi tidur yang lebih dalam dan menonaktifkan Turbo Boost aktif AL2**

1. Buka file `/etc/default/grub` dengan editor pilihan Anda.

   ```
   [ec2-user ~]$ sudo vim /etc/default/grub
   ```

1. Edit baris `GRUB_CMDLINE_LINUX_DEFAULT` dan tambahkan opsi `intel_idle.max_cstate=1` dan `processor.max_cstate=1` untuk mengatur `C1` sebagai C-state terdalam untuk inti yang idle.

   ```
   GRUB_CMDLINE_LINUX_DEFAULT="console=tty0 console=ttyS0,115200n8 net.ifnames=0 biosdevname=0 nvme_core.io_timeout=4294967295 intel_idle.max_cstate=1 processor.max_cstate=1"
   GRUB_TIMEOUT=0
   ```

   Opsi `intel_idle.max_cstate=1` ini mengonfigurasi batas C-state untuk instans berbasis Intel, dan opsi `processor.max_cstate=1` mengonfigurasi batas C-state untuk instans berbasis AMD. Anda bisa menambahkan kedua opsi ke konfigurasi Anda. Hal ini memungkinkan satu konfigurasi untuk mengatur perilaku yang diinginkan pada Intel dan AMD.

1. Simpan file dan keluar dari editor Anda.

1.  Jalankan perintah berikut untuk membangun ulang konfigurasi boot.

   ```
   [ec2-user ~]$ grub2-mkconfig -o /boot/grub2/grub.cfg
   ```

1. Reboot instans Anda untuk mengaktifkan opsi kernel baru.

   ```
   [ec2-user ~]$ sudo reboot
   ```

1. Bila Anda membutuhkan variabilitas kecepatan prosesor rendah yang disediakan P-state `P1`, jalankan perintah berikut untuk menonaktifkan Turbo Boost.

   ```
   [ec2-user ~]$ sudo sh -c "echo 1 > /sys/devices/system/cpu/intel_pstate/no_turbo"
   ```

1. Saat beban kerja Anda selesai, Anda dapat mengaktifkan kembali Turbo Boost dengan perintah berikut.

   ```
   [ec2-user ~]$ sudo sh -c "echo 0 > /sys/devices/system/cpu/intel_pstate/no_turbo"
   ```

**Untuk membatasi status tidur yang lebih dalam dan menonaktifkan Turbo Boost di Amazon Linux AMI**

1. Buka file `/boot/grub/grub.conf` dengan editor pilihan Anda.

   ```
   [ec2-user ~]$ sudo vim /boot/grub/grub.conf
   ```

1. Edit baris `kernel` pada entri pertama dan tambahkan opsi `intel_idle.max_cstate=1` dan `processor.max_cstate=1` untuk mengatur `C1` sebagai status-C terdalam untuk inti yang idle.

   ```
   # created by imagebuilder
   default=0
   timeout=1
   hiddenmenu
   
   title Amazon Linux 2014.09 (3.14.26-24.46.amzn1.x86_64)
   root (hd0,0)
   kernel /boot/vmlinuz-3.14.26-24.46.amzn1.x86_64 root=LABEL=/ console=ttyS0 intel_idle.max_cstate=1 processor.max_cstate=1
   initrd /boot/initramfs-3.14.26-24.46.amzn1.x86_64.img
   ```

   Opsi `intel_idle.max_cstate=1` ini mengonfigurasi batas C-state untuk instans berbasis Intel, dan opsi `processor.max_cstate=1` mengonfigurasi batas C-state untuk instans berbasis AMD. Anda bisa menambahkan kedua opsi ke konfigurasi Anda. Hal ini memungkinkan satu konfigurasi untuk mengatur perilaku yang diinginkan pada Intel dan AMD.

1. Simpan file dan keluar dari editor Anda.

1. Reboot instans Anda untuk mengaktifkan opsi kernel baru.

   ```
   [ec2-user ~]$ sudo reboot
   ```

1. Bila Anda membutuhkan variabilitas kecepatan prosesor rendah yang disediakan P-state `P1`, jalankan perintah berikut untuk menonaktifkan Turbo Boost.

   ```
   [ec2-user ~]$ sudo sh -c "echo 1 > /sys/devices/system/cpu/intel_pstate/no_turbo"
   ```

1. Saat beban kerja Anda selesai, Anda dapat mengaktifkan kembali Turbo Boost dengan perintah berikut.

   ```
   [ec2-user ~]$ sudo sh -c "echo 0 > /sys/devices/system/cpu/intel_pstate/no_turbo"
   ```

Contoh berikut menunjukkan `c4.8xlarge` instance dengan dua v CPUs secara aktif melakukan pekerjaan pada frekuensi inti dasar, tanpa Turbo Boost.

```
[ec2-user ~]$ sudo turbostat stress -c 2 -t 10
stress: info: [5389] dispatching hogs: 2 cpu, 0 io, 0 vm, 0 hdd
stress: info: [5389] successful run completed in 10s
pk cor CPU    %c0  GHz  TSC SMI    %c1    %c3    %c6    %c7   %pc2   %pc3   %pc6   %pc7  Pkg_W RAM_W PKG_% RAM_%
             5.59 2.90 2.90   0  94.41   0.00   0.00   0.00   0.00   0.00   0.00   0.00 128.48 33.54 200.00  0.00
 0   0   0   0.04 2.90 2.90   0  99.96   0.00   0.00   0.00   0.00   0.00   0.00   0.00  65.33 19.02 100.00  0.00
 0   0  18   0.04 2.90 2.90   0  99.96
 0   1   1   0.05 2.90 2.90   0  99.95   0.00   0.00   0.00
 0   1  19   0.04 2.90 2.90   0  99.96
 0   2   2   0.04 2.90 2.90   0  99.96   0.00   0.00   0.00
 0   2  20   0.04 2.90 2.90   0  99.96
 0   3   3   0.05 2.90 2.90   0  99.95   0.00   0.00   0.00
 0   3  21  99.95 2.90 2.90   0   0.05
...
 1   1  28  99.92 2.90 2.90   0   0.08
 1   2  11   0.06 2.90 2.90   0  99.94   0.00   0.00   0.00
 1   2  29   0.05 2.90 2.90   0  99.95
```

Inti untuk v CPUs 21 dan 28 secara aktif melakukan pekerjaan pada kecepatan prosesor dasar 2,9 GHz, dan semua inti yang tidak aktif juga berjalan pada kecepatan dasar dalam keadaan `C1` C, siap menerima instruksi.

# Penjadwal I/O untuk AL2
<a name="io-scheduler"></a>

I/O scheduler is a part of the Linux operating system that sorts and merges I/OPermintaan dan menentukan urutan di mana mereka diproses.

I/O schedulers are particularly beneficial for devices such as magnetic hard drives, where seek time can be expensive and where it is optimal to merge co-located requests. I/Openjadwal memiliki lebih sedikit efek dengan perangkat solid state dan lingkungan virtual. Ini karena untuk perangkat solid state, akses berurutan dan acak tidak berbeda, dan untuk lingkungan virtual, host menyediakan lapisan penjadwalan sendiri.

Topik ini membahas I/O penjadwal Amazon Linux. Untuk informasi lebih lanjut tentang penjadwal I/O yang digunakan oleh distribusi Linux lainnya, lihat dokumentasi masing-masing.

**Topics**
+ [Penjadwal yang didukung](#supported-schedulers)
+ [Penjadwal default](#default-schedulers)
+ [Ubah penjadwal](#change-scheduler)

## Penjadwal yang didukung
<a name="supported-schedulers"></a>

Amazon Linux mendukung I/O penjadwal berikut:
+ `deadline`— I/O Penjadwal *tenggat waktu* mengurutkan I/O permintaan dan menanganinya dalam urutan yang paling efisien. Ini menjamin waktu mulai untuk setiap I/O request. It also gives I/O permintaan yang telah tertunda terlalu lama prioritas yang lebih tinggi.
+ `cfq`— I/O Penjadwal *Antrian Sepenuhnya Adil (CFQ) mencoba mengalokasikan I/O resources between processes. It sorts and inserts I/O permintaan secara adil ke dalam antrian per proses*.
+ `noop`— I/O scheduler inserts all I/O Permintaan *No Operation* (noop) ke dalam antrian FIFO dan kemudian menggabungkannya menjadi satu permintaan. Penjadwal ini tidak melakukan penyortiran permintaan apa pun.

## Penjadwal default
<a name="default-schedulers"></a>

No Operation (noop) adalah I/O penjadwal default untuk Amazon Linux. Penjadwal ini digunakan karena alasan berikut:
+ Banyak tipe instans menggunakan perangkat virtual di mana host yang mendasarinya melakukan penjadwalan untuk instans.
+ Perangkat solid state digunakan dalam banyak jenis contoh di mana manfaat I/O penjadwal memiliki efek yang lebih kecil.
+ Ini adalah I/O penjadwal yang paling tidak invasif, dan dapat disesuaikan jika diperlukan.

## Ubah penjadwal
<a name="change-scheduler"></a>

Mengubah I/O penjadwal dapat meningkatkan atau mengurangi kinerja berdasarkan apakah penjadwal menghasilkan lebih banyak atau lebih sedikit I/O permintaan yang diselesaikan dalam waktu tertentu. Ini sebagian besar tergantung pada beban kerja Anda, pembuatan tipe instans yang sedang digunakan, dan jenis perangkat yang diakses. Jika Anda mengubah penjadwal I/O yang digunakan, kami sarankan Anda menggunakan alat, seperti **iotop**, untuk mengukur I/O kinerja dan untuk menentukan apakah perubahan tersebut bermanfaat untuk kasus penggunaan Anda.

Anda dapat melihat I/O penjadwal untuk perangkat menggunakan perintah berikut, yang digunakan `nvme0n1` sebagai contoh. Ganti `nvme0n1` dalam perintah berikut dengan perangkat yang tercantum `/sys/block` di instans Anda.

```
$  cat /sys/block/nvme0n1/queue/scheduler
```

Untuk mengatur I/O penjadwal perangkat, gunakan perintah berikut. 

```
$  echo cfq|deadline|noop > /sys/block/nvme0n1/queue/scheduler
```

Misalnya, untuk mengatur I/O penjadwal *xvda* perangkat dari `noop` ke`cfq`, gunakan perintah berikut. 

```
$  echo cfq > /sys/block/xvda/queue/scheduler
```

# Ubah nama host instans Anda AL2
<a name="set-hostname"></a>

Saat Anda meluncurkan instans ke VPC privat, Amazon EC2 menetapkan nama host OS tamu. Tipe nama host yang ditetapkan Amazon EC2 bergantung pada pengaturan subnet Anda. Untuk informasi selengkapnya tentang nama host EC2, lihat jenis [nama host instans Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-naming.html) di Panduan Pengguna Amazon *EC2*.

Nama DNS pribadi Amazon EC2 khas untuk instans EC2 yang dikonfigurasi untuk menggunakan penamaan berbasis IP dengan IPv4 alamat terlihat seperti ini:`ip-12-34-56-78.us-west-2.compute.internal`, di mana nama terdiri dari domain internal, layanan (dalam hal ini,`compute`), wilayah, dan bentuk alamat pribadi. IPv4 Bagian dari nama host ini ditampilkan pada prompt shell saat Anda masuk ke instans Anda (misalnya, `ip-12-34-56-78`). Setiap kali Anda berhenti dan memulai ulang instans Amazon EC2 Anda (kecuali Anda menggunakan alamat IP Elastis), IPv4 alamat publik berubah, begitu juga nama DNS publik, nama host sistem, dan prompt shell Anda.

**penting**  
Informasi ini berlaku untuk Amazon Linux. Untuk informasi tentang distribusi lain, lihat dokumentasi spesifik tentangnya.

## Mengubah nama host sistem
<a name="set-hostname-system"></a>

Jika Anda memiliki nama DNS publik yang terdaftar untuk alamat IP instans Anda (seperti `webserver.mydomain.com`), Anda dapat mengatur nama host sistem sehingga instans Anda mengidentifikasi dirinya sebagai bagian dari domain itu. Ini juga mengubah prompt shell sehingga menampilkan bagian pertama dari nama ini alih-alih nama host yang disediakan oleh AWS (misalnya,`ip-12-34-56-78`). Jika Anda tidak memiliki nama DNS publik yang terdaftar, Anda masih dapat mengubah nama host, tetapi prosesnya sedikit berbeda.

Agar pembaruan nama host Anda tetap ada, Anda harus memverifikasi bahwa pengaturan `preserve_hostname` cloud-init diatur ke `true`. Anda dapat menjalankan perintah berikut untuk mengedit atau menambahkan pengaturan ini:

```
sudo vi /etc/cloud/cloud.cfg
```

Jika pengaturan `preserve_hostname` tidak terdaftar, tambahkan baris teks berikut ke akhir file: 

```
preserve_hostname: true
```

**Untuk mengubah nama host sistem menjadi nama DNS publik**

Ikuti prosedur ini jika Anda sudah memiliki nama DNS publik yang terdaftar.

1. 
   + Untuk AL2: Gunakan **hostnamectl** perintah untuk mengatur nama host Anda agar mencerminkan nama domain yang sepenuhnya memenuhi syarat (seperti**webserver.mydomain.com**).

     ```
     [ec2-user ~]$ sudo hostnamectl set-hostname webserver.mydomain.com
     ```
   + Untuk AMI Amazon Linux: Pada instans Anda, buka file konfigurasi `/etc/sysconfig/network` di editor teks favorit Anda dan ubah entri `HOSTNAME` sehingga mencerminkan nama domain yang sepenuhnya memenuhi syarat (seperti **webserver.mydomain.com**).

     ```
     HOSTNAME=webserver.mydomain.com
     ```

1. Boot ulang instans untuk mengambil nama host baru.

   ```
   [ec2-user ~]$ sudo reboot
   ```

   Atau, Anda dapat melakukan boot ulang menggunakan konsol Amazon EC2 (di halaman **Instans**, pilih instans dan pilih **Status instans**, **Boot ulang instans**).

1. Masuk ke instans Anda dan pastikan bahwa nama host telah diperbarui. Perintah Anda harus menampilkan nama host baru (hingga "." Pertama) dan**hostname** Perintah harus menunjukkan nama domain yang memenuhi syarat.

   ```
   [ec2-user@webserver ~]$ hostname
   webserver.mydomain.com
   ```

**Untuk mengubah nama host sistem tanpa nama DNS publik**

1. 
   + Untuk AL2: Gunakan **hostnamectl** perintah untuk mengatur nama host Anda untuk mencerminkan nama host sistem yang diinginkan (seperti**webserver**).

     ```
     [ec2-user ~]$ sudo hostnamectl set-hostname webserver.localdomain
     ```
   + Untuk AMI Amazon Linux: Pada instans Anda, buka file konfigurasi `/etc/sysconfig/network` di editor teks favorit Anda dan ubah entri `HOSTNAME` sehingga mencerminkan nama host sistem yang diinginkan (seperti **webserver**).

     ```
     HOSTNAME=webserver.localdomain
     ```

1. Buka file `/etc/hosts` di editor teks favorit Anda dan ubah entri yang diawali dengan **127.0.0.1** untuk mencocokkan contoh di bawah ini, dengan mengganti nama host Anda sendiri.

   ```
   127.0.0.1 webserver.localdomain webserver localhost4 localhost4.localdomain4
   ```

1. Boot ulang instans untuk mengambil nama host baru.

   ```
   [ec2-user ~]$ sudo reboot
   ```

   Atau, Anda dapat melakukan boot ulang menggunakan konsol Amazon EC2 (di halaman **Instans**, pilih instans dan pilih **Status instans**, **Boot ulang instans**).

1. Masuk ke instans Anda dan pastikan bahwa nama host telah diperbarui. Prompt Anda harus menampilkan nama host baru (hingga "." pertama) dan perintah **hostname** harus menunjukkan nama domain yang memenuhi syarat.

   ```
   [ec2-user@webserver ~]$ hostname
   webserver.localdomain
   ```

Anda juga dapat menerapkan solusi yang lebih terprogram, seperti menentukan data pengguna untuk mengonfigurasi instans Anda. Jika instans Anda adalah bagian dari grup Auto Scaling, Anda dapat menggunakan pengait siklus hidup untuk menentukan data pengguna. Untuk informasi selengkapnya, lihat [Menjalankan perintah pada instans Linux Anda saat peluncuran](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/user-data.html) dan [Pengait siklus hidup untuk peluncuran instans](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-lifecyclehook.html#aws-resource-autoscaling-lifecyclehook--examples--Lifecycle_hook_for_instance_launch) di *Panduan Pengguna AWS CloudFormation *.

## Mengubah prompt shell tanpa memengaruhi nama host
<a name="set-hostname-shell"></a>

Jika Anda tidak ingin mengubah nama host untuk instance Anda, tetapi Anda ingin memiliki nama sistem yang lebih berguna (seperti**webserver**) ditampilkan daripada nama pribadi yang disediakan oleh AWS (misalnya,`ip-12-34-56-78`), Anda dapat mengedit file konfigurasi shell prompt untuk menampilkan nama panggilan sistem Anda alih-alih nama host.

**Untuk mengubah prompt shell menjadi nama panggilan host**

1. Buat file di `/etc/profile.d` yang mengatur variabel lingkungan yang disebut `NICKNAME` ke nilai yang Anda inginkan di prompt shell. Misalnya, untuk mengatur nama panggilan sistem menjadi **webserver**, jalankan perintah berikut.

   ```
   [ec2-user ~]$ sudo sh -c 'echo "export NICKNAME=webserver" > /etc/profile.d/prompt.sh'
   ```

1. Buka file `/etc/bashrc` (Red Hat) atau `/etc/bash.bashrc` (Debian/Ubuntu) di editor teks favorit Anda (seperti **vim** atau **nano**). Anda perlu menggunakan **sudo** dengan perintah editor karena `/etc/bashrc` dan `/etc/bash.bashrc` dimiliki oleh `root`.

1. Edit file dan ubah variabel prompt shell (`PS1`) untuk menampilkan nama panggilan Anda, bukan nama host. Temukan baris berikut yang mengatur prompt shell di `/etc/bashrc` atau `/etc/bash.bashrc` (beberapa baris sekitarnya ditampilkan di bawah untuk konteks; cari baris yang dimulai dengan `[ "$PS1"`):

   ```
     # Turn on checkwinsize
     shopt -s checkwinsize
     [ "$PS1" = "\\s-\\v\\\$ " ] && PS1="[\u@\h \W]\\$ "
     # You might want to have e.g. tty in prompt (e.g. more virtual machines)
     # and console windows
   ```

   Ubah `\h` (simbol untuk `hostname`) di baris tersebut ke nilai variabel `NICKNAME`.

   ```
     # Turn on checkwinsize
     shopt -s checkwinsize
     [ "$PS1" = "\\s-\\v\\\$ " ] && PS1="[\u@$NICKNAME \W]\\$ "
     # You might want to have e.g. tty in prompt (e.g. more virtual machines)
     # and console windows
   ```

1. (Opsional) Untuk mengatur judul di jendela shell ke nama panggilan baru, selesaikan langkah-langkah berikut.

   1. Buat file bernama `/etc/sysconfig/bash-prompt-xterm`.

      ```
      [ec2-user ~]$ sudo touch /etc/sysconfig/bash-prompt-xterm
      ```

   1. Buat file tersebut dapat dieksekusi menggunakan perintah berikut.

      ```
      [ec2-user ~]$ sudo chmod +x /etc/sysconfig/bash-prompt-xterm
      ```

   1. Buka file `/etc/sysconfig/bash-prompt-xterm` di editor teks favorit Anda (seperti **vim** atau **nano**). Anda perlu menggunakan **sudo** dengan perintah editor karena `/etc/sysconfig/bash-prompt-xterm` dimiliki oleh `root`.

   1. Tambahkan baris berikut ke file.

      ```
      echo -ne "\033]0;${USER}@${NICKNAME}:${PWD/#$HOME/~}\007"
      ```

1. Keluar lalu masuk kembali untuk mengambil nilai nama panggilan baru.

## Mengubah nama host pada distribusi Linux lainnya
<a name="set-hostname-other-linux"></a>

Prosedur di halaman ini dimaksudkan untuk digunakan dengan Amazon Linux saja. Untuk informasi lebih lanjut tentang distribusi Linux lainnya, lihat dokumentasi spesifik mereka dan artikel berikut ini:
+ [Bagaimana cara menetapkan nama host statis ke instans Amazon EC2 privat yang menjalankan RHEL 7 atau Centos 7?](https://aws.amazon.com/premiumsupport/knowledge-center/linux-static-hostname-rhel7-centos7/)

# Siapkan DNS dinamis pada instans Anda AL2
<a name="dynamic-dns"></a>

Saat Anda meluncurkan instans EC2, instans tersebut mendapatkan alamat IP publik dan nama Sistem Nama Domain (DNS) publik yang dapat Anda gunakan untuk menjangkaunya dari internet. Karena ada begitu banyak host di domain Amazon Web Services, nama publik ini harus cukup panjang agar setiap nama tetap unik. Nama DNS publik Amazon EC2 yang khas terlihat seperti ini:`ec2-12-34-56-78.us-west-2.compute.amazonaws.com`, di mana nama terdiri dari domain Amazon Web Services, layanan (dalam hal ini,`compute`) Wilayah AWS, dan bentuk alamat IP publik.

Layanan DNS Dinamis menyediakan nama host DNS kustom dalam area domain mereka yang mudah diingat dan juga lebih relevan dengan kasus penggunaan host Anda. Beberapa layanan ini juga gratis. Anda dapat menggunakan penyedia DNS dinamis dengan Amazon EC2 dan mengonfigurasi instans untuk memperbarui alamat IP yang terkait dengan nama DNS publik setiap kali instans dimulai. Ada banyak penyedia yang dapat dipilih, dan detail spesifik tentang pemilihan penyedia dan pendaftaran nama dengan mereka berada di luar cakupan panduan ini.<a name="procedure-dynamic-dns"></a>

**Untuk menggunakan DNS dinamis dengan Amazon EC2**

1. Daftar dengan penyedia layanan DNS dinamis dan daftarkan nama DNS publik dengan layanan mereka. Prosedur ini menggunakan layanan gratis dari [noip.com/free](https://www.noip.com/free) sebagai contohnya.

1. Konfigurasikan klien pembaruan DNS dinamis. Setelah Anda mendaftarkan penyedia layanan DNS dinamis dan nama DNS publik dengan layanan mereka, arahkan nama DNS ke alamat IP untuk instans Anda. Banyak penyedia (termasuk [noip.com](https://noip.com)) mengizinkan Anda melakukan ini secara manual dari halaman akun Anda di situs web mereka, tetapi banyak juga yang mendukung klien pembaruan perangkat lunak. Jika klien pembaruan berjalan pada instans EC2 Anda, data DNS dinamis Anda diperbarui setiap kali alamat IP berubah, seperti yang terjadi setelah dimatikan dan dimulai ulang. Dalam contoh ini, Anda menginstal klien noip2, yang bekerja dengan layanan yang disediakan oleh [noip.com](https://noip.com).

   1. Aktifkan repositori Paket Ekstra untuk Enterprise Linux (EPEL) untuk mendapatkan akses ke klien. `noip2`
**catatan**  
AL2 instance memiliki kunci GPG dan informasi repositori untuk repositori EPEL diinstal secara default. Untuk informasi lebih lanjut, dan untuk mengunduh versi terbaru dari paket ini, lihat [https://fedoraproject. org/wiki/EPEL](https://fedoraproject.org/wiki/EPEL).

      ```
      [ec2-user ~]$ sudo amazon-linux-extras install epel -y
      ```

   1. Instal paket `noip`.

      ```
      [ec2-user ~]$ sudo yum install -y noip
      ```

   1. Buat file konfigurasi. Masukkan informasi login dan kata sandi ketika diminta dan jawab pertanyaan berikutnya untuk mengonfigurasi klien.

      ```
      [ec2-user ~]$ sudo noip2 -C
      ```

1. Aktifkan layanan noip.

   ```
   [ec2-user ~]$ sudo systemctl enable noip.service
   ```

1. Mulai layanan noip.

   ```
   [ec2-user ~]$ sudo systemctl start noip.service
   ```

   Perintah ini memulai klien, yang membaca file konfigurasi (`/etc/no-ip2.conf`) yang Anda buat sebelumnya dan memperbarui alamat IP untuk nama DNS publik yang Anda pilih.

1. Verifikasi bahwa klien pembaruan telah menetapkan alamat IP yang benar untuk nama DNS dinamis Anda. Tunggu beberapa menit agar catatan DNS diperbarui, lalu coba hubungkan instans Anda menggunakan SSH dengan nama DNS publik yang Anda konfigurasikan dalam prosedur ini.

# Konfigurasikan antarmuka jaringan Anda menggunakan ec2-net-utils untuk AL2
<a name="ec2-net-utils"></a>

Amazon Linux 2 AMIs mungkin berisi skrip tambahan yang diinstal oleh AWS, yang dikenal sebagai ec2-net-utils. Skrip ini secara opsional mengotomatiskan konfigurasi antarmuka jaringan Anda. Skrip ini AL2 hanya tersedia untuk.

**catatan**  
Untuk Amazon Linux 2023, `amazon-ec2-net-utils` paket menghasilkan konfigurasi khusus antarmuka di direktori. `/run/systemd/network` Untuk informasi selengkapnya, lihat [Layanan jaringan](https://docs.aws.amazon.com/linux/al2023/ug/networking-service.html) di *Panduan Pengguna Amazon Linux 2023*.

Gunakan perintah berikut untuk menginstal paket AL2 jika belum diinstal, atau perbarui jika sudah diinstal dan pembaruan tambahan tersedia:

```
$ yum install ec2-net-utils
```

Komponen berikut adalah bagian dari ec2-net-utils:

aturan udev (`/etc/udev/rules.d`)  
Mengidentifikasi antarmuka jaringan saat dipasang, dilepaskan, atau dipasang kembali ke instans yang sedang berjalan, dan memastikan bahwa skrip hotplug berjalan (`53-ec2-network-interfaces.rules`). Memetakan alamat MAC ke nama perangkat (`75-persistent-net-generator.rules`, yang menghasilkan `70-persistent-net.rules`).

skrip hotplug  
Menghasilkan file konfigurasi antarmuka yang cocok untuk digunakan dengan DHCP (`/etc/sysconfig/network-scripts/ifcfg-eth` *N*). Juga menghasilkan file konfigurasi rute (`/etc/sysconfig/network-scripts/route-eth` *N*).

Skrip DHCP  
Setiap kali antarmuka jaringan menerima sewa DHCP baru, skrip ini menanyakan metadata instans untuk alamat IP Elastis. Untuk setiap alamat IP Elastis, ini menambahkan aturan ke basis data kebijakan perutean untuk memastikan bahwa lalu lintas ke luar dari alamat tersebut menggunakan antarmuka jaringan yang benar. Itu juga menambahkan setiap alamat IP privat ke antarmuka jaringan sebagai alamat sekunder.

**ec2ifup** eth*N* (`/usr/sbin/`)  
Memperpanjang fungsi standar **ifup**. Setelah skrip ini menulis ulang file konfigurasi `ifcfg-eth`*N* dan `route-eth`*N*, ia menjalankan **ifup**.

**ec2ifdown** eth*N* (`/usr/sbin/`)  
Memperpanjang fungsi standar **ifdown**. Setelah skrip ini menghapus semua aturan untuk antarmuka jaringan dari basis data kebijakan perutean, skrip akan menjalankan **ifdown**.

**ec2ifscan** (`/usr/sbin/`)  
Memeriksa antarmuka jaringan yang belum dikonfigurasi dan mengonfigurasinya.  
Skrip ini tidak tersedia pada rilis awal ec2-net-utils.

Untuk membuat daftar file konfigurasi yang dibuat oleh ec2-net-utils, gunakan perintah berikut:

```
$ ls -l /etc/sysconfig/network-scripts/*-eth?
```

Untuk menonaktifkan otomatisasi, Anda dapat menambahkan `EC2SYNC=no` ke file `ifcfg-eth` *N* yang sesuai. Misalnya, gunakan perintah berikut untuk menonaktifkan otomatisasi untuk antarmuka eth1:

```
$ sed -i -e 's/^EC2SYNC=yes/EC2SYNC=no/' /etc/sysconfig/network-scripts/ifcfg-eth1
```

Untuk menonaktifkan otomatisasi sepenuhnya, Anda dapat menghapus paket menggunakan perintah berikut:

```
$ yum remove ec2-net-utils
```

# Kernel yang disediakan pengguna
<a name="UserProvidedKernels"></a>

Jika Anda memerlukan kernel kustom di instans Amazon EC2, Anda dapat memulai dengan AMI yang mirip dengan apa yang Anda inginkan, mengompilasi kernel khusus di instans Anda, dan memperbarui bootloader untuk menunjuk ke kernel baru. Proses ini bervariasi tergantung pada tipe virtualisasi yang digunakan AMI Anda. Untuk informasi selengkapnya, lihat [jenis virtualisasi AMI Linux](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/virtualization_types.html) di Panduan *Pengguna Amazon EC2*.

**Topics**
+ [HVM AMIs (GRUB)](#HVM_instances)
+ [Paravirtual AMIs (PV-GRUB)](#Paravirtual_instances)

## HVM AMIs (GRUB)
<a name="HVM_instances"></a>

Volume instans HVM diperlakukan layaknya disk fisik sebenarnya. Proses boot mirip dengan sistem operasi bare metal dengan disk terpartisi dan bootloader, yang memungkinkannya bekerja dengan semua distribusi Linux yang didukung saat ini. Bootloader yang paling umum adalah GRUB atau. GRUB2

Secara default, GRUB tidak mengirim output-nya ke konsol instans karena menyebabkan tambahan penundaan boot. Untuk informasi selengkapnya, lihat [Output konsol instans](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/troubleshoot-unreachable-instance.html#instance-console-console-output) di *Panduan Pengguna Amazon EC2*. Jika Anda menginstal kernel kustom, Anda harus mempertimbangkan untuk mengaktifkan output GRUB.

Anda tidak perlu menentukan pemunduran kernel, tetapi kami menyarankan Anda mengaktifkan pemunduran saat menguji kernel baru. GRUB dapat mundur kembali ke kernel lain jika kernel baru gagal. Pemunduran kernel memungkinkan instans dapat di-boot meski kernel baru tidak ditemukan.

GRUB warisan untuk Amazon Linux menggunakan. `/boot/grub/menu.lst` GRUB2 untuk AL2 penggunaan`/etc/default/grub`. Untuk informasi lebih lanjut tentang memperbarui kernel default dalam bootloader, lihat dokumentasi untuk distribusi Linux Anda.

## Paravirtual AMIs (PV-GRUB)
<a name="Paravirtual_instances"></a>

AMIs yang menggunakan virtualisasi paravirtual (PV) menggunakan sistem yang disebut *PV-GRUB* selama proses boot. PV-GRUB adalah bootloader paravirtual yang menjalankan versi GNU GRUB 0.97 yang di-patch. Saat Anda memulai instans, PV-GRUB memulai proses boot, lalu memuat secara berantai kernel yang ditentukan oleh file `menu.lst` gambar Anda.

PV-GRUB memahami perintah `grub.conf` atau `menu.lst` standar, yang memungkinkannya berfungsi dengan semua distribusi Linux yang didukung saat ini. Distribusi yang lebih lama, seperti Ubuntu 10.04 LTS, Oracle Enterprise Linux, atau CentOS 5.x memerlukan paket kernel khusus "ec2" atau "xen", sedangkan distribusi yang lebih baru telah memiliki driver yang diperlukan dalam paket kernel default.

Sebagian besar AMI Paravirtual modern menggunakan AKI PV-GRUB secara default (termasuk semua AMI paravirtual Linux yang tersedia di menu Mulai Cepat Wizard Peluncuran Amazon EC2), jadi tidak ada langkah-langkah tambahan yang perlu diambil untuk menggunakan kernel berbeda untuk instans Anda, asalkan kernel yang ingin Anda gunakan kompatibel dengan distribusi Anda. Cara terbaik untuk menjalankan kernel kustom pada instans Anda adalah memulai dengan AMI yang mirip dengan apa yang Anda inginkan, lalu mengompilasi kernel kustom pada instans Anda dan memodifikasi file `menu.lst` untuk melakukan boot dengan kernel tersebut.

Anda dapat memverifikasi bahwa gambar kernel untuk AMI adalah AKI PV-GRUB. Jalankan perintah [describe-images](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-images.html) berikut (menggantikan ID gambar kernel Anda), dan periksa apakah bidang `Name` dimulai dengan `pv-grub`:

```
aws ec2 describe-images --filters Name=image-id,Values=aki-880531cd
```

**Topics**
+ [Keterbatasan PV-GRUB](#pv-grub-limitations)
+ [Configuring GRUB](#configuringGRUB)
+ [Gambar Kernel Amazon PV-GRUB IDs](#AmazonKernelImageIDs)
+ [Memperbarui PV-GRUB](#UpdatingPV-GRUB)

### Keterbatasan PV-GRUB
<a name="pv-grub-limitations"></a>

PV-GRUB memiliki keterbatasan berikut:
+ Anda tidak dapat menggunakan PV-GRUB versi 64-bit untuk memulai kernel 32-bit, atau sebaliknya.
+ Anda tidak dapat menentukan Amazon ramdisk gambar (ARI) saat menggunakan AKI PV-GRUB.
+ AWS telah menguji dan memverifikasi bahwa PV-GRUB bekerja dengan format sistem file ini: EXT2,,, JFS EXT3, XFS EXT4, dan ReiserFS. Format sistem file lainnya mungkin tidak bekerja.
+ PV-GRUB dapat melakukan boot kernel yang dikompresi menggunakan format kompresi gzip, bzip2, lzo, dan xz.
+ Cluster AMIs tidak mendukung atau membutuhkan PV-GRUB, karena mereka menggunakan virtualisasi perangkat keras penuh (HVM). Meskipun instans paravirtual menggunakan PV-GRUB untuk melakukan boot, volume instans HVM diperlakukan seperti disk aktual, dan proses boot mirip dengan proses boot sistem operasi bare metal, dengan disk berpartisi dan bootloader. 
+ PV-GRUB versi 1.03 dan yang lebih awal tidak mendukung pembuatan partisi GPT; versi ini hanya mendukung pembuatan partisi MBR.
+ Jika Anda berencana menggunakan pengelola volume logis (LVM) dengan volume Amazon Elastic Block Store (Amazon EBS), Anda perlu partisi boot terpisah di luar LVM. Kemudian, Anda dapat membuat volume logis dengan LVM.

### Konfigurasikan GRUB untuk paravirtual AMIs
<a name="configuringGRUB"></a>

Untuk melakukan boot PV-GRUB, file `menu.lst` GRUB harus ada dalam gambar; lokasi paling umum untuk file ini adalah `/boot/grub/menu.lst`.

Berikut ini adalah contoh file konfigurasi `menu.lst` untuk melakukan boot AMI dengan AKI PV-GRUB. Dalam contoh ini, ada dua entri kernel yang dapat dipilih: Amazon Linux 2018.03 (kernel asli untuk AMI ini), dan Vanilla Linux 4.16.4 (versi lebih baru kernel Vanilla Linux dari [https://www.kernel.org/](https://www.kernel.org/)). Entri Vanilla disalin dari entri asli untuk AMI ini, dan jalur `kernel` dan `initrd` diperbarui ke lokasi baru. Parameter `default 0` menunjuk bootloader ke entri pertama yang dilihatnya (dalam hal ini, entri Vanila), dan parameter `fallback 1` menunjukkan bootloader ke entri berikutnya jika ada masalah saat boot yang pertama.

```
default 0
fallback 1
timeout 0
hiddenmenu

title Vanilla Linux 4.16.4
root (hd0)
kernel /boot/vmlinuz-4.16.4 root=LABEL=/ console=hvc0
initrd /boot/initrd.img-4.16.4

title Amazon Linux 2018.03 (4.14.26-46.32.amzn1.x86_64)
root (hd0)
kernel /boot/vmlinuz-4.14.26-46.32.amzn1.x86_64 root=LABEL=/ console=hvc0
initrd /boot/initramfs-4.14.26-46.32.amzn1.x86_64.img
```

Anda tidak perlu menentukan pemunduran kernel di `menu.lst` Anda, tetapi kami menyarankan Anda mengaktifkan pemunduran saat menguji kernel baru. PV-GRUB dapat mundur kembali ke kernel lain jika kernel baru gagal. Memiliki pemunduran kernel memungkinkan instans dapat di-boot meski kernel baru tidak ditemukan. 

PV-GRUB memeriksa `menu.lst` di lokasi berikut, menggunakan yang pertama ia temukan:
+  `(hd0)/boot/grub` 
+  `(hd0,0)/boot/grub` 
+  `(hd0,0)/grub` 
+  `(hd0,1)/boot/grub` 
+  `(hd0,1)/grub` 
+  `(hd0,2)/boot/grub` 
+  `(hd0,2)/grub` 
+  `(hd0,3)/boot/grub` 
+  `(hd0,3)/grub` 

Perhatikan bahwa PV-GRUB 1.03 dan sebelumnya hanya memeriksa salah satu dari dua lokasi pertama dalam daftar ini.

### Gambar Kernel Amazon PV-GRUB IDs
<a name="AmazonKernelImageIDs"></a>

AKI PV-GRUB tersedia di semua wilayah Amazon EC2, tidak termasuk Asia Pasifik (Osaka). Ada AKIs untuk tipe arsitektur 32-bit dan 64-bit. Kebanyakan modern AMIs menggunakan PV-GRUB AKI secara default.

Kami menyarankan agar Anda selalu menggunakan AKI PV-GRUB versi terbaru karena tidak semua versi AKI PV-GRUB kompatibel dengan semua tipe instans. Gunakan [perintah deskripsi-gambar berikut untuk mendapatkan daftar AKIs PV-GRUB](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-images.html) untuk wilayah saat ini:

```
aws ec2 describe-images --owners amazon --filters Name=name,Values=pv-grub-*.gz
```

PV-GRUB adalah satu-satunya AKI yang tersedia di Wilayah `ap-southeast-2`. Anda harus memverifikasi bahwa AMI yang ingin Anda salin ke Wilayah ini menggunakan versi PV-GRUB yang tersedia di Wilayah ini.

Berikut ini adalah AKI saat ini IDs untuk setiap Wilayah. Daftarkan baru AMIs menggunakan HD0 AKI.

**catatan**  
Kami terus menyediakan hd00 AKIs untuk kompatibilitas mundur di Wilayah di mana mereka sebelumnya tersedia.


**ap-northeast-1, Asia Pasifik (Tokyo)**  

| ID gambar | Nama Gambar | 
| --- | --- | 
|  aki-f975a998  |  pv-grub-hd0\$11.05-i386.gz  | 
|  aki-7077ab11  |  pv-grub-hd0\$11.05-x86\$164.gz  | 


**ap-southeast-1, Wilayah Asia Pasifik (Singapura)**  

| ID gambar | Nama Gambar | 
| --- | --- | 
|  aki-17a40074  |  pv-grub-hd0\$11.05-i386.gz  | 
|  aki-73a50110  |  pv-grub-hd0\$11.05-x86\$164.gz  | 


**ap-southeast-2, Asia Pasifik (Sydney)**  

| ID gambar | Nama Gambar | 
| --- | --- | 
|  aki-ba5665d9  |  pv-grub-hd0\$11.05-i386.gz  | 
|  aki-66506305  |  pv-grub-hd0\$11.05-x86\$164.gz  | 


**eu-central-1, Eropa (Frankfurt)**  

| ID gambar | Nama Gambar | 
| --- | --- | 
|  aki-1419e57b  |  pv-grub-hd0\$11.05-i386.gz  | 
|  aki-931fe3fc  |  pv-grub-hd0\$11.05-x86\$164.gz  | 


**eu-west-1, Eropa (Irlandia)**  

| ID gambar | Nama Gambar | 
| --- | --- | 
|  aki-1c9fd86f  |  pv-grub-hd0\$11.05-i386.gz  | 
|  aki-dc9ed9af  |  pv-grub-hd0\$11.05-x86\$164.gz  | 


**sa-east-1, Amerika Selatan (Sao Paulo)**  

| ID gambar | Nama Gambar | 
| --- | --- | 
|  aki-7cd34110  |  pv-grub-hd0\$11.05-i386.gz  | 
|  aki-912fbcfd  |  pv-grub-hd0\$11.05-x86\$164.gz  | 


**AS Timur (Virginia Utara) us-east-1**  

| ID gambar | Nama Gambar | 
| --- | --- | 
|  aki-04206613  |  pv-grub-hd0\$11.05-i386.gz  | 
|  aki-5c21674b  |  pv-grub-hd0\$11.05-x86\$164.gz  | 


**us-gov-west-1, AWS GovCloud (AS-Barat)**  

| ID gambar | Nama Gambar | 
| --- | --- | 
|  aki-5ee9573f  |  pv-grub-hd0\$11.05-i386.gz  | 
|  aki-9ee55bff  |  pv-grub-hd0\$11.05-x86\$164.gz  | 


**us-west-1, AS Barat (California Utara)**  

| ID gambar | Nama Gambar | 
| --- | --- | 
|  aki-43cf8123  |  pv-grub-hd0\$11.05-i386.gz  | 
|  aki-59cc8239  |  pv-grub-hd0\$11.05-x86\$164.gz  | 


**us-west-2, AS Barat (Oregon)**  

| ID gambar | Nama Gambar | 
| --- | --- | 
|  aki-7a69931a  |  pv-grub-hd0\$11.05-i386.gz  | 
|  aki-70cb0e10  |  pv-grub-hd0\$11.05-x86\$164.gz  | 

### Memperbarui PV-GRUB
<a name="UpdatingPV-GRUB"></a>

Kami menyarankan agar Anda selalu menggunakan AKI PV-GRUB versi terbaru karena tidak semua versi AKI PV-GRUB kompatibel dengan semua tipe instans. Selain itu, versi PV-GRUB lebih lama tidak tersedia di semua wilayah, sehingga jika Anda menyalin AMI yang menggunakan versi lama ke Wilayah yang tidak mendukung versi tersebut, Anda tidak akan dapat melakukan boot instan yang diluncurkan dari AMI tersebut hingga Anda memperbarui gambar kernel. Gunakan prosedur berikut untuk memeriksa versi PV-GRUB instans Anda dan perbarui jika perlu.

**Untuk memeriksa versi PV-GRUB Anda**

1. Cari ID kernel untuk instans Anda.

   ```
   aws ec2 describe-instance-attribute --instance-id instance_id --attribute kernel --region region
   
   {
       "InstanceId": "instance_id", 
       "KernelId": "aki-70cb0e10"
   }
   ```

   ID kernel untuk instans ini adalah `aki-70cb0e10`.

1. Tampilkan informasi versi ID kernel tersebut.

   ```
   aws ec2 describe-images --image-ids aki-70cb0e10 --region region
   
   {
       "Images": [
           {
               "VirtualizationType": "paravirtual", 
               "Name": "pv-grub-hd0_1.05-x86_64.gz", 
               ...
               "Description": "PV-GRUB release 1.05, 64-bit"
           }
       ]
   }
   ```

   Gambar kernel ini adalah PV-GRUB 1.05. Jika versi PV-GRUB Anda bukan versi terbaru (seperti ditunjukkan dalam [Gambar Kernel Amazon PV-GRUB IDs](#AmazonKernelImageIDs)), Anda harus memperbaruinya menggunakan prosedur berikut.

**Untuk memperbarui versi PV-GRUB Anda**

Jika instans Anda menggunakan versi PV-GRUB lama, Anda harus memperbaruinya ke versi terbaru.

1. Mengidentifikasi AKI PV-GRUB terbaru untuk Wilayah Anda dan arsitektur prosesor dari [Gambar Kernel Amazon PV-GRUB IDs](#AmazonKernelImageIDs).

1. Hentikan instans Anda. Instans Anda harus dihentikan untuk mengubah gambar kernel yang digunakan.

   ```
   aws ec2 stop-instances --instance-ids instance_id --region region
   ```

1. Ubah gambar kernel yang digunakan untuk instans Anda.

   ```
   aws ec2 modify-instance-attribute --instance-id instance_id --kernel kernel_id --region region
   ```

1. Mulai ulang instans Anda.

   ```
   aws ec2 start-instances --instance-ids instance_id --region region 
   ```

# AL2 Pemberitahuan rilis AMI
<a name="linux-ami-notifications"></a>

Untuk diberi tahu saat Amazon Linux AMIs baru dirilis, Anda dapat berlangganan menggunakan Amazon SNS.

Untuk informasi tentang berlangganan notifikasi AL2023, lihat [Menerima pemberitahuan tentang pembaruan baru](https://docs.aws.amazon.com/linux/al2023/ug/receive-update-notification.html) di *Panduan Pengguna Amazon Linux 2023*.

**catatan**  
Dukungan standar untuk AL1 berakhir pada 31 Desember 2020. Fase dukungan AL1 pemeliharaan berakhir 31 Desember 2023. Untuk informasi selengkapnya tentang AL1 EOL dan dukungan pemeliharaan, lihat posting blog [Pembaruan di Amazon Linux AMI end-of-life](https://aws.amazon.com/blogs/aws/update-on-amazon-linux-ami-end-of-life/).

**Untuk berlangganan notifikasi Amazon Linux**

1. [Buka konsol Amazon SNS di https://console.aws.amazon.com/sns/ v3/home.](https://console.aws.amazon.com/sns/v3/home)

1. Di bilah navigasi, ubah Wilayah menjadi **AS Timur (Virginia Utara)**, jika perlu. Anda harus memilih Wilayah tempat Anda berlangganan notifikasi SNS.

1. Pada panel navigasi, silakan pilih **Berlangganan**, **Buat langganan**.

1. Untuk kotak dialog **Buat langganan**, lakukan hal berikut:

   1. [AL2] Untuk **Topik ARN**, salin dan tempel Nama Sumber Daya Amazon (ARN) berikut:. **arn:aws:sns:us-east-1:137112412989:amazon-linux-2-ami-updates**

   1. [Amazon Linux] Untuk **Topic ARN**, salin dan tempel Amazon Resource Name (ARN) berikut ini: **arn:aws:sns:us-east-1:137112412989:amazon-linux-ami-updates**.

   1. Untuk **Protokol**, pilih **Email**.

   1. Untuk **Titik Akhir**, ketik alamat email yang bisa Anda gunakan untuk menerima notifikasi.

   1. Pilih **Buat langganan**.

1. Anda menerima email konfirmasi dengan baris subjek "AWS Pemberitahuan - Konfirmasi Berlangganan”. Buka email dan pilih **Konfirmasi berlangganan** untuk menyelesaikan langganan Anda.

Setiap kali AMIs dirilis, kami mengirim pemberitahuan kepada pelanggan dari topik yang sesuai. Untuk berhenti menerima notifikasi ini, gunakan prosedur berikut untuk berhenti berlangganan.

**Untuk berhenti berlangganan notifikasi Amazon Linux**

1. [Buka konsol Amazon SNS di https://console.aws.amazon.com/sns/ v3/home.](https://console.aws.amazon.com/sns/v3/home)

1. Di bilah navigasi, ubah Wilayah menjadi **AS Timur (Virginia Utara)**, jika perlu. Anda harus menggunakan Wilayah tempat notifikasi SNS dibuat.

1. Di panel navigasi, pilih **Langganan**, pilih langganan notifikasi SNS, lalu pilih **Tindakan**, **Hapus langganan**.

1. Ketika diminta untuk mengonfirmasi, pilih **Hapus**.

**Format pesan SNS AMI Amazon Linux**  
Skema untuk pesan SNS adalah sebagai berikut. 

```
{
    "description": "Validates output from AMI Release SNS message",
    "type": "object",
    "properties": {
        "v1": {
            "type": "object",
            "properties": {
                "ReleaseVersion": {
                    "description": "Major release (ex. 2018.03)",
                    "type": "string"
                },
                "ImageVersion": {
                    "description": "Full release (ex. 2018.03.0.20180412)",
                    "type": "string"
                },
                "ReleaseNotes": {
                    "description": "Human-readable string with extra information",
                    "type": "string"
                },
                "Regions": {
                    "type": "object",
                    "description": "Each key will be a region name (ex. us-east-1)",
                    "additionalProperties": {
                        "type": "array",
                        "items": {
                            "type": "object",
                            "properties": {
                                "Name": {
                                    "description": "AMI Name (ex. amzn-ami-hvm-2018.03.0.20180412-x86_64-gp2)",
                                    "type": "string"
                                },
                                "ImageId": {
                                    "description": "AMI Name (ex.ami-467ca739)",
                                    "type": "string"
                                }
                            },
                            "required": [
                                "Name",
                                "ImageId"
                            ]
                        }
                    }
                }
            },
            "required": [
                "ReleaseVersion",
                "ImageVersion",
                "ReleaseNotes",
                "Regions"
            ]
        }
    },
    "required": [
        "v1"
    ]
}
```

# Konfigurasikan koneksi desktop AL2 MATE
<a name="amazon-linux-ami-mate"></a>

[Lingkungan desktop MATE](https://mate-desktop.org/) sudah diinstal sebelumnya dan dikonfigurasi sebelumnya AMIs dengan deskripsi berikut:

"`.NET Core x.x, Mono x.xx, PowerShell x.x, and MATE DE pre-installed to run your .NET applications on Amazon Linux 2 with Long Term Support (LTS).`"

Lingkungan menyediakan antarmuka pengguna grafis intuitif untuk mengelola AL2 instance dengan penggunaan minimal baris perintah. Antarmuka menggunakan representasi grafis, seperti ikon, jendela, bilah alat, folder, wallpaper, dan widget desktop. Alat bawaan berbasis GUI tersedia untuk melakukan tugas umum. Misalnya, ada alat untuk menambahkan dan menghapus perangkat lunak, menerapkan pembaruan, mengatur file, meluncurkan program, dan memantau kesehatan sistem.

**penting**  
`xrdp` adalah perangkat lunak desktop jarak jauh yang dipaketkan dalam AMI. Secara default, `xrdp` menggunakan sertifikat TLS yang ditandatangani sendiri untuk mengenkripsi sesi desktop jarak jauh. Baik AWS maupun `xrdp` pengelola tidak merekomendasikan penggunaan sertifikat yang ditandatangani sendiri dalam produksi. Sebagai gantinya, dapatkan sertifikat dari otoritas sertifikat (CA) yang sesuai dan instal di instans Anda. Untuk informasi selengkapnya tentang konfigurasi TLS, lihat [Lapisan keamanan TLS](https://github.com/neutrinolabs/xrdp/wiki/TLS-security-layer) di wiki `xrdp`.

**catatan**  
Jika Anda lebih suka menggunakan layanan komputasi jaringan virtual (VNC) daripada xrdp, lihat artikel [Bagaimana cara menginstal GUI di instans Amazon EC2 saya yang menjalankan artikel Pusat Pengetahuan](https://repost.aws/knowledge-center/ec2-linux-2-install-gui). AL2 AWS 

## Prasyarat
<a name="al2-mate-configure-prerequisite"></a>

Untuk menjalankan perintah yang ditampilkan dalam topik ini, Anda harus menginstal AWS Command Line Interface (AWS CLI) atau AWS Tools for Windows PowerShell, dan mengkonfigurasi AWS profil Anda.

**Opsi**

1. Instal AWS CLI - Untuk informasi selengkapnya, lihat [Menginstal](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-set-up.html) [dasar-dasar AWS CLI dan Konfigurasi](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html) di *Panduan AWS Command Line Interface Pengguna*.

1. Menginstal Alat untuk Windows PowerShell — Untuk informasi selengkapnya, lihat [Menginstal AWS Tools for Windows PowerShell](https://docs.aws.amazon.com/powershell/latest/userguide/pstools-getting-set-up.html) dan [Kredensi Bersama](https://docs.aws.amazon.com/powershell/latest/userguide/shared-credentials-in-aws-powershell.html) di *Alat AWS untuk PowerShell Panduan Pengguna*.

**Tip**  
Sebagai alternatif untuk melakukan instalasi penuh AWS CLI, Anda dapat menggunakan [AWS CloudShell](https://docs.aws.amazon.com/cloudshell/latest/userguide/welcome.html)shell pra-otentikasi berbasis browser yang diluncurkan langsung dari file. Konsol Manajemen AWS Periksa [didukung Wilayah AWS](https://docs.aws.amazon.com/cloudshell/latest/userguide/supported-aws-regions.html), untuk memastikannya tersedia di wilayah tempat Anda bekerja.

## Mengonfigurasi koneksi RDP
<a name="al2-mate-configure-connection"></a>

Ikuti langkah-langkah ini untuk menyiapkan koneksi Remote Desktop Protocol (RDP) dari mesin lokal Anda ke AL2 instance yang menjalankan lingkungan desktop MATE.

1. Untuk mendapatkan ID AMI AL2 yang menyertakan MATE dalam nama AMI, Anda dapat menggunakan [perintah deskripsi-gambar dari alat](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/ec2/describe-images.html) baris perintah lokal Anda. Jika Anda belum menginstal alat baris perintah, Anda dapat melakukan kueri berikut langsung dari AWS CloudShell sesi. Untuk informasi tentang cara meluncurkan sesi shell CloudShell, lihat [Memulai AWS CloudShell](https://docs.aws.amazon.com/cloudshell/latest/userguide/getting-started.html). Dari konsol Amazon EC2, Anda dapat menemukan AMI yang disertakan MATE dengan meluncurkan instans, lalu masuk `MATE` di bilah pencarian AMI. AL2 Quick Start dengan MATE pra-instal akan muncul di hasil pencarian.

   ```
   aws ec2 describe-images --filters "Name=name,Values=amzn2*MATE*" --query "Images[*].[ImageId,Name,Description]"
   [
       [
           "ami-0123example0abc12",
           "amzn2-x86_64-MATEDE_DOTNET-2020.12.04",
           ".NET Core 5.0, Mono 6.12, PowerShell 7.1, and MATE DE pre-installed to run your .NET applications on Amazon Linux 2 with Long Term Support (LTS)."
       ],
       [
           "ami-0456example0def34",
           "amzn2-x86_64-MATEDE_DOTNET-2020.04.14",
           "Amazon Linux 2 with .Net Core, PowerShell, Mono, and MATE Desktop Environment"
       ]
   ]
   ```

   Pilih AMI yang sesuai untuk Anda gunakan.

1. Luncurkan instans EC2 dengan AMI yang Anda temukan di langkah sebelumnya. Konfigurasikan grup keamanan untuk mengizinkan lalu lintas TCP masuk ke port 3389. Untuk informasi selengkapnya tentang mengonfigurasi grup keamanan, lihat [Grup keamanan untuk VPC Anda](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html). Konfigurasi ini memungkinkan Anda menggunakan klien RDP agar terhubung ke instans.

1. Sambungkan ke instans Anda menggunakan [SSH](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/connect-linux-inst-ssh.html).

1. Perbarui perangkat lunak dan kernel pada instans.

   ```
   [ec2-user ~]$ sudo yum update
   ```

   Setelah pembaruan selesai, boot ulang instans untuk memastikan bahwa instans menggunakan paket dan pustaka terbaru dari pembaruan; pembaruan kernel tidak dimuat sampai boot ulang dilakukan.

   ```
   [ec2-user ~]$ sudo reboot
   ```

1. Sambungkan kembali ke instans dan jalankan perintah berikut pada instans Linux Anda untuk mengatur kata sandi `ec2-user`.

   ```
   [ec2-user ~]$ sudo passwd ec2-user
   ```

1. Menginstal sertifikat dan kunci.

   Jika Anda sudah memiliki sertifikat dan kunci, salin ke direktori `/etc/xrdp/` sebagai berikut:
   + Sertifikat — `/etc/xrdp/cert.pem`
   + Kunci — `/etc/xrdp/key.pem`

   Jika Anda tidak memiliki sertifikat dan kunci, gunakan perintah berikut untuk membuatnya di direktori `/etc/xrdp`.

   ```
   $ sudo openssl req -x509 -sha384 -newkey rsa:3072 -nodes -keyout /etc/xrdp/key.pem -out /etc/xrdp/cert.pem -days 365
   ```
**catatan**  
Perintah ini menghasilkan sertifikat yang berlaku selama 365 hari.

1. Buka klien RDP di komputer yang akan Anda sambungkan ke instans (misalnya, Koneksi Desktop Jarak Jauh di komputer yang menjalankan Microsoft Windows). Masukkan `ec2-user` sebagai nama pengguna dan masukkan kata sandi yang Anda atur di langkah sebelumnya.

**Untuk menonaktifkan `xrdp` pada instans Amazon EC2**  
Anda dapat menonaktifkan `xrdp` setiap saat dengan menjalankan salah satu perintah berikut pada instans Linux Anda. Perintah berikut tidak memengaruhi kemampuan Anda untuk menggunakan MATE menggunakan server X11.

```
[ec2-user ~]$ sudo systemctl disable xrdp
```

```
[ec2-user ~]$ sudo systemctl stop xrdp
```

**Untuk menonaktifkan `xrdp` pada instans Amazon EC2**  
Untuk mengaktifkan kembali `xrdp` sehingga Anda dapat terhubung ke AL2 instans Anda menjalankan lingkungan desktop MATE, jalankan salah satu perintah berikut pada instance Linux Anda.

```
[ec2-user ~]$ sudo systemctl enable xrdp
```

```
[ec2-user ~]$ sudo systemctl start xrdp
```

# AL2 Tutorial
<a name="al2-tutorials"></a>

 Tutorial berikut menunjukkan cara melakukan tugas umum menggunakan instans Amazon EC2 yang berjalan. AL2 Untuk tutorial video, lihat [Video AWS instruksional dan lab](https://www.aws.training/). 

Untuk AL2023 petunjuk, lihat [Tutorial](https://docs.aws.amazon.com/linux/al2023/ug/tutorials-al2023.html) di *Panduan Pengguna Amazon Linux 2023*.

**Topics**
+ [Tutorial: Instal server LAMP AL2](ec2-lamp-amazon-linux-2.md)
+ [Tutorial: SSL/TLS Konfigurasikan AL2](SSL-on-amazon-linux-2.md)
+ [Tutorial: Tuan rumah WordPress blog di AL2](hosting-wordpress.md)

# Tutorial: Instal server LAMP AL2
<a name="ec2-lamp-amazon-linux-2"></a>

Prosedur berikut membantu Anda menginstal server web Apache dengan dukungan PHP dan [MariaDB](https://mariadb.org/about/) (fork MySQL yang dikembangkan komunitas) pada instance AL2 Anda (kadang-kadang disebut server web LAMP atau tumpukan LAMP). Anda dapat menggunakan server ini untuk melakukan host situs web statis atau melakukan deployment aplikasi PHP dinamis yang membaca dan menulis informasi ke basis data.

**penting**  
Jika Anda mencoba menyiapkan server web LAMP di distribusi yang berbeda seperti Ubuntu atau Red Hat Enterprise Linux, tutorial ini tidak bisa Anda gunakan. Untuk AL2023, lihat [Menginstal server LAMP pada AL2023](https://docs.aws.amazon.com//linux/al2023/ug/ec2-lamp-amazon-linux-2023.html). Untuk Ubuntu, lihat dokumentasi komunitas Ubuntu berikut: [ApacheMySQLPHP](https://help.ubuntu.com/community/ApacheMySQLPHP). Untuk distribusi lain, lihat dokumentasi spesifik mereka.

**Opsi: Selesaikan tutorial ini menggunakan otomatisasi**  
Untuk menyelesaikan tutorial ini menggunakan AWS Systems Manager Otomasi alih-alih tugas-tugas berikut, jalankan [AWS dokumen Docs-Install ALAMPServer - AL2](https://console.aws.amazon.com/systems-manager/automation/execute/AWSDocs-InstallALAMPServer-AL2) Automation.

**Topics**
+ [Langkah 1: Menyiapkan server LAMP](#prepare-lamp-server)
+ [Langkah 2: Menguji server LAMP Anda](#test-lamp-server)
+ [Langkah 3: Amankan server basis data](#secure-mariadb-lamp-server)
+ [Langkah 4: (Opsional) Instal phpMyAdmin](#install-phpmyadmin-lamp-server)
+ [Pemecahan Masalah](#lamp-troubleshooting)
+ [Topik terkait](#lamp-more-info)

## Langkah 1: Menyiapkan server LAMP
<a name="prepare-lamp-server"></a>

**Prasyarat**
+ Tutorial ini mengasumsikan bahwa Anda telah meluncurkan instance baru menggunakan AL2, dengan nama DNS publik yang dapat dijangkau dari internet. Untuk informasi selengkapnya, lihat [Meluncurkan instance](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-launch-instance-wizard.html) di *Panduan Pengguna Amazon EC2*. Anda juga harus mengonfigurasi grup keamanan Anda untuk mengizinkan koneksi SSH (port 22), HTTP (port 80), dan HTTPS (port 443). *Untuk informasi selengkapnya tentang prasyarat ini, lihat [Aturan grup keamanan di Panduan Pengguna](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/security-group-rules.html) Amazon EC2.*
+ Prosedur berikut menginstal versi PHP terbaru yang tersedia AL2, saat ini`php8.2`. Jika Anda berencana menggunakan aplikasi PHP selain yang dijelaskan dalam tutorial ini, Anda harus memeriksa kompatibilitasnya dengan versi `php8.2`.<a name="install_apache-2"></a>

**Untuk menyiapkan server LAMP**

1. [Terhubung ke instans Anda](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/connect-to-linux-instance.html).

1. Untuk memastikan bahwa semua paket perangkat lunak Anda telah diperbarui, lakukan pembaruan perangkat lunak cepat di instans Anda. Proses ini mungkin memerlukan waktu beberapa menit, tetapi penting untuk memastikan bahwa Anda memiliki pembaruan keamanan dan perbaikan bug terbaru.

   Opsi `-y` akan menginstal pembaruan tanpa meminta konfirmasi. Jika Anda ingin memeriksa pembaruan sebelum menginstal, Anda dapat menghapus opsi ini.

   ```
   [ec2-user ~]$ sudo yum update -y
   ```

1. Instal repositori Amazon Linux Extras `mariadb10.5` untuk mendapatkan versi terbaru dari paket MariaDB.

   ```
   [ec2-user ~]$ sudo amazon-linux-extras install mariadb10.5
   ```

   Jika Anda menerima kesalahan yang menyatakan `sudo: amazon-linux-extras: command not found`, instans Anda tidak diluncurkan dengan AMI Amazon Linux 2 (mungkin Anda menggunakan AMI Amazon Linux sebagai gantinya). Anda dapat melihat versi Amazon Linux Anda menggunakan perintah berikut.

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

1. Instal repositori `php8.2` Amazon Linux Extras untuk mendapatkan versi terbaru dari paket tersebut. PHP AL2

   ```
   [ec2-user ~]$ sudo amazon-linux-extras install php8.2
   ```

1. Sekarang, instans Anda sudah diperbarui, Anda dapat menginstal server web Apache, MariaDB, dan paket perangkat lunak PHP. Gunakan perintah yum install untuk menginstal banyak paket perangkat lunak dan semua dependensi yang terkait pada waktu bersamaan

   ```
   [ec2-user ~]$ sudo yum install -y httpd
   ```

   Anda dapat melihat versi paket saat ini menggunakan perintah berikut:

   ```
   yum info package_name
   ```

1. Mulai server web Apache.

   ```
   [ec2-user ~]$ sudo systemctl start httpd
   ```

1.  Gunakan perintah **systemctl** untuk mengonfigurasi server web Apache agar dimulai di setiap boot sistem. 

   ```
   [ec2-user ~]$ sudo systemctl enable httpd
   ```

   Anda dapat memverifikasi apakah **httpd** aktif dengan menjalankan perintah berikut:

   ```
   [ec2-user ~]$ sudo systemctl is-enabled httpd
   ```

1. Tambahkan aturan keamanan untuk mengizinkan koneksi HTTP (port 80) masuk ke instans Anda jika Anda belum melakukannya. Secara default, grup *N* keamanan **launch-wizard** telah disiapkan untuk instans Anda selama inisialisasi. Grup ini berisi satu aturan untuk mengizinkan koneksi SSH. 

   1. Buka konsol Amazon EC2 di. [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)

   1. Pilih **Instans** dan pilih instans Anda.

   1. Pada tab **Keamanan**, lihat aturan masuk. Anda akan melihat aturan berikut ini:

      ```
      Port range   Protocol     Source
      22           tcp          0.0.0.0/0
      ```
**Awas**  
Menggunakan `0.0.0.0/0` memungkinkan semua IPv4 alamat untuk mengakses instans Anda menggunakan SSH. Hal ini dapat diterima untuk waktu yang singkat di lingkungan pengujian, tetapi tidak aman untuk lingkungan produksi. Dalam produksi, Anda dapat mengotorisasi alamat IP tertentu saja atau rentang alamat untuk mengakses instans Anda.

   1. Pilih tautan untuk grup keamanan. Menggunakan prosedur dalam [Menambahkan aturan ke grup keamanan](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/working-with-security-groups.html#adding-security-group-rule), tambahkan aturan keamanan masuk baru dengan nilai berikut:
      + **Jenis**: HTTP
      + **Protokol**: TCP
      + **Rentang Port**: 80
      + **Sumber**: Kustom

1. Uji server web Anda. Pada peramban web, ketikkan alamat DNS publik (atau alamat IP publik) instans Anda. Jika tidak ada konten di `/var/www/html`, Anda akan melihat halaman tes Apache. Anda dapat memperoleh DNS publik untuk instans Anda menggunakan konsol Amazon EC2 (centang kolom **DNS Publik**; jika kolom ini disembunyikan, pilih **Tampilkan/Sembunyikan Kolom** (ikon berbentuk gerigi) dan pilih **DNS Publik**).

   Verifikasi bahwa grup keamanan untuk instans berisi aturan untuk mengizinkan lalu lintas HTTP pada port 80. Untuk informasi selengkapnya, lihat [Menambahkan aturan ke grup keamanan](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/working-with-security-groups.html#adding-security-group-rule).
**penting**  
Jika Anda tidak menggunakan Amazon Linux, Anda mungkin juga perlu mengonfigurasi firewall pada instans untuk mengizinkan koneksi ini. Untuk informasi selengkapnya tentang cara mengonfigurasi firewall, lihat dokumentasi untuk distribusi tertentu Anda.  
![\[Tes server menunjukkan halaman uji Apache.\]](http://docs.aws.amazon.com/id_id/linux/al2/ug/images/apache_test_page_al2_2.4.png)

**httpd** Apache menyajikan file yang disimpan dalam direktori yang disebut root dokumen Apache. Root dokumen Amazon Linux Apache adalah `/var/www/html`, yang secara default dimiliki oleh root.

Untuk mengizinkan akun `ec2-user` untuk memanipulasi file dalam direktori ini, Anda harus memodifikasi kepemilikan dan izin direktori. 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.<a name="setting-file-permissions-2"></a>

**Untuk mengatur izin file**

1. Tambahkan pengguna Anda (dalam hal ini, `ec2-user`) ke grup `apache`.

   ```
   [ec2-user ~]$ sudo usermod -a -G apache ec2-user
   ```

1. Keluar dan masuk kembali untuk mengambil grup baru, lalu verifikasi keanggotaan Anda.

   1. Keluar (gunakan perintah **exit** atau tutup jendela terminal):

      ```
      [ec2-user ~]$ exit
      ```

   1. Untuk memverifikasi keanggotaan Anda di grup `apache`, hubungkan kembali ke instans Anda, lalu jalankan perintah berikut:

      ```
      [ec2-user ~]$ groups
      ec2-user adm wheel apache systemd-journal
      ```

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

   ```
   [ec2-user ~]$ sudo chown -R ec2-user:apache /var/www
   ```

1. Untuk menambahkan izin tulis grup dan untuk mengatur ID grup pada subdirektori mendatang, ubah izin direktori `/var/www` dan subdirektorinya.

   ```
   [ec2-user ~]$ sudo chmod 2775 /var/www && find /var/www -type d -exec sudo chmod 2775 {} \;
   ```

1. Untuk menambahkan izin tulis grup, ubah izin file `/var/www` secara berulang dan subdirektorinya:

   ```
   [ec2-user ~]$ find /var/www -type f -exec sudo chmod 0664 {} \;
   ```

Sekarang, `ec2-user` (dan setiap anggota yang akan datang dari grup `apache`) dapat menambahkan, menghapus, dan mengedit file pada root dokumen Apache, sehingga Anda dapat menambahkan konten, seperti situs web statis atau aplikasi PHP.

**Untuk mengamankan server web Anda (Opsional)**  
Server web yang menjalankan protokol HTTP tidak memberikan keamanan transportasi untuk data yang dikirim atau diterimanya. Saat Anda terhubung ke server HTTP menggunakan browser web, URLs yang Anda kunjungi, konten halaman web yang Anda terima, dan konten (termasuk kata sandi) dari setiap formulir HTML yang Anda kirim semuanya akan terlihat oleh penyadap di mana saja di sepanjang jalur jaringan. Praktik terbaik untuk mengamankan server web Anda adalah dengan menginstal dukungan untuk HTTPS (HTTP Secure), yang melindungi data Anda dengan enkripsi SSL/TLS.

Untuk informasi tentang cara mengaktifkan HTTPS di server Anda, lihat [Tutorial: SSL/TLS Konfigurasikan AL2](SSL-on-amazon-linux-2.md).

## Langkah 2: Menguji server LAMP Anda
<a name="test-lamp-server"></a>

Jika server Anda diinstal dan dijalankan, dan izin file Anda diatur dengan benar, akun `ec2-user` seharusnya dapat membuat file PHP dalam direktori `/var/www/html` yang tersedia dari internet.

**Untuk menguji server LAMP Anda**

1. Buat file PHP pada root dokumen Apache.

   ```
   [ec2-user ~]$ echo "<?php phpinfo(); ?>" > /var/www/html/phpinfo.php
   ```

   Jika Anda mendapatkan pesan kesalahan “Izin ditolak” saat mencoba menjalankan perintah ini, cobalah keluar dan masuk kembali untuk mengambil izin grup yang sesuai yang Anda konfigurasikan di [Untuk mengatur izin file](#setting-file-permissions-2).

1. Pada peramban web, ketik URL file yang baru saja Anda buat. URL ini adalah alamat DNS publik dari instans Anda diikuti dengan garis miring ke depan dan nama file. Sebagai contoh:

   ```
   http://my.public.dns.amazonaws.com/phpinfo.php
   ```

   Anda akan melihat halaman informasi PHP:  
![\[Tes server LAMP menunjukkan halaman informasi PHP.\]](http://docs.aws.amazon.com/id_id/linux/al2/ug/images/phpinfo7.2.10.png)

   Jika Anda tidak melihat halaman ini, periksa apakah file `/var/www/html/phpinfo.php` dibuat dengan benar pada langkah sebelumnya. Anda juga dapat memverifikasi apakah semua paket yang diperlukan diinstal dengan perintah berikut.

   ```
   [ec2-user ~]$ sudo yum list installed httpd mariadb-server php-mysqlnd
   ```

   Jika salah satu paket yang diperlukan tidak tercantum di output Anda, instal dengan perintah **sudo yum install *package***. Verifikasi juga bahwa ekstra `php7.2` dan `lamp-mariadb10.2-php7.2` diaktifkan di output perintah **amazon-linux-extras**.

1. Hapus file `phpinfo.php`. Meskipun ini dapat menjadi informasi yang berguna, sebaiknya tidak disiarkan ke internet untuk alasan keamanan.

   ```
   [ec2-user ~]$ rm /var/www/html/phpinfo.php
   ```

Sekarang, seharusnya Anda telah memiliki server web LAMP yang berfungsi sepenuhnya. Jika Anda menambahkan konten ke akar dokumen Apache di `/var/www/html`, Anda harus dapat melihat konten tersebut di alamat DNS publik untuk instans Anda. 

## Langkah 3: Amankan server basis data
<a name="secure-mariadb-lamp-server"></a>

Instalasi default dari server MariaDB memiliki beberapa fitur yang bagus untuk pengujian dan pengembangan, tetapi harus dinonaktifkan atau dihapus untuk server produksi. Perintah **mysql\$1secure\$1installation** memandu Anda melalui proses pengaturan kata sandi root dan menghapus fitur yang tidak aman dari instalasi Anda. Meskipun Anda tidak berencana menggunakan server MariaDB, kami sarankan untuk melakukan prosedur ini.<a name="securing-maria-db"></a>

**Untuk mengamankan server MariaDB**

1. Mulai server MariaDB.

   ```
   [ec2-user ~]$ sudo systemctl start mariadb
   ```

1. Jalankan **mysql\$1secure\$1installation**.

   ```
   [ec2-user ~]$ sudo mysql_secure_installation
   ```

   1. Saat diminta, ketikkan kata sandi untuk akun root.

      1. Ketikkan kata sandi root saat ini. Secara default, akun root tidak memiliki pengaturan kata sandi. Tekan Enter.

      1. Ketik **Y** untuk mengatur kata sandi, dan ketik kata sandi yang aman sebanyak dua kali. Untuk informasi selengkapnya tentang membuat kata sandi aman, lihat [https://identitysafe.norton.com/password-generator/](https://identitysafe.norton.com/password-generator/). Pastikan untuk menyimpan kata sandi ini di tempat yang aman.

         Mengatur kata sandi root untuk MariaDB hanyalah langkah paling dasar untuk mengamankan basis data Anda. Saat Anda membangun atau menginstal aplikasi yang didorong basis data, Anda biasanya membuat pengguna layanan basis data untuk aplikasi tersebut dan menghindari penggunaan akun root untuk apa pun selain administrasi basis data. 

   1. Ketik **Y** untuk menghapus akun pengguna anonim.

   1. Ketik **Y** untuk menonaktifkan login root jarak jauh.

   1. Ketik **Y** untuk menghapus basis data pengujian.

   1. Ketik **Y** untuk memuat ulang tabel istimewa dan menyimpan perubahan Anda.

1. (Opsional) Jika Anda tidak berencana untuk langsung menggunakan server MariaDB, segera hentikan. Anda dapat memulainya ulang saat membutuhkannya lagi.

   ```
   [ec2-user ~]$ sudo systemctl stop mariadb
   ```

1. (Opsional) Jika Anda ingin server MariaDB untuk dimulai di setiap boot, ketik perintah berikut.

   ```
   [ec2-user ~]$ sudo systemctl enable mariadb
   ```

## Langkah 4: (Opsional) Instal phpMyAdmin
<a name="install-phpmyadmin-lamp-server"></a>

[phpMyAdmin](https://www.phpmyadmin.net/)adalah alat manajemen basis data berbasis web yang dapat Anda gunakan untuk melihat dan mengedit database MySQL pada instans EC2 Anda. Ikuti langkah-langkah di bawah ini untuk menginstal dan mengonfigurasi `phpMyAdmin` di instans Amazon Linux Anda.

**penting**  
Kami tidak menyarankan penggunaan `phpMyAdmin` untuk mengakses server LAMP kecuali Anda telah mengaktifkan SSL/TLS di Apache; jika tidak, kata sandi administrator database Anda dan data lainnya ditransmisikan secara tidak aman di internet. Untuk rekomendasi keamanan dari pengembang, lihat [Mengamankan phpMyAdmin instalasi Anda](https://docs.phpmyadmin.net/en/latest/setup.html#securing-your-phpmyadmin-installation). Untuk informasi umum tentang cara mengamankan server web di instans EC2, lihat [Tutorial: SSL/TLS Konfigurasikan AL2](SSL-on-amazon-linux-2.md).

**Untuk menginstal phpMyAdmin**

1. Pasang dependensi yang diperlukan.

   ```
   [ec2-user ~]$ sudo yum install php-mbstring php-xml -y
   ```

1. Mulai Ulang Apache.

   ```
   [ec2-user ~]$ sudo systemctl restart httpd
   ```

1. Mulai ulang `php-fpm`.

   ```
   [ec2-user ~]$ sudo systemctl restart php-fpm
   ```

1. Navigasi ke akar dokumen Apache di `/var/www/html`.

   ```
   [ec2-user ~]$ cd /var/www/html
   ```

1. Pilih paket sumber untuk phpMyAdmin rilis terbaru dari [https://www.phpmyadmin.net/downloads](https://www.phpmyadmin.net/downloads). Untuk mengunduh file secara langsung ke instans Anda, salin tautan dan tempel ke perintah **wget**, seperti dalam contoh ini:

   ```
   [ec2-user html]$ wget https://www.phpmyadmin.net/downloads/phpMyAdmin-latest-all-languages.tar.gz
   ```

1. Buat folder `phpMyAdmin` dan ekstrak paket ke folder tersebut dengan perintah berikut.

   ```
   [ec2-user html]$ mkdir phpMyAdmin && tar -xvzf phpMyAdmin-latest-all-languages.tar.gz -C phpMyAdmin --strip-components 1
   ```

1. Hapus *phpMyAdmin-latest-all-languages.tar.gz* tarball.

   ```
   [ec2-user html]$ rm phpMyAdmin-latest-all-languages.tar.gz
   ```

1.  (Opsional) Jika server MySQL tidak dijalankan, mulailah.

   ```
   [ec2-user ~]$ sudo systemctl start mariadb
   ```

1. Di browser web, ketik URL phpMyAdmin instalasi Anda. URL ini adalah alamat DNS publik (atau alamat IP publik) dari instans Anda diikuti dengan garis miring ke depan dan nama direktori instalasi Anda. Contoh:

   ```
   http://my.public.dns.amazonaws.com/phpMyAdmin
   ```

   Anda akan melihat halaman phpMyAdmin login:  
![\[Hasil mengetik URL phpMyAdmin instalasi Anda adalah layar phpMyAdmin login.\]](http://docs.aws.amazon.com/id_id/linux/al2/ug/images/phpmyadmin_login.png)

1. Masuk ke phpMyAdmin instalasi Anda dengan nama `root` pengguna dan kata sandi root MySQL yang Anda buat sebelumnya.

   Instalasi Anda harus tetap dikonfigurasi sebelum Anda menggunakannya. Sebaiknya Anda memulai dengan membuat file konfigurasi secara manual, sebagai berikut:

   1. Untuk memulai dengan file konfigurasi minimal, gunakan editor teks favorit Anda untuk membuat file baru, lalu salin isi `config.sample.inc.php` ke dalamnya.

   1. Simpan file seperti `config.inc.php` pada phpMyAdmin direktori yang berisi`index.php`.

   1. Lihat instruksi pembuatan pasca-file di bagian [Menggunakan skrip Pengaturan](https://docs.phpmyadmin.net/en/latest/setup.html#using-the-setup-script) dari instruksi phpMyAdmin penginstalan untuk pengaturan tambahan apa pun.

    Untuk informasi tentang penggunaan phpMyAdmin, lihat [Panduan phpMyAdmin Pengguna](http://docs.phpmyadmin.net/en/latest/user.html).

## Pemecahan Masalah
<a name="lamp-troubleshooting"></a>

Bagian ini memberikan saran untuk menyelesaikan masalah umum yang mungkin Anda hadapi saat menyiapkan server LAMP baru. 

### Saya tidak dapat terhubung ke server menggunakan peramban web
<a name="is_apache_on"></a>

Lakukan pemeriksaan berikut untuk melihat apakah server web Apache Anda berfungsi dan dapat diakses.
+ **Apakah server web berfungsi?**

  Anda dapat memverifikasi apakah **httpd** aktif dengan menjalankan perintah berikut:

  ```
  [ec2-user ~]$ sudo systemctl is-enabled httpd
  ```

  Jika proses **httpd** tidak berjalan, ulangi langkah-langkah yang dijelaskan dalam [Untuk menyiapkan server LAMP](#install_apache-2).
+ **Apakah firewall dikonfigurasi dengan benar?**

  Verifikasi bahwa grup keamanan untuk instans berisi aturan untuk mengizinkan lalu lintas HTTP pada port 80. Untuk informasi selengkapnya, lihat [Menambahkan aturan ke grup keamanan](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/working-with-security-groups.html#adding-security-group-rule).

### Saya tidak dapat terhubung ke server menggunakan HTTPS
<a name="is-https-enabled"></a>

Lakukan pemeriksaan berikut untuk melihat apakah server web Apache Anda dikonfigurasi untuk mendukung HTTPS.
+ **Apakah server web dikonfigurasi dengan benar?**

  Setelah Anda menginstal Apache, server dikonfigurasi untuk lalu lintas HTTP. Untuk mendukung HTTPS, aktifkan TLS pada server dan instal sertifikat SSL. Untuk informasi, lihat [Tutorial: SSL/TLS Konfigurasikan AL2](SSL-on-amazon-linux-2.md).
+ **Apakah firewall dikonfigurasi dengan benar?**

  Verifikasi bahwa grup keamanan untuk instans berisi aturan untuk mengizinkan lalu lintas HTTPS pada port 443. Untuk informasi selengkapnya, lihat [Menambahkan aturan ke grup keamanan](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/working-with-security-groups.html#adding-security-group-rule).

## Topik terkait
<a name="lamp-more-info"></a>

Untuk informasi lebih lanjut tentang cara memindahkan file ke instans Anda atau cara menginstal blog WordPress di server web Anda, lihat dokumentasi berikut:
+ [Transfer file ke instance Linux Anda menggunakan WinSCP](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/putty.html#Transfer_WinSCP).
+ [Transfer file ke instance Linux menggunakan SCP klien](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/connect-linux-inst-ssh.html#linux-file-transfer-scp).
+ [Tutorial: Tuan rumah WordPress blog di AL2](hosting-wordpress.md)

Untuk informasi selengkapnya tentang perintah dan perangkat lunak yang digunakan dalam tutorial ini, lihat halaman web berikut ini:
+ Server web Apache: [http://httpd.apache.org/](http://httpd.apache.org/)
+ Server basis data MariaDB: [https://mariadb.org/](https://mariadb.org/)
+ Bahasa pemrograman PHP: [http://php.net/](http://php.net/)
+ `chmod`Perintah: [https://en.wikipedia. org/wiki/Chmod](https://en.wikipedia.org/wiki/Chmod)
+ `chown`Perintah: [https://en.wikipedia. org/wiki/Chown](https://en.wikipedia.org/wiki/Chown)

Untuk informasi selengkapnya tentang cara mendaftarkan nama domain untuk server web Anda, atau mentransfer nama domain yang ada ke host ini, lihat [Membuat dan Memigrasikan Domain serta Subdomain ke Amazon Route 53](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/creating-migrating.html) dalam *Panduan Developer Amazon Route 53*.

# Tutorial: SSL/TLS Konfigurasikan AL2
<a name="SSL-on-amazon-linux-2"></a>

Secure Sockets Layer/Transport Layer Security (SSL/TLS) creates an encrypted channel between a web server and web client that protects data in transit from being eavesdropped on. This tutorial explains how to add support manually for SSL/TLSpada instans EC2 dengan AL2 dan server web Apache. Tutorial ini mengasumsikan bahwa Anda tidak menggunakan penyeimbang beban. Jika menggunakan Elastic Load Balancing, Anda dapat memilih untuk mengonfigurasi pemindahan SSL pada penyeimbang beban dengan menggunakan sertifikat dari [AWS Certificate Manager](https://aws.amazon.com/certificate-manager/) sebagai gantinya.

Untuk alasan historis, enkripsi web sering disebut hanya sebagai SSL. Sementara browser web masih mendukung SSL, protokol penerusnya TLS kurang rentan terhadap serangan. AL2menonaktifkan dukungan sisi server untuk semua versi SSL secara default. [Badan standar keamanan](https://www.ssl.com/article/deprecating-early-tls/) menganggap TLS 1.0 tidak aman. TLS 1.0 dan TLS 1.1 secara resmi [usang](https://datatracker.ietf.org/doc/rfc8996/) pada Maret 2021. Tutorial ini berisi panduan yang secara eksklusif didasarkan pada pengaktifan TLS 1.2. TLS 1.3 diselesaikan pada tahun 2018 dan tersedia AL2 selama perpustakaan TLS yang mendasarinya (OpenSSL dalam tutorial ini) didukung dan diaktifkan. [Klien harus mendukung TLS 1.2 atau versi yang lebih baru pada 28 Juni 2023](https://aws.amazon.com/blogs/security/tls-1-2-required-for-aws-endpoints/). Untuk informasi selengkapnya tentang standar enkripsi yang diperbarui, lihat [RFC 7568](https://tools.ietf.org/html/rfc7568) dan [RFC 8446](https://tools.ietf.org/html/rfc8446).

Tutorial ini mengacu pada enkripsi web modern hanya sebagai TLS.

**penting**  
Prosedur ini dimaksudkan untuk digunakan dengan AL2. Kami juga berasumsi bahwa Anda memulai dengan instans Amazon EC2 baru. Jika Anda mencoba menyiapkan instans EC2 yang menjalankan distribusi yang berbeda, atau instance yang menjalankan versi lama AL2, beberapa prosedur dalam tutorial ini mungkin tidak berfungsi. Untuk Ubuntu, lihat dokumentasi komunitas berikut ini: [Buka SSL di Ubuntu](https://help.ubuntu.com/community/OpenSSL). Untuk Red Hat Enterprise Linux, lihat yang berikut ini: [Menyiapkan Server Web Apache HTTP](https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/deploying_different_types_of_servers/setting-apache-http-server_deploying-different-types-of-servers). Untuk distribusi lain, lihat dokumentasi spesifik mereka.

**catatan**  
Atau, Anda dapat menggunakan AWS Certificate Manager (ACM) untuk kantong AWS Nitro, yang merupakan aplikasi enclave yang memungkinkan Anda menggunakan SSL/TLS sertifikat publik dan pribadi dengan aplikasi web dan server Anda yang berjalan di instans Amazon EC2 dengan Nitro Enclave. AWS Nitro Enclave adalah kemampuan Amazon EC2 yang memungkinkan pembuatan lingkungan komputasi terisolasi untuk melindungi dan memproses data yang sangat sensitif dengan aman, seperti sertifikat dan kunci pribadi. SSL/TLS   
ACM for Nitro Enclave bekerja dengan **nginx** yang berjalan di instans Amazon EC2 Linux Anda untuk membuat kunci privat, mendistribusikan sertifikat dan kunci privat, dan mengelola perpanjangan sertifikat.  
Untuk menggunakan ACM for Nitro Enclave, Anda harus menggunakan instans Linux mendukung enclave.  
Untuk informasi lebih lanjut, lihat [Apa itu Enklaf AWS Nitro?](https://docs.aws.amazon.com/enclaves/latest/user/nitro-enclave.html) dan [AWS Certificate Manager untuk Enklaf Nitro di Panduan Pengguna *AWS Nitro* Enclave](https://docs.aws.amazon.com/enclaves/latest/user/nitro-enclave-refapp.html).

**Topics**
+ [Prasyarat](#ssl_prereq)
+ [Langkah 1: Aktifkan TLS di server](#ssl_enable)
+ [Langkah 2: Mendapatkan sertifikat yang ditandatangani CA](#ssl_certificate)
+ [Langkah 3: Menguji dan memperkuat konfigurasi keamanan](#ssl_test)
+ [Pemecahan Masalah](#troubleshooting)

## Prasyarat
<a name="ssl_prereq"></a>

Sebelum memulai tutorial ini, selesaikan langkah-langkah berikut:
+ Luncurkan AL2 instans yang didukung Amazon EBS. Untuk informasi selengkapnya, lihat [Meluncurkan instance](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-launch-instance-wizard.html) di *Panduan Pengguna Amazon EC2*.
+ Konfigurasikan grup keamanan Anda agar instans Anda dapat menerima koneksi di port TCP berikut: 
  + SSH (port 22)
  + HTTP (port 80)
  + HTTPS (port 443)

  Untuk informasi selengkapnya, lihat [Aturan grup keamanan](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/security-group-rules.html) di *Panduan Pengguna Amazon EC2*.
+ Instal server web Apache. Untuk step-by-step petunjuk, lihat [Tutorial: Menginstal Server Web LAMP pada AL2](ec2-lamp-amazon-linux-2.md). Hanya paket httpd dan dependensinya yang diperlukan, jadi Anda dapat mengabaikan instruksi yang melibatkan PHP dan MariaDB.
+ Untuk mengidentifikasi dan mengautentikasi situs web, infrastruktur kunci publik (PKI) TLS mengandalkan Sistem Nama Domain (DNS). Untuk menggunakan instans EC2 guna meng-host situs web publik, Anda perlu mendaftarkan nama domain untuk server web atau mentransfer nama domain yang ada ke host Amazon EC2 Anda. Berbagai pendaftaran domain pihak ketiga dan layanan hosting DNS tersedia untuk ini, atau Anda dapat menggunakan [Amazon Route 53](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/Welcome.html). 

## Langkah 1: Aktifkan TLS di server
<a name="ssl_enable"></a>

**Opsi: Selesaikan tutorial ini menggunakan otomatisasi**  
Untuk menyelesaikan tutorial ini menggunakan AWS Systems Manager Otomasi alih-alih tugas-tugas berikut, jalankan [dokumen otomatisasi](https://console.aws.amazon.com/systems-manager/documents/AWSDocs-Configure-SSL-TLS-AL2/).

Prosedur ini membawa Anda melalui proses pengaturan TLS AL2 dengan sertifikat digital yang ditandatangani sendiri. 

**catatan**  
Sertifikat yang ditandatangani sendiri dapat diterima untuk pengujian, tetapi bukan produksi. Jika Anda menampilkan sertifikat yang ditandatangani sendiri ke internet, pengunjung ke situs Anda disambut oleh peringatan keamanan. 

**Untuk mengaktifkan TLS di server**

1. [Sambungkan ke instans Anda](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/connect-to-linux-instance.html) dan konfirmasi bahwa Apache sedang berjalan.

   ```
   [ec2-user ~]$ sudo systemctl is-enabled httpd
   ```

   Jika nilai yang dikembalikan bukan "diaktifkan", mulai Apache dan atur Apache untuk memulai setiap kali sistem booting.

   ```
   [ec2-user ~]$ sudo systemctl start httpd && sudo systemctl enable httpd
   ```

1. Untuk memastikan bahwa semua paket perangkat lunak Anda telah diperbarui, lakukan pembaruan perangkat lunak cepat di instans Anda. Proses ini mungkin memerlukan waktu beberapa menit, tetapi penting untuk memastikan bahwa Anda memiliki pembaruan keamanan dan perbaikan bug terbaru.
**catatan**  
Opsi `-y` akan menginstal pembaruan tanpa meminta konfirmasi. Jika Anda ingin memeriksa pembaruan sebelum menginstal, Anda dapat menghapus opsi ini.

   ```
   [ec2-user ~]$ sudo yum update -y
   ```

1. Setelah instans Anda diperbarui, tambahkan dukungan TLS dengan menginstal modul Apache `mod_ssl`.

   ```
   [ec2-user ~]$ sudo yum install -y mod_ssl
   ```

   Instans Anda sekarang memiliki file berikut yang Anda gunakan untuk mengonfigurasi server aman dan membuat sertifikat untuk pengujian:
   +  `/etc/httpd/conf.d/ssl.conf` 

     File konfigurasi untuk mod\$1ssl. File tersebut berisi *arahan* yang memberi tahu Apache tempat untuk menemukan kunci dan sertifikat enkripsi, versi protokol TLS yang akan dimungkinkan, dan cipher enkripsi yang akan diterima. 
   + `/etc/pki/tls/certs/make-dummy-cert`

     Skrip untuk membuat sertifikat X.509 yang ditandatangani sendiri dan kunci privat untuk host server Anda. Sertifikat ini berguna untuk menguji apakah Apache telah diatur dengan benar untuk menggunakan TLS. Karena tidak menawarkan bukti identitas, sertifikat ini tidak boleh digunakan dalam produksi. Jika digunakan dalam produksi, sertifikat ini memicu peringatan di peramban Web.

1. Jalankan skrip untuk membuat sertifikat tiruan yang ditandatangani sendiri dan kunci untuk pengujian.

   ```
   [ec2-user ~]$ cd /etc/pki/tls/certs
   sudo ./make-dummy-cert localhost.crt
   ```

   Ini menghasilkan file baru `localhost.crt` dalam direktori `/etc/pki/tls/certs/`. Nama file yang ditentukan cocok dengan default yang ditetapkan dalam arahan **SSLCertificateFile** di `/etc/httpd/conf.d/ssl.conf`. 

   File ini berisi sertifikat yang ditandatangani sendiri dan kunci privat sertifikat. Apache memerlukan sertifikat dan kunci dalam format PEM, yang terdiri dari karakter ASCII berenkode Base64 yang dibingkai dengan baris “BEGIN” dan “END” seperti dalam contoh singkat berikut.

   ```
   -----BEGIN PRIVATE KEY-----
   MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQD2KKx/8Zk94m1q
   3gQMZF9ZN66Ls19+3tHAgQ5Fpo9KJDhzLjOOCI8u1PTcGmAah5kEitCEc0wzmNeo
   BCl0wYR6G0rGaKtK9Dn7CuIjvubtUysVyQoMVPQ97ldeakHWeRMiEJFXg6kZZ0vr
   GvwnKoMh3DlK44D9dX7IDua2PlYx5+eroA+1Lqf32ZSaAO0bBIMIYTHigwbHMZoT
   ...
   56tE7THvH7vOEf4/iUOsIrEzaMaJ0mqkmY1A70qQGQKBgBF3H1qNRNHuyMcPODFs
   27hDzPDinrquSEvoZIggkDMlh2irTiipJ/GhkvTpoQlv0fK/VXw8vSgeaBuhwJvS
   LXU9HvYq0U6O4FgD3nAyB9hI0BE13r1HjUvbjT7moH+RhnNz6eqqdscCS09VtRAo
   4QQvAqOa8UheYeoXLdWcHaLP
   -----END PRIVATE KEY-----                    
   
   -----BEGIN CERTIFICATE-----
   MIIEazCCA1OgAwIBAgICWxQwDQYJKoZIhvcNAQELBQAwgbExCzAJBgNVBAYTAi0t
   MRIwEAYDVQQIDAlTb21lU3RhdGUxETAPBgNVBAcMCFNvbWVDaXR5MRkwFwYDVQQK
   DBBTb21lT3JnYW5pemF0aW9uMR8wHQYDVQQLDBZTb21lT3JnYW5pemF0aW9uYWxV
   bml0MRkwFwYDVQQDDBBpcC0xNzItMzEtMjAtMjM2MSQwIgYJKoZIhvcNAQkBFhVy
   ...
   z5rRUE/XzxRLBZOoWZpNWTXJkQ3uFYH6s/sBwtHpKKZMzOvDedREjNKAvk4ws6F0
   CuIjvubtUysVyQoMVPQ97ldeakHWeRMiEJFXg6kZZ0vrGvwnKoMh3DlK44D9dlU3
   WanXWehT6FiSZvB4sTEXXJN2jdw8g+sHGnZ8zCOsclknYhHrCVD2vnBlZJKSZvak
   3ZazhBxtQSukFMOnWPP2a0DMMFGYUHOd0BQE8sBJxg==
   -----END CERTIFICATE-----
   ```

   Nama dan ekstensi file mudah dan tidak memengaruhi fungsi. Misalnya, Anda dapat meminta sertifikat `cert.crt`, `cert.pem`, atau nama file lainnya, selama arahan terkait dalam file `ssl.conf` menggunakan nama yang sama.
**catatan**  
Ketika Anda mengganti file TLS default dengan file kustom milik Anda sendiri, pastikan file tersebut dalam format PEM. 

1. Buka file `/etc/httpd/conf.d/ssl.conf` menggunakan editor teks favorit Anda (seperti **vim** atau **nano**) sebagai pengguna root dan komentari baris berikut, karena sertifikat tiruan yang ditandatangani sendiri juga berisi kunci. Jika Anda tidak memberikan komentar pada baris ini sebelum menyelesaikan langkah berikutnya, layanan Apache gagal dimulai.

   ```
   SSLCertificateKeyFile /etc/pki/tls/private/localhost.key
   ```

1. Mulai Ulang Apache.

   ```
   [ec2-user ~]$ sudo systemctl restart httpd
   ```
**catatan**  
Pastikan bahwa TCP port 443 dapat diakses di instans EC2 Anda, seperti yang dijelaskan sebelumnya.

1. Server web Apache Anda sekarang dapat mendukung HTTPS (HTTP aman) melalui port 443. Uji web tersebut dengan memasukkan alamat IP atau nama domain instans EC2 Anda yang sepenuhnya memenuhi syarat ke dalam bilah URL peramban dengan prefiks **https://**.

   Karena Anda terhubung ke situs dengan sertifikat host yang ditandatangani sendiri dan tidak tepercaya, peramban Anda dapat menampilkan serangkaian peringatan keamanan. Abaikan peringatan tersebut dan lanjutkan ke situs. 

   Jika halaman uji Apache default terbuka, berarti Anda telah berhasil mengonfigurasi TLS di server Anda. Semua data yang masuk antara peramban dan server sekarang terenkripsi.
**catatan**  
Untuk mencegah pengunjung situs menghadapi layar peringatan, Anda harus mendapatkan sertifikat tepercaya yang ditandatangani CA yang tidak hanya mengenkripsi, tetapi juga mengautentikasi Anda sebagai pemilik situs. 

## Langkah 2: Mendapatkan sertifikat yang ditandatangani CA
<a name="ssl_certificate"></a>

Anda dapat menggunakan proses berikut untuk mendapatkan sertifikat yang ditandatangani CA:
+ Membuat permintaan penandatanganan sertifikat (CSR) dari kunci privat
+ Kirim CSR ke otoritas sertifikasi (CA)
+ Dapatkan sertifikat host yang ditandatangani
+ Konfigurasikan Apache untuk menggunakan sertifikat

Sertifikat host TLS X.509 yang ditandatangani sendiri bersifat identik secara kriptologi dengan sertifikat yang ditandatangani CA. Perbedaannya bersifat sosial, bukan matematika. CA menjanjikan, setidaknya, untuk memvalidasi kepemilikan domain sebelum menerbitkan sertifikat kepada pemohon. Setiap browser web berisi daftar yang CAs dipercaya oleh vendor browser untuk melakukan hal ini. Sertifikat X.509 utamanya terdiri dari kunci publik yang sesuai dengan kunci server privat Anda, dan tanda tangan oleh CA yang terhubung secara kriptografi dengan kunci publik. Ketika browser terhubung ke server web melalui HTTPS, server menyajikan sertifikat untuk browser untuk memeriksa daftar tepercaya CAs. Jika penandatangan ada di daftar, atau dapat diakses melalui *rantai kepercayaan* yang terdiri dari penanda tangan tepercaya lainnya, peramban menegosiasikan saluran data terenkripsi cepat dengan server dan memuat halaman. 

Sertifikat umumnya memerlukan biaya karena tenaga kerja yang terlibat dalam memvalidasi permintaan tersebut, jadi tidak masalah untuk mempertimbangkan berbagai kemungkinan. Beberapa CAs menawarkan sertifikat tingkat dasar secara gratis. Yang paling menonjol dari ini CAs adalah proyek [Let's Encrypt](https://letsencrypt.org/), yang juga mendukung otomatisasi proses pembuatan dan pembaruan sertifikat. Untuk informasi selengkapnya tentang penggunaan sertifikat Let's Encrypt, lihat [Mendapatkan Certbot](https://eff-certbot.readthedocs.io/en/stable/install.html).

Jika Anda berencana untuk menawarkan layanan kelas komersial, [AWS Certificate Manager](https://docs.aws.amazon.com/acm/latest/userguide/acm-overview.html) adalah pilihan yang baik.

Yang mendasari sertifikat host adalah kuncinya. Sejak tahun 2019, [pemerintah](http://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-57pt1r4.pdf) dan kelompok [industri](https://cabforum.org/wp-content/uploads/CA-Browser-Forum-BR-1.6.5.pdf) merekomendasikan penggunaan ukuran kunci minimum (modulus) sebesar 2048 bit untuk kunci RSA yang ditujukan untuk melindungi dokumen, hingga tahun 2030. Ukuran modulus default yang dihasilkan oleh OpenSSL AL2 in adalah 2048 bit, yang cocok untuk digunakan dalam sertifikat yang ditandatangani CA. Dalam prosedur berikut, langkah opsional yang disediakan bagi mereka yang menginginkan kunci yang disesuaikan, misalnya, kunci dengan modulus yang lebih besar atau menggunakan algoritma enkripsi berbeda.

**penting**  
Instruksi untuk memperoleh sertifikat host yang ditandatangani CA ini tidak berfungsi kecuali Anda memiliki domain DNS yang terdaftar dan di-hosting.

**Untuk mendapatkan sertifikat yang ditandatangani CA**

1.  [Connect](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/connect-to-linux-instance.html) ke instans Anda dan navigasikan ke/etc/pki/tls/private/. Ini adalah direktori tempat Anda menyimpan kunci privat server untuk TLS. Jika Anda memilih untuk menggunakan kunci host yang ada untuk membuat CSR, lewati ke Langkah 3.

1. (Opsional) Buat kunci privat baru. Berikut ini adalah beberapa contoh konfigurasi kunci. Setiap kunci yang dihasilkan dapat berfungsi dengan server web Anda, tetapi memiliki tingkat dan tipe keamanan yang berbeda-beda dalam penerapannya.
   + **Contoh 1:** Buat kunci host RSA default. File yang dihasilkan, **custom.key**, adalah kunci privat RSA 2048-bit.

     ```
     [ec2-user ~]$ sudo openssl genrsa -out custom.key
     ```
   + **Contoh 2:** Buat kunci RSA yang lebih kuat dengan modulus yang lebih besar. File yang dihasilkan, **custom.key**, adalah kunci privat RSA 4096-bit.

     ```
     [ec2-user ~]$ sudo openssl genrsa -out custom.key 4096
     ```
   + **Contoh 3:** Buat kunci RSA yang dienkripsi 4096-bit dengan perlindungan kata sandi. File yang dihasilkan, **custom.key**, adalah kunci privat RSA 4096-bit yang dienkripsi dengan cipher AES-128.
**penting**  
Mengenkripsi kunci akan memberikan keamanan yang lebih besar, tetapi karena kunci terenkripsi memerlukan kata sandi, layanan yang bergantung pada kata sandi tersebut tidak dapat dimulai secara otomatis. Setiap kali menggunakan kunci ini, Anda harus memberikan kata sandi (dalam contoh sebelumnya, "abcde12345") melalui koneksi SSH.

     ```
     [ec2-user ~]$ sudo openssl genrsa -aes128 -passout pass:abcde12345 -out custom.key 4096
     ```
   + **Contoh 4:** Buat kunci menggunakan cipher non-RSA. Kriptografi RSA dapat menjadi cukup lambat karena ukuran kunci publiknya, yang didasarkan pada produk dua angka utama yang besar. Namun, kunci untuk TLS yang menggunakan cipher non-RSA masih dapat dibuat. Kunci-kunci berdasarkan matematika kurva eliptik ukurannya lebih kecil dan secara komputasi lebih cepat ketika memberikan tingkat keamanan yang setara.

     ```
     [ec2-user ~]$ sudo openssl ecparam -name prime256v1 -out custom.key -genkey
     ```

     Hasilnya adalah kunci privat kurva eliptik 256-bit menggunakan prime256v1, "kurva yang diberi nama" yang didukung OpenSSL. Kekuatan kriptografinya sedikit lebih besar dari kunci RSA 2048-bit, [menurut NIST](http://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-57pt1r4.pdf).
**catatan**  
Tidak semua CAs memberikan tingkat dukungan yang sama untuk elliptic-curve-based kunci seperti untuk kunci RSA.

   Pastikan bahwa kunci pribadi baru memiliki kepemilikan dan izin yang sangat ketat (owner=root, group=root, hanya untuk pemilik). read/write Perintah akan seperti yang ditunjukkan dalam contoh berikut.

   ```
   [ec2-user ~]$ sudo chown root:root custom.key
   [ec2-user ~]$ sudo chmod 600 custom.key
   [ec2-user ~]$ ls -al custom.key
   ```

   Perintah sebelumnya akan memberikan hasil berikut.

   ```
   -rw------- root root custom.key
   ```

    Setelah membuat dan mengonfigurasikan kunci yang memuaskan, Anda dapat membuat CSR. 

1. Buat CSR dengan menggunakan kunci yang Anda kehendaki. Contoh berikut menggunakan **custom.key**.

   ```
   [ec2-user ~]$ sudo openssl req -new -key custom.key -out csr.pem
   ```

   OpenSSL membuka dialog dan meminta Anda memasukkan informasi yang ditampilkan dalam tabel berikut. Semua kolom kecuali **Nama Umum** adalah opsional untuk sertifikat host dasar yang divalidasi domain.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/linux/al2/ug/SSL-on-amazon-linux-2.html)

   Terakhir, OpenSSL meminta kata sandi tantangan opsional dari Anda. Kata sandi ini hanya berlaku untuk CSR dan transaksi antara Anda dan CA Anda, maka ikutilah rekomendasi CA tentang hal ini dan bidang pilihan lainnya, nama perusahaan opsional. Kata sandi tantangan CSR tidak berpengaruh pada operasi server.

   File yang dihasilkan **csr.pem** berisi kunci publik, tanda tangan digital kunci publik Anda, dan metadata yang Anda masukkan.

1. Kirimkan CSR ke CA. Hal ini biasanya mencakup membuka file CSR Anda dalam sebuah editor teks dan menyalin konten ke dalam bentuk web. Pada saat ini, Anda mungkin diminta untuk memberikan satu atau lebih nama alternatif subjek (SANs) untuk ditempatkan pada sertifikat. Jika **www.example.com** adalah nama umum, **example.com** akan menjadi SAN yang baik, dan sebaliknya. Pengunjung ke situs Anda yang memasukkan nama-nama ini akan melihat koneksi tanpa kesalahan. Jika formulir web CA Anda mengizinkannya, sertakan nama umum dalam daftar SANs. Beberapa CAs memasukkannya secara otomatis.

   Setelah permintaan Anda disetujui, Anda menerima sertifikat host baru yang ditandatangani oleh CA. Anda mungkin juga diminta mengunduh file *sertifikat menengah* yang berisi sertifikat tambahan yang diperlukan untuk melengkapi rantai kepercayaan CA. 
**catatan**  
CA Anda mungkin mengirimi Anda file dalam banyak format yang dimaksudkan untuk berbagai tujuan. Untuk tutorial ini, Anda hanya dapat menggunakan file sertifikat dalam format PEM, yang biasanya (tetapi tidak selalu) ditandai dengan ekstensi file `.pem` atau `.crt`. Jika Anda tidak yakin file mana yang akan digunakan, buka file dengan editor teks dan temukan yang berisi satu atau beberapa blok yang dimulai dengan baris berikut.  

   ```
   - - - - -BEGIN CERTIFICATE - - - - - 
   ```
File juga harus berakhir dengan baris berikut.  

   ```
   - - - -END CERTIFICATE - - - - -
   ```
Anda juga dapat menguji file pada baris perintah seperti yang ditunjukkan pada hal berikut.  

   ```
   [ec2-user certs]$ openssl x509 -in certificate.crt -text
   ```
Pastikan baris ini muncul di file. Jangan gunakan file yang diakhiri dengan `.p7b`, `.p7c`, atau ekstensi file serupa.

1. Letakkan sertifikat baru yang ditandatangani CA dan setiap sertifikat menengah di direktori `/etc/pki/tls/certs`.
**catatan**  
Ada beberapa cara untuk mengunggah sertifikat baru Anda ke instans EC2 Anda, tetapi cara yang paling sederhana dan informatif adalah dengan membuka teks editor (misalnya, vi, nano, atau notepad) di komputer lokal dan instans Anda, lalu menyalin dan menempelkan konten file di antaranya. Anda memerlukan izin [sudo] root ketika melakukan operasi ini pada instans EC2. Dengan cara ini, Anda dapat segera melihat apakah ada masalah perizinan atau jalur. Namun, berhati-hatilah untuk tidak menambahkan baris tambahan saat menyalin konten, atau untuk mengubahnya dengan cara apa pun. 

   Dari dalam `/etc/pki/tls/certs` direktori, periksa apakah pengaturan kepemilikan file, grup, dan izin cocok dengan AL2 default yang sangat ketat (owner=root, group=root, hanya untuk pemilik). read/write Contoh berikut menunjukkan perintah yang dapat digunakan. 

   ```
   [ec2-user certs]$ sudo chown root:root custom.crt
   [ec2-user certs]$ sudo chmod 600 custom.crt
   [ec2-user certs]$ ls -al custom.crt
   ```

   Perintah ini akan memberikan hasil berikut. 

   ```
   -rw------- root root custom.crt
   ```

   Izin untuk file sertifikat menengah tidak terlalu ketat (pemilik=root, grup=root, pemilik dapat menulis, grup dapat membaca, dunia dapat membaca). Contoh berikut menunjukkan perintah yang dapat digunakan. 

   ```
   [ec2-user certs]$ sudo chown root:root intermediate.crt
   [ec2-user certs]$ sudo chmod 644 intermediate.crt
   [ec2-user certs]$ ls -al intermediate.crt
   ```

   Perintah ini akan memberikan hasil berikut.

   ```
   -rw-r--r-- root root intermediate.crt
   ```

1. Tempatkan kunci privat yang Anda gunakan untuk membuat CSR di direktori `/etc/pki/tls/private/`. 
**catatan**  
Ada beberapa cara untuk mengunggah kunci kustom Anda ke instans EC2, tetapi cara yang paling sederhana dan informatif adalah dengan membuka teks editor (misalnya, vi, nano, atau notepad) di komputer lokal dan instans Anda, lalu menyalin dan menempelkan konten file di antaranya. Anda memerlukan izin [sudo] root ketika melakukan operasi ini pada instans EC2. Dengan cara ini, Anda dapat segera melihat apakah ada masalah perizinan atau jalur. Namun, berhati-hatilah untuk tidak menambahkan baris tambahan saat menyalin konten, atau untuk mengubahnya dengan cara apa pun.

   Dari dalam `/etc/pki/tls/private` direktori, gunakan perintah berikut untuk memverifikasi bahwa kepemilikan file, grup, dan pengaturan izin cocok dengan AL2 default yang sangat ketat (owner=root, group=root, hanya untuk pemilik). read/write 

   ```
   [ec2-user private]$ sudo chown root:root custom.key
   [ec2-user private]$ sudo chmod 600 custom.key
   [ec2-user private]$ ls -al custom.key
   ```

   Perintah ini akan memberikan hasil berikut.

   ```
   -rw------- root root custom.key
   ```

1. Edit `/etc/httpd/conf.d/ssl.conf` untuk mencerminkan sertifikat dan file kunci baru Anda.

   1. Berikan jalur dan nama file sertifikat host yang ditandatangani CA dalam arahan `SSLCertificateFile` Apache:

      ```
      SSLCertificateFile /etc/pki/tls/certs/custom.crt
      ```

   1. Jika Anda menerima file sertifikat menengah (`intermediate.crt` dalam contoh ini), berikan jalur dan nama file menggunakan arahan `SSLCACertificateFile`Apache:

      ```
      SSLCACertificateFile /etc/pki/tls/certs/intermediate.crt
      ```
**catatan**  
Beberapa CAs menggabungkan sertifikat host dan sertifikat perantara dalam satu file, membuat `SSLCACertificateFile` arahan tidak diperlukan. Baca petunjuk yang diberikan oleh CA Anda.

   1. Berikan jalur dan nama file kunci privat (`custom.key` dalam contoh ini) dalam arahan `SSLCertificateKeyFile` Apache:

      ```
      SSLCertificateKeyFile /etc/pki/tls/private/custom.key
      ```

1. Simpan `/etc/httpd/conf.d/ssl.conf` dan mulai ulang Apache.

   ```
   [ec2-user ~]$ sudo systemctl restart httpd
   ```

1. Uji server Anda dengan memasukkan nama domain ke dalam bilah URL peramban menggunakan prefiks `https://`. Peramban Anda harus memuat halaman uji melalui HTTPS tanpa menghasilkan kesalahan.

## Langkah 3: Menguji dan memperkuat konfigurasi keamanan
<a name="ssl_test"></a>

Setelah TLS Anda beroperasi dan terbuka ke publik, Anda harus menguji seberapa kuat TLS itu sesungguhnya. Hal ini mudah dilakukan menggunakan layanan daring seperti [Qualys SSL Labs](https://www.ssllabs.com/ssltest/analyze.html), yang melakukan analisis yang bebas dan menyeluruh atas pengaturan keamanan Anda. Berdasarkan hasilnya, Anda dapat memutuskan untuk memperkuat konfigurasi keamanan default dengan mengendalikan protokol mana yang diterima, cipher mana yang lebih disukai, dan hal mana yang tidak Anda sertakan. Untuk informasi selengkapnya, lihat [cara Qualys merumuskan nilainya](https://github.com/ssllabs/research/wiki/SSL-Server-Rating-Guide).

**penting**  
Pengujian di dunia nyata sangat penting untuk keamanan server Anda. Kesalahan konfigurasi kecil dapat menyebabkan pelanggaran keamanan serius dan hilangnya data. Karena praktik keamanan yang direkomendasikan terus berubah sebagai respons terhadap penelitian dan ancaman yang muncul, audit keamanan secara berkala sangat penting untuk administrasi server yang baik. 

Pada situs [Qualys SSL Labs](https://www.ssllabs.com/ssltest/analyze.html), masukkan nama domain server Anda yang sepenuhnya memenuhi syarat, dalam formulir **www.example.com**. Setelah sekitar dua menit, Anda menerima nilai (dari A sampai F) untuk situs Anda dan detail perincian dari temuan. Tabel berikut merangkum laporan untuk domain dengan pengaturan yang identik dengan konfigurasi Apache default AL2, dan dengan sertifikat Certbot default. 


|  |  | 
| --- |--- |
| Penilaian secara keseluruhan | B | 
| Sertifikat | 100% | 
| Dukungan protokol | 95% | 
| Pertukaran kunci | 70% | 
| Kekuatan cipher | 90% | 

Meskipun gambaran umum menunjukkan bahwa konfigurasi sebagian besar baik, laporan terperinci menunjukkan beberapa potensi masalah, yang tercantum dalam urutan keparahan:

✗ ** RC4 Cipher didukung untuk digunakan oleh browser lama tertentu**. Cipher adalah inti matematika dari algoritma enkripsi. RC4[, cipher cepat yang digunakan untuk mengenkripsi aliran data TLS, diketahui memiliki beberapa kelemahan serius.](http://www.imperva.com/docs/hii_attacking_ssl_when_using_rc4.pdf) Kecuali jika Anda memiliki alasan yang sangat bagus untuk mendukung peramban terdahulu, Anda harus menonaktifkan cipher ini.

✗ **Versi TLS lama dapat didukung.** Konfigurasi ini mendukung TLS 1.0 (sudah usang) dan TLS 1.1 (akan usang). Hanya TLS 1.2 yang telah direkomendasikan sejak 2018.

✗ **Forward secrecy tidak sepenuhnya didukung.** [Forward secrecy](https://en.wikipedia.org/wiki/Forward_secrecy) adalah fitur algoritma yang mengenkripsi menggunakan kunci sesi sementara (ephemeral) yang berasal dari kunci privat. Artinya, dalam praktiknya, penyerang tidak dapat mendekripsi data HTTPS bahkan jika mereka memiliki kunci privat jangka panjang server web.

**Untuk mengoreksi dan memperkuat konfigurasi TLS untuk masa mendatang**

1. Buka file konfigurasi `/etc/httpd/conf.d/ssl.conf` dalam editor teks dan berikan komentar pada baris berikut dengan memasukkan “\$1” di awal baris.

   ```
   #SSLProtocol all -SSLv3
   ```

1. Tambahkan arahan berikut:

   ```
   #SSLProtocol all -SSLv3
   SSLProtocol -SSLv2 -SSLv3 -TLSv1 -TLSv1.1 +TLSv1.2
   ```

   Arahan ini secara eksplisit menonaktifkan SSL versi 2 dan 3, serta TLS versi 1.0 dan 1.1. Server sekarang menolak untuk menerima koneksi terenkripsi dengan klien menggunakan apa pun selain TLS 1.2. Kata-kata yang bertele-tele dalam arahan, bagi pembaca manusia, justru mengungkapkan dengan lebih jelas tentang apa yang akan dilakukan server sesuai konfigurasinya.
**catatan**  
Menonaktifkan TLS versi 1.0 dan 1.1 dengan cara ini akan memblokir sebagian kecil peramban web lama dari akses ke situs Anda.

**Untuk mengubah daftar cipher yang diperbolehkan**

1. Di file konfigurasi `/etc/httpd/conf.d/ssl.conf`, temukan bagian dengan arahan **SSLCipherSuite** dan berikan komentar pada baris yang sudah ada dengan memasukkan “\$1” di awal baris.

   ```
   #SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5
   ```

1. Tentukan suite cipher yang eksplisit dan urutan cipher yang memprioritaskan forward secrecy serta menghindari cipher yang tidak aman. Arahan `SSLCipherSuite` yang digunakan di sini didasarkan pada output dari [Mozilla SSL Configuration Generator](https://mozilla.github.io/server-side-tls/ssl-config-generator/), yang menyesuaikan konfigurasi TLS dengan perangkat lunak tertentu yang berjalan di server Anda. Pertama, tentukan Apache Anda dan versi OpenSSL dengan menggunakan output dari perintah berikut.

   ```
   [ec2-user ~]$ yum list installed | grep httpd
   
   [ec2-user ~]$ yum list installed | grep openssl
   ```

   Misalnya, jika informasi yang dikembalikan adalah Apache 2.4.34 dan 1.0.2, kita memasukkannya ke generator. Jika Anda memilih model kompatibilitas "modern", ini menciptakan arahan `SSLCipherSuite` yang secara agresif menegakkan keamanan, tetapi tetap berfungsi di sebagian besar peramban. Jika perangkat lunak Anda tidak mendukung konfigurasi modern, Anda dapat memperbarui perangkat lunak atau memilih konfigurasi "menengah".

   ```
   SSLCipherSuite ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:
   ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:
   ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256
   ```

   Cipher yang dipilih memiliki *ECDHE* dalam nama mereka, singkatan untuk *Elliptic Curve Diffie-Hellman Ephemeral *. Istilah *ephemeral* menunjukkan forward secrecy. Sebagai produk sampingan, cipher ini tidak mendukung. RC4

   Sebaiknya Anda menggunakan daftar cipher secara eksplisit alih-alih mengandalkan arahan yang ringkas atau default yang kontennya tidak dapat dilihat.

   Salin arahan yang dihasilkan ke `/etc/httpd/conf.d/ssl.conf`.
**catatan**  
Meskipun ditampilkan di sini pada beberapa baris untuk keterbacaan, arahan harus pada satu baris saat disalin ke `/etc/httpd/conf.d/ssl.conf`, dengan hanya tanda titik dua (tanpa spasi) di antara nama-nama cipher.

1. Terakhir, batalkan komentar pada baris berikut dengan menghapus “\$1” di awal baris.

   ```
   #SSLHonorCipherOrder on
   ```

   Arahan ini memaksa server untuk lebih memilih cipher berperingkat tinggi, termasuk (dalam hal ini) cipher yang mendukung forward secrecy. Dengan arahan yang diaktifkan ini, server mencoba membangun koneksi aman yang kuat sebelum kembali ke ciphers yang diizinkan dengan keamanan lebih rendah.

Setelah menyelesaikan kedua prosedur ini, simpan perubahan ke `/etc/httpd/conf.d/ssl.conf` dan mulai ulang Apache.

Jika Anda menguji domain lagi di [Qualys SSL Labs](https://www.ssllabs.com/ssltest/analyze.html), Anda akan melihat bahwa RC4 kerentanan dan peringatan lainnya hilang dan ringkasannya terlihat seperti berikut ini.


|  |  | 
| --- |--- |
| Penilaian secara keseluruhan | A | 
| Sertifikat | 100% | 
| Dukungan protokol | 100% | 
| Pertukaran kunci | 90% | 
| Kekuatan cipher | 90% | 

Setiap pembaruan untuk OpenSSL memperkenalkan cipher baru dan menghapus dukungan untuk cipher lama. Simpan AL2 instans EC2 Anda up-to-date, perhatikan pengumuman keamanan dari [OpenSSL](https://www.openssl.org/), dan waspada terhadap laporan eksploitasi keamanan baru di pers teknis.

## Pemecahan Masalah
<a name="troubleshooting"></a>
+ **Server web My Apache tidak memulai kecuali jika saya memasukkan kata sandi**

  Ini adalah perkiraan perilaku jika Anda menginstal kunci server privat yang dienkripsi dan dilindungi dengan kata sandi.

  Anda dapat menghapus persyaratan enkripsi dan kata sandi dari kunci. Dengan asumsi bahwa Anda memiliki kunci RSA terenkripsi privat yang disebut `custom.key` dalam direktori default, dan kata sandi di sana adalah **abcde12345**, jalankan perintah berikut pada instans EC2 Anda untuk membuat versi kunci yang tidak terenkripsi.

  ```
  [ec2-user ~]$ cd /etc/pki/tls/private/
  [ec2-user private]$ sudo cp custom.key custom.key.bak
  [ec2-user private]$ sudo openssl rsa -in custom.key -passin pass:abcde12345 -out custom.key.nocrypt 
  [ec2-user private]$ sudo mv custom.key.nocrypt custom.key
  [ec2-user private]$ sudo chown root:root custom.key
  [ec2-user private]$ sudo chmod 600 custom.key
  [ec2-user private]$ sudo systemctl restart httpd
  ```

  Apache sekarang akan dimulai tanpa meminta kata sandi Anda.
+  **Saya mendapatkan kesalahan saat menjalankan sudo yum install -y mod\$1ssl.**

  Saat menginstal paket yang diperlukan untuk SSL, Anda mungkin melihat kesalahan yang serupa dengan yang berikut.

  ```
  Error: httpd24-tools conflicts with httpd-tools-2.2.34-1.16.amzn1.x86_64
  Error: httpd24 conflicts with httpd-2.2.34-1.16.amzn1.x86_64
  ```

  Ini biasanya berarti bahwa instans EC2 Anda tidak berjalan AL2. Tutorial ini hanya mendukung instance yang baru dibuat dari AL2 AMI resmi.

# Tutorial: Tuan rumah WordPress blog di AL2
<a name="hosting-wordpress"></a>

Prosedur berikut akan membantu Anda menginstal, mengkonfigurasi, dan mengamankan WordPress blog di instans AL2 Anda. Tutorial ini adalah pengantar yang baik untuk menggunakan Amazon EC2 karena Anda memiliki kontrol penuh atas server web yang meng-host WordPress blog Anda, yang tidak khas dengan layanan hosting tradisional.

Anda bertanggung jawab untuk memperbarui paket perangkat lunak dan memelihara patch keamanan untuk server Anda. Untuk WordPress instalasi yang lebih otomatis yang tidak memerlukan interaksi langsung dengan konfigurasi server web, CloudFormation layanan ini menyediakan WordPress template yang juga dapat membantu Anda memulai dengan cepat. Untuk informasi selengkapnya, lihat [Memulai](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/GettingStarted.Walkthrough.html) di *Panduan Pengguna AWS CloudFormation *. *Jika Anda memerlukan solusi ketersediaan tinggi dengan database terpisah, lihat [Menerapkan situs web dengan ketersediaan tinggi WordPress di Panduan Pengembang](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/php-hawordpress-tutorial.html).AWS Elastic Beanstalk *

**penting**  
Prosedur ini dimaksudkan untuk digunakan dengan AL2. Untuk informasi tentang distribusi lain selengkapnya, lihat dokumentasi spesifik tentangnya. Banyak langkah dalam tutorial ini yang tidak berfungsi pada instans Ubuntu. Untuk bantuan menginstal WordPress pada instance Ubuntu, lihat [WordPress](https://help.ubuntu.com/community/WordPress)di dokumentasi Ubuntu. Anda juga dapat menggunakan [CodeDeploy](https://docs.aws.amazon.com/codedeploy/latest/userguide/tutorials-wordpress-launch-instance.html)untuk menyelesaikan tugas ini di Amazon Linux, macOS, atau sistem Unix.

**Topics**
+ [Prasyarat](#hosting-wordpress-prereqs)
+ [Instal WordPress](#install-wordpress)
+ [Langkah selanjutnya](#wordpress-next-steps)
+ [Tolong\$1 Nama DNS publik saya berubah dan sekarang blog saya rusak](#wordpress-troubleshooting)

## Prasyarat
<a name="hosting-wordpress-prereqs"></a>

Tutorial ini mengasumsikan bahwa Anda telah meluncurkan sebuah AL2 instance dengan server web fungsional dengan dukungan PHP dan database (baik MySQL atau MariaDB) dengan mengikuti semua langkah dalam. [Tutorial: Instal server LAMP AL2](ec2-lamp-amazon-linux-2.md) Tutorial ini juga memiliki langkah-langkah untuk mengonfigurasi grup keamanan agar mengizinkan lalu lintas `HTTP` dan `HTTPS`, serta beberapa langkah untuk memastikan bahwa izin file diatur dengan benar untuk server web Anda. Untuk informasi tentang menambahkan aturan ke grup keamanan Anda, lihat [Menambahkan aturan ke grup keamanan](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/working-with-security-groups.html#adding-security-group-rule).

Kami sangat menyarankan Anda mengaitkan alamat IP Elastis (EIP) dengan instans yang Anda gunakan untuk meng-host WordPress blog. Ini mencegah alamat DNS publik untuk instans Anda agar tidak mengubah dan merusak instalasi. Jika Anda memiliki nama domain dan ingin menggunakannya untuk blog, Anda dapat memperbarui catatan DNS untuk nama domain tersebut agar mengarah ke alamat EIP Anda (untuk bantuan tentang hal ini, hubungi registrar domain Anda). Anda dapat memiliki satu alamat EIP yang dikaitkan dengan instans berjalan tanpa biaya. Untuk informasi selengkapnya, lihat [Alamat IP Elastis](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html) di *Panduan Pengguna Amazon EC2*.

Jika Anda belum memiliki nama domain untuk blog Anda, Anda dapat mendaftarkan nama domain dengan Route 53 dan mengaitkan alamat EIP instans dengan nama domain Anda. Untuk informasi selengkapnya, lihat [Mendaftarkan nama domain dengan Amazon Route 53](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/registrar.html) di *Panduan Developer Amazon Route 53*.

## Instal WordPress
<a name="install-wordpress"></a>

**Opsi: Selesaikan tutorial ini menggunakan otomatisasi**  
Untuk menyelesaikan tutorial ini menggunakan AWS Systems Manager Otomasi alih-alih tugas-tugas berikut, jalankan [dokumen otomatisasi](https://console.aws.amazon.com/systems-manager/documents/AWSDocs-HostingAWordPressBlog/).

Connect ke instans Anda, dan unduh paket WordPress instalasi.

**Untuk mengunduh dan membuka zip paket WordPress instalasi**

1. Unduh paket WordPress instalasi terbaru dengan **wget** perintah. Perintah berikut harus selalu mengunduh rilis terbaru.

   ```
   [ec2-user ~]$ wget https://wordpress.org/latest.tar.gz
   ```

1. Ekstrak dan buka arsip paket instalasi. Folder instalasi diekstrak ke folder bernama `wordpress`.

   ```
   [ec2-user ~]$ tar -xzf latest.tar.gz
   ```<a name="create_user_and_database"></a>

**Untuk membuat pengguna database dan database untuk WordPress instalasi Anda**

 WordPress Instalasi Anda perlu menyimpan informasi, seperti posting blog dan komentar pengguna, dalam database. Prosedur ini membantu Anda membuat basis data blog dan pengguna yang berwenang untuk membaca dan menyimpan informasi ke dalamnya. 

1. Mulai server basis data.
   + 

     ```
     [ec2-user ~]$ sudo systemctl start mariadb
     ```

1. Masuk ke server basis data sebagai pengguna `root`. Masukkan kata sandi `root` basis data Anda saat diminta; ini mungkin berbeda dengan kata sandi sistem `root`, atau bahkan mungkin kosong jika Anda belum mengamankan server basis data Anda.

   Jika Anda belum mengamankan server basis data Anda, penting bagi Anda untuk melakukannya. Untuk informasi lebih lanjut, lihat [Untuk mengamankan server MariaDB](ec2-lamp-amazon-linux-2.md#securing-maria-db) (AL2).

   ```
   [ec2-user ~]$ mysql -u root -p
   ```

1. <a name="create_database_user"></a>Buat pengguna dan kata sandi untuk basis data MySQL. WordPressInstalasi Anda menggunakan nilai-nilai ini untuk berkomunikasi dengan database MySQL Anda. 

   Pastikan Anda membuat kata sandi yang kuat untuk pengguna. Jangan menggunakan tanda petik tunggal ( ' ) dalam kata sandi Anda, karena hal ini akan memutus perintah sebelumnya. Jangan menggunakan ulang kata sandi yang sudah ada, dan pastikan untuk menyimpan kata sandi ini di tempat yang aman.

   Masukkan perintah berikut, yang menggantikan nama pengguna dan kata sandi unik.

   ```
   CREATE USER 'wordpress-user'@'localhost' IDENTIFIED BY 'your_strong_password';
   ```

1. <a name="create_database"></a>Buat basis data Anda. Berikan nama yang deskriptif dan bermakna untuk basis data Anda, misalnya `wordpress-db`.
**catatan**  
Tanda baca yang mengelilingi nama basis data pada perintah di bawah ini disebut backtick. Kunci backtick (```) biasanya terletak di atas kunci `Tab` pada keyboard standar. Backtick tidak selalu diperlukan, tetapi memungkinkan Anda untuk menggunakan karakter ilegal, seperti tanda hubung, pada nama basis data.

   ```
   CREATE DATABASE `wordpress-db`;
   ```

1. Berikan hak istimewa penuh untuk database Anda kepada WordPress pengguna yang Anda buat sebelumnya.

   ```
   GRANT ALL PRIVILEGES ON `wordpress-db`.* TO "wordpress-user"@"localhost";
   ```

1. Hapus hak istimewa basis data untuk mengambil semua perubahan Anda.

   ```
   FLUSH PRIVILEGES;
   ```

1. Keluar dari klien `mysql`.

   ```
   exit
   ```

**Untuk membuat dan mengedit file wp-config.php**

Folder WordPress instalasi berisi file konfigurasi sampel yang disebut`wp-config-sample.php`. Dalam prosedur ini, Anda menyalin file ini dan mengeditnya agar sesuai dengan konfigurasi spesifik Anda.

1. Salin file `wp-config-sample.php` ke file yang bernama `wp-config.php`. Tindakan ini membuat file konfigurasi baru dan menyimpan file sampel asli secara utuh sebagai cadangan.

   ```
   [ec2-user ~]$ cp wordpress/wp-config-sample.php wordpress/wp-config.php
   ```

1. Edit file `wp-config.php` dengan editor teks favorit Anda (seperti **nano** atau **vim**) dan masukkan nilai untuk instalasi Anda. Jika Anda tidak memiliki editor teks favorit, `nano` cocok untuk pemula.

   ```
   [ec2-user ~]$ nano wordpress/wp-config.php
   ```

   1. Cari baris yang menentukan `DB_NAME` dan ubah `database_name_here` ke nama basis data yang Anda buat di [Step 4](#create_database) dari [Untuk membuat pengguna database dan database untuk WordPress instalasi Anda](#create_user_and_database).

      ```
      define('DB_NAME', 'wordpress-db');
      ```

   1. Cari baris yang menentukan `DB_USER` dan ubah `username_here` ke pengguna basis data yang Anda buat di [Step 3](#create_database_user) dari [Untuk membuat pengguna database dan database untuk WordPress instalasi Anda](#create_user_and_database).

      ```
      define('DB_USER', 'wordpress-user');
      ```

   1. Cari baris yang menentukan `DB_PASSWORD` dan ubah `password_here` ke kata sandi kuat yang Anda buat di [Step 3](#create_database_user) dari [Untuk membuat pengguna database dan database untuk WordPress instalasi Anda](#create_user_and_database).

      ```
      define('DB_PASSWORD', 'your_strong_password');
      ```

   1. Temukan bagian yang disebut `Authentication Unique Keys and Salts`. Ini `KEY` dan `SALT` nilai-nilai menyediakan lapisan enkripsi ke cookie browser yang disimpan WordPress pengguna di mesin lokal mereka. Pada dasarnya, menambahkan nilai yang panjang dan acak di sini membuat situs Anda lebih aman. Kunjungi [https://api.wordpress. org/secret-key/1.1/salt](https://api.wordpress.org/secret-key/1.1/salt/)/untuk secara acak menghasilkan satu set nilai kunci yang dapat Anda salin dan tempel ke `wp-config.php` file Anda. Untuk menempelkan teks ke terminal PuTTY, letakkan kursor di tempat Anda ingin menempelkan teks dan klik kanan mouse di dalam terminal PuTTY .

      Untuk informasi lebih lanjut tentang kunci keamanan, kunjungi [https://wordpress. org/support/article/editing-wp-config-php/\$1security -keys](https://wordpress.org/support/article/editing-wp-config-php/#security-keys).
**catatan**  
Nilai-nilai di bawah ini hanya sebagai contoh; jangan gunakan nilai ini untuk instalasi Anda.

      ```
      define('AUTH_KEY',         ' #U$$+[RXN8:b^-L 0(WU_+ c+WFkI~c]o]-bHw+)/Aj[wTwSiZ<Qb[mghEXcRh-');
      define('SECURE_AUTH_KEY',  'Zsz._P=l/|y.Lq)XjlkwS1y5NJ76E6EJ.AV0pCKZZB,*~*r ?6OP$eJT@;+(ndLg');
      define('LOGGED_IN_KEY',    'ju}qwre3V*+8f_zOWf?{LlGsQ]Ye@2Jh^,8x>)Y |;(^[Iw]Pi+LG#A4R?7N`YB3');
      define('NONCE_KEY',        'P(g62HeZxEes|LnI^i=H,[XwK9I&[2s|:?0N}VJM%?;v2v]v+;+^9eXUahg@::Cj');
      define('AUTH_SALT',        'C$DpB4Hj[JK:?{ql`sRVa:{:7yShy(9A@5wg+`JJVb1fk%_-Bx*M4(qc[Qg%JT!h');
      define('SECURE_AUTH_SALT', 'd!uRu#}+q#{f$Z?Z9uFPG.${+S{n~1M&%@~gL>U>NV<zpD-@2-Es7Q1O-bp28EKv');
      define('LOGGED_IN_SALT',   ';j{00P*owZf)kVD+FVLn-~ >.|Y%Ug4#I^*LVd9QeZ^&XmK|e(76miC+&W&+^0P/');
      define('NONCE_SALT',       '-97r*V/cgxLmp?Zy4zUU4r99QQ_rGs2LTd%P;|_e1tS)8_B/,.6[=UK<J_y9?JWG');
      ```

   1. Simpan file dan keluar dari editor teks Anda.

**Untuk menginstal WordPress file Anda di bawah root dokumen Apache**
+ Sekarang setelah Anda membuka ritsleting folder instalasi, membuat database dan pengguna MySQL, dan menyesuaikan file WordPress konfigurasi, Anda siap untuk menyalin file instalasi Anda ke root dokumen server web Anda sehingga Anda dapat menjalankan skrip instalasi yang menyelesaikan instalasi Anda. Lokasi file-file ini tergantung pada apakah Anda ingin WordPress blog Anda tersedia di root sebenarnya dari server web Anda (misalnya,`my.public.dns.amazonaws.com`) atau di subdirektori atau folder di bawah root (misalnya,`my.public.dns.amazonaws.com/blog`).
  + Jika Anda WordPress ingin menjalankan root dokumen Anda, salin isi direktori instalasi wordpress (tetapi bukan direktori itu sendiri) sebagai berikut: 

    ```
    [ec2-user ~]$ cp -r wordpress/* /var/www/html/
    ```
  + Jika Anda WordPress ingin menjalankan direktori alternatif di bawah root dokumen, pertama buat direktori itu, lalu salin file ke sana. Dalam contoh ini, WordPress akan berjalan dari direktori `blog`:

    ```
    [ec2-user ~]$ mkdir /var/www/html/blog
    [ec2-user ~]$ cp -r wordpress/* /var/www/html/blog/
    ```

**penting**  
Untuk tujuan keamanan, jika Anda tidak segera beralih ke prosedur berikutnya, hentikan server web Apache (`httpd`) sekarang. Setelah Anda memindahkan instalasi Anda di bawah root dokumen Apache, skrip WordPress instalasi tidak terlindungi dan penyerang bisa mendapatkan akses ke blog Anda jika server web Apache sedang berjalan. Untuk menghentikan server web Apache, masukkan perintah **sudo systemctl stop httpd**. Jika Anda melanjutkan ke prosedur berikutnya, Anda tidak perlu menghentikan server web Apache.

**Untuk memungkinkan WordPress untuk menggunakan permalink**

WordPress permalink perlu menggunakan `.htaccess` file Apache agar berfungsi dengan baik, tetapi ini tidak diaktifkan secara default di Amazon Linux. Gunakan prosedur ini untuk mengizinkan semua penggantian dalam root dokumen Apache.

1. Buka file `httpd.conf` menggunakan editor teks favorit Anda (seperti **nano** atau **vim**). Jika Anda tidak memiliki editor teks favorit, `nano` cocok untuk pemula.

   ```
   [ec2-user ~]$ sudo vim /etc/httpd/conf/httpd.conf
   ```

1. Temukan bagian yang dimulai dengan `<Directory "/var/www/html">`.

   ```
   <Directory "/var/www/html">
       #
       # Possible values for the Options directive are "None", "All",
       # or any combination of:
       #   Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
       #
       # Note that "MultiViews" must be named *explicitly* --- "Options All"
       # doesn't give it to you.
       #
       # The Options directive is both complicated and important.  Please see
       # http://httpd.apache.org/docs/2.4/mod/core.html#options
       # for more information.
       #
       Options Indexes FollowSymLinks
   
       #
       # AllowOverride controls what directives may be placed in .htaccess files.
       # It can be "All", "None", or any combination of the keywords:
       #   Options FileInfo AuthConfig Limit
       #
       AllowOverride None
   
       #
       # Controls who can get stuff from this server.
       #
       Require all granted
   </Directory>
   ```

1. Ubah baris `AllowOverride None` di bagian di atas untuk membaca `AllowOverride All`.
**catatan**  
Ada banyak baris `AllowOverride` dalam file ini; pastikan Anda mengubah baris di bagian `<Directory "/var/www/html">`.

   ```
   AllowOverride All
   ```

1. Simpan file dan tutup editor teks Anda.

**Untuk menginstal perpustakaan gambar grafis PHP pada AL2**  
Pustaka gambar grafik untuk PHP memungkinkan Anda memodifikasi gambar. Instal pustaka ini jika Anda ingin memotong gambar header untuk blog Anda. Versi phpMyAdmin yang Anda instal mungkin memerlukan versi minimum tertentu dari pustaka ini (misalnya, versi 7.2).

Gunakan perintah berikut untuk menginstal perpustakaan gambar grafis PHP pada AL2. Misalnya, jika Anda menginstal php7.2 dari amazon-linux-extras sebagai bagian dari menginstal tumpukan LAMP, perintah ini menginstal versi 7.2 dari perpustakaan gambar grafis PHP.

```
[ec2-user ~]$ sudo yum install php-gd
```

Untuk memverifikasi versi terinstal, gunakan perintah berikut:

```
[ec2-user ~]$ sudo yum list installed php-gd
```

Berikut ini adalah output contoh:

```
php-gd.x86_64                     7.2.30-1.amzn2             @amzn2extra-php7.2
```

**Untuk memperbaiki izin file untuk server web Apache**

Beberapa fitur yang tersedia WordPress memerlukan akses tulis ke root dokumen Apache (seperti mengunggah media melalui layar Administrasi). Jika Anda belum melakukannya, terapkan keanggotaan dan izin grup berikut (seperti yang dijelaskan secara lebih rinci di[Tutorial: Instal server LAMP AL2](ec2-lamp-amazon-linux-2.md)).

1. Berikan kepemilikan file `/var/www` dan kontennya kepada pengguna `apache`.

   ```
   [ec2-user ~]$ sudo chown -R apache /var/www
   ```

1. Berikan kepemilikan grup `/var/www` dan kontennya kepada grup `apache`.

   ```
   [ec2-user ~]$ sudo chgrp -R apache /var/www
   ```

1. Ubah izin direktori `/var/www` dan subdirektorinya untuk menambahkan izin tulis grup dan untuk mengatur ID grup pada subdirektori mendatang.

   ```
   [ec2-user ~]$ sudo chmod 2775 /var/www
   [ec2-user ~]$ find /var/www -type d -exec sudo chmod 2775 {} \;
   ```

1. Secara rekursif mengubah izin file `/var/www` dan subdirektorinya.

   ```
   [ec2-user ~]$ find /var/www -type f -exec sudo chmod 0644 {} \;
   ```
**catatan**  
 Jika Anda berniat untuk juga menggunakan WordPress sebagai server FTP, Anda akan memerlukan pengaturan Grup yang lebih permisif di sini. Harap tinjau [langkah-langkah dan pengaturan keamanan](https://wordpress.org/support/article/changing-file-permissions/) yang disarankan WordPress untuk mencapai hal ini. 

1. Mulai ulang server web Apache untuk mengambil grup dan izin baru.
   + 

     ```
     [ec2-user ~]$ sudo systemctl restart httpd
     ```

**Jalankan skrip WordPress instalasi dengan AL2**

Anda siap untuk menginstal WordPress. Perintah yang Anda gunakan bergantung pada sistem operasi. Perintah dalam prosedur ini adalah untuk digunakan dengan AL2.

1. Gunakan perintah **systemctl** untuk memastikan bahwa `httpd` dan layanan basis data dimulai di setiap booting sistem.

   ```
   [ec2-user ~]$ sudo systemctl enable httpd && sudo systemctl enable mariadb
   ```

1. Verifikasi apakah server basis data sedang dijalankan.

   ```
   [ec2-user ~]$ sudo systemctl status mariadb
   ```

   Jika layanan basis data tidak berjalan, mulailah.

   ```
   [ec2-user ~]$ sudo systemctl start mariadb
   ```

1. Verifikasi apakah server web Apache (`httpd`) sedang dijalankan.

   ```
   [ec2-user ~]$ sudo systemctl status httpd
   ```

   Jika layanan `httpd` tidak dijalankan, mulailah.

   ```
   [ec2-user ~]$ sudo systemctl start httpd
   ```

1. Di browser web, ketik URL WordPress blog Anda (baik alamat DNS publik untuk instance Anda, atau alamat yang diikuti oleh `blog` folder). Anda akan melihat skrip WordPress instalasi. Berikan informasi yang dibutuhkan oleh WordPress instalasi. Pilih **Instal WordPress** untuk menyelesaikan instalasi. Untuk informasi selengkapnya, lihat [Langkah 5: Jalankan Skrip Instal](https://wordpress.org/support/article/how-to-install-wordpress/#step-5-run-the-install-script) di WordPress situs web.

## Langkah selanjutnya
<a name="wordpress-next-steps"></a>

Setelah Anda menguji WordPress blog Anda, pertimbangkan untuk memperbarui konfigurasinya.

**Gunakan nama domain kustom**  
Jika Anda memiliki nama domain yang dikaitkan dengan alamat EIP instans EC2, Anda dapat mengonfigurasi blog untuk menggunakan nama tersebut alih-alih alamat DNS publik EC2. Untuk informasi selengkapnya, lihat [Mengubah URL Situs](https://wordpress.org/support/article/changing-the-site-url/) di WordPress situs web.

**Konfigurasi blog Anda**  
Anda dapat mengonfigurasi blog Anda untuk menggunakan [tema](https://wordpress.org/themes/) dan [plugin](https://wordpress.org/plugins/) yang berbeda untuk menawarkan pengalaman yang lebih personal bagi pembaca Anda. Namun, terkadang proses instalasi dapat menjadi bumerang, menyebabkan Anda kehilangan seluruh blog. Kami sangat menyarankan agar Anda membuat cadangan Amazon Machine Image (AMI) instans sebelum mencoba menginstal tema atau plugin apa pun sehingga Anda dapat memulihkan blog jika terjadi kesalahan selama proses instalasi. Untuk informasi selengkapnya, lihat [Membuat AMI Anda sendiri](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AMIs.html#creating-an-ami).

**Tingkatkan kapasitas**  
Jika WordPress blog Anda menjadi populer dan Anda membutuhkan lebih banyak daya komputasi atau penyimpanan, pertimbangkan langkah-langkah berikut:
+ Perbesar ruang penyimpanan di instans Anda. Untuk informasi selengkapnya, lihat [Volume Elastis Amazon EBS](https://docs.aws.amazon.com/ebs/latest/userguide/ebs-modify-volume.html) di *Panduan Pengguna Amazon EBS*.
+ Pindahkan basis data MySQL ke [Amazon RDS](https://aws.amazon.com/rds) untuk memanfaatkan kemampuan layanan guna menskalakan dengan mudah.

**Meningkatkan performa jaringan lalu lintas internet Anda**  
Jika Anda mengharapkan blog Anda untuk mendorong lalu lintas dari pengguna yang berada di seluruh dunia, pertimbangkan [Global Accelerator AWS](https://aws.amazon.com/global-accelerator). Global Accelerator membantu Anda mencapai latensi yang lebih rendah dengan meningkatkan kinerja lalu lintas internet antara perangkat klien pengguna Anda dan WordPress aplikasi yang sedang berjalan. AWS Global Accelerator menggunakan [jaringan AWS global](https://aws.amazon.com/about-aws/global-infrastructure/global_network/) untuk mengarahkan lalu lintas ke titik akhir aplikasi yang sehat di AWS Wilayah yang paling dekat dengan klien.

**Pelajari lebih lanjut tentang WordPress**  
Untuk selengkapnya WordPress, lihat dokumentasi bantuan WordPress Codex di [http://codex.wordpress.org/.](http://codex.wordpress.org/)

Untuk informasi selengkapnya tentang pemecahan masalah penginstalan Anda, lihat Masalah [instalasi umum](https://wordpress.org/support/article/how-to-install-wordpress/#common-installation-problems).

Untuk informasi tentang membuat WordPress blog Anda lebih aman, lihat [Pengerasan. WordPress](https://wordpress.org/support/article/hardening-wordpress/)

Untuk informasi tentang menjaga WordPress blog Anda up-to-date, lihat [Memperbarui WordPress](https://wordpress.org/support/article/updating-wordpress/).

## Tolong\$1 Nama DNS publik saya berubah dan sekarang blog saya rusak
<a name="wordpress-troubleshooting"></a>

 WordPress Instalasi Anda secara otomatis dikonfigurasi menggunakan alamat DNS publik untuk instans EC2 Anda. Jika Anda menghentikan dan memulai ulang instans, alamat DNS publik akan berubah (kecuali jika dikaitkan dengan alamat IP Elastis) dan blog Anda tidak akan berfungsi lagi karena merujuk sumber daya di alamat yang sudah tidak ada lagi (atau ditetapkan ke instans EC2 lain). Penjelasan yang lebih rinci tentang masalah dan beberapa solusi yang mungkin diuraikan dalam [Mengubah URL Situs](https://wordpress.org/support/article/changing-the-site-url/).

Jika ini terjadi pada WordPress instalasi Anda, Anda mungkin dapat memulihkan blog Anda dengan prosedur di bawah ini, yang menggunakan antarmuka baris **wp-cli** perintah untuk WordPress.

**Untuk mengubah URL WordPress situs Anda dengan **wp-cli****

1. Hubungkan ke instans EC2 Anda dengan SSH. 

1. Catat URL situs lama dan URL situs baru untuk instans Anda. URL situs lama kemungkinan adalah nama DNS publik untuk instans EC2 Anda saat Anda menginstal. WordPress URL situs baru adalah nama DNS publik saat ini untuk instans EC2 Anda. Jika Anda tidak yakin dengan URL situs lama Anda, Anda dapat menggunakan **curl** untuk menemukannya dengan perintah berikut ini.

   ```
   [ec2-user ~]$ curl localhost | grep wp-content
   ```

   Anda akan melihat referensi ke nama DNS publik lama Anda di output, yang akan terlihat seperti ini (URL situs lama berwarna merah):

   ```
   <script type='text/javascript' src='http://ec2-52-8-139-223.us-west-1.compute.amazonaws.com/wp-content/themes/twentyfifteen/js/functions.js?ver=20150330'></script>
   ```

1. Unduh **wp-cli** dengan perintah berikut ini.

   ```
   [ec2-user ~]$ curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
   ```

1. Cari dan ganti URL situs lama di WordPress instalasi Anda dengan perintah berikut. Gantikan URL situs lama dan baru untuk instans EC2 Anda dan jalur ke WordPress instalasi Anda (biasanya `/var/www/html` atau`/var/www/html/blog`).

   ```
   [ec2-user ~]$ php wp-cli.phar search-replace 'old_site_url' 'new_site_url' --path=/path/to/wordpress/installation --skip-columns=guid
   ```

1. Di browser web, masukkan URL situs baru WordPress blog Anda untuk memverifikasi bahwa situs tersebut berfungsi dengan baik lagi. Jika tidak, lihat [Mengubah URL Situs](https://wordpress.org/support/article/changing-the-site-url/) dan [Masalah instalasi umum](https://wordpress.org/support/article/how-to-install-wordpress/#common-installation-problems) untuk informasi selengkapnya.