Apa itu Apache Web Server ?
Web server adalah perangkat lunak yang berfungsi untuk menerima dan memproses permintaan (request) HTTP/HTTPS dari klien (biasanya web browser) dan mengembalikan respons dalam bentuk halaman web. Apache adalah salah satu web server yang paling populer dan banyak digunakan di seluruh dunia.
Dalam tutorial ini kami akan menggunakan server Cloud VPS SSD Storage. Lalu kita akan mempelajari bagaimana cara menginstall apache web server pada server AlmaLinux 8.
Persyaratan
Sebelum mengikuti tutorial ini, pastikan Anda memenuhi persyaratan berikut:
- Akses ke server dengan sistem operasi AlmaLinux 8.
- Koneksi internet yang stabil untuk melakukan proses instalasi.
- Hak akses root atau pengguna dengan izin sudo untuk menjalankan perintah.
Langkah 1 — Install Apache
Sebelum menginstall web server Apache, sebaiknya Anda terlebih dahulu memperbarui paket-paket sistem pada server Anda. Memperbarui sistem operasi akan memastikan bahwa Anda memiliki dependensi dan paket terbaru yang diperlukan untuk proses instalasi dan pengoperasian Apache web server.
1 |
dnf update -y |
Opsi -y digunakan untuk mengotomasi proses pembaruan. Dengan menggunakan -y, Anda tidak perlu melakukan konfirmasi manual saat perintah meminta persetujuan untuk memperbarui paket-paket.
Kemudian install Apache, jalankan perintah berikut
1 |
dnf install httpd -y |
Setelah proses instalasi selesai, jalankan perintah berikut untuk mengaktifkan service Apache agar dapat berjalan auto start saat server dihidupkan kembali
1 |
systemctl enable --now httpd |
Setelah menginstal dan mengaktifkan service Apache Web Server, Anda dapat memeriksa status dari service tersebut dengan menjalankan perintah berikut
1 |
systemctl status httpd |
Langkah 2 — Konfigurasi Keamanan dan Firewall
Pada bagian ini kita akan menyesuaikan hak akses dan firewall, Anda dapat melewati langkah ini apabila Anda tidak menggunakan SELinux dan Firewalld pada server Anda.
Langkah 2.1 — Konfigurasi SELinux
Dalam tutorial kami akan mematikan SELinux karena mungkin akan menyebkan konflik, cek status SELinux dengan perintah berikut
1 |
sestatus |
Berikut contoh output apabila SELinux dalam keadaan aktif
1 2 3 4 5 6 7 8 9 10 |
SELinux status: enabled SELinuxfs mount: /sys/fs/selinux SELinux root directory: /etc/selinux Loaded policy name: targeted Current mode: enforcing Mode from config file: enforcing Policy MLS status: enabled Policy deny_unknown status: allowed Memory protection checking: actual (secure) Max kernel policy version: 33 |
Matikan SELinux sementara
1 |
setenforce 0 |
Cek SELinux dengan perintah berikut
1 |
sestatus |
Berikut contoh output apabila SELinux dalam keadaan disable sementara, SELinux masih aktif namun pada bagian Current mode statusnya sudah permissive hingga server di reboot
1 2 3 4 5 6 7 8 9 10 |
SELinux status: enabled SELinuxfs mount: /sys/fs/selinux SELinux root directory: /etc/selinux Loaded policy name: targeted Current mode: permissive Mode from config file: enforcing Policy MLS status: enabled Policy deny_unknown status: allowed Memory protection checking: actual (secure) Max kernel policy version: 33 |
Untuk mematikan secara SELinux permanen, buka file konfigurasi SELinux dengan editor nano atau vim
1 |
nano /etc/sysconfig/selinux |
Kemudian ubah parameter berikut
1 |
SELINUX=enforcing |
Menjadi
1 |
SELINUX=disabled |
Perubahan diatas memerlukan reboot server, namun karena sebelumnya kita sudah mengatur akses SELinux menjadi permissive jadi Anda tidak perlu memerlukan reboot
Langkah 2.2 — Konfigurasi Firewalld
Cek status firewalld pada server dengan perintah berikut, jika statusnya Active maka Firewalld sudah terinstall pada server dan Anda harus mengkonfigurasi Firewalld agar dapat melewatkan trafik dari port 80 dan 443 untuk Web Server HTTP dan HTTPS
1 |
systemctl status firewalld |
Tambahkan rule pada firewall menggunakan perintah berikut
1 |
firewall-cmd --add-port={80,443}/tcp --permanent |
--add-port={80,443}/tcp adalah opsi untuk menambahkan port ke daftar port yang diizinkan oleh firewall. Dalam kasus ini, port 80 (HTTP) dan port 443 (HTTPS) untuk protokol TCP.
--permanent adalah opsi yang menyebabkan perubahan konfigurasi firewall berlaku secara permanen, sehingga tidak hilang setelah sistem direkonfigurasi atau dihidupkan ulang.
Setelah Anda melakukan perubahan pada pengaturan firewall. Kemudian reload Firewall dengan perintah berikut
1 |
firewall-cmd --reload |
Langkah 3 — Akses Apache Melalui Browser
Akses Apache Web Server melalui browser dan tuliskan IP Anda pada browser atau http://ip.address.server Anda akan melihat tampilan bawaan Apache Web Server pada AlmaLinux
Langkah 4 — Konfigurasi VirtualHost (Lanjutan)
Pada tahap ini kami mengasumsikan Anda sudah melakukan pointing A record pada domain Anda ke server. Jika Anda belum pernah melakukan pointing DNS silahkan ikuti tutorial Cara Mengakses Server dengan Domain
Setelah Anda melakukan pointing domain, maka selanjutnya buat sebuah file untuk menyimpan konfigurasi virtual host, jalankan perintah berikut
1 |
nano /etc/httpd/conf.d/nama-domain.conf |
Isi dengan script berikut, dan ubah pada bagian nama_domain.com dengan nama domain Anda yang sudah terpointing pada server
1 2 3 4 5 6 |
<VirtualHost *:80> ServerName nama-domain.com DocumentRoot /var/www/nama-domain.com/public_html ErrorLog logs/nama-domain.com_error.log CustomLog logs/nama-domain.com_access.log combined </VirtualHost> |
Setelah itu jalankan perintah berikut untuk membuat direktori, sesuaikan nama-domain.com dengan domain Anda yang valid. Opsi -p (atau --parents) digunakan untuk membuat direktori beserta direktori induknya (parent directories) jika direktori tersebut belum ada.
1 |
mkdir -p /var/www/nama-domain.com/public_html |
Ubah permission dan sesuaikan dengan lokasi direktori virtualhost Anda
1 |
chown -R apache:apache /var/www/nama-domain.com/ |
Setelah VirtualHost dibuat, maka selanjutnya Anda akan mencoba untuk menghosting website Anda. Kami akan menggunakan demo HTML yang di sediakan oleh komunitas Github
Install git untuk cloning project dari Github
1 |
dnf install git -y |
Pindah ke direktori virtualhost yang sudah dibuat sebelumnya lalu jalankan perintah berikut untuk clonning project dari Github
1 2 3 |
cd /var/www/nama-domain.com/public_html git clone https://github.com/atulcodex/nihory-basic.git mv nihory-basic/* . |
Setelah itu akses menggunakan web browser menggunakan domain yang sudah Anda pointing, apabila Anda sudah berhasil mengikuti semua langkah dengan benar maka tampilannya akan seperti berikut
Langkah 5 — Install SSL Let’s Encrypt (Lanjutan)
Langkah ini merupakan opsional, Anda bebas dapat menginstall SSL Gratis dari Let’s Encrypt dengan masa aktif 3 bulan (auto renew) atau Anda membeli dari vendor SSL dengan berbagai variasi dan masa aktif yang lebih lama hingga 365 hari atau 1 tahun.
Install Certbot dan dependensi yang diperlukan lainnya menggunakan perintah berikut
1 |
dnf -y install certbot python3-certbot-apache mod_ssl |
Kemudian jalankan perintah berikut, sesuaikan nama-domain.com dengan domain yang sudah Anda pointing ke server
1 |
certbot --apache -d nama-domain.com |
Jika Anda baru pertama kali menginstall SSL Let’s Encrypt dengan Certbot maka silahkan instrukti yang muncul pada contoh berikut dan sesuaikan dengan data Anda
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
Saving debug log to /var/log/letsencrypt/letsencrypt.log Enter email address (used for urgent renewal and security notices) (Enter 'c' to cancel): admin@nama-domain.com - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Please read the Terms of Service at https://letsencrypt.org/documents/LE-SA-v1.4-April-3-2024.pdf. You must agree in order to register with the ACME server. Do you agree? - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (Y)es/(N)o: Yes - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Would you be willing, once your first certificate is successfully issued, to share your email address with the Electronic Frontier Foundation, a founding partner of the Let's Encrypt project and the non-profit organization that develops Certbot? We'd like to send you email about our work encrypting the web, EFF news, campaigns, and ways to support digital freedom. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (Y)es/(N)o: No Account registered. Requesting a certificate for nama-domain.com Successfully received certificate. Certificate is saved at: /etc/letsencrypt/live/nama-domain.com/fullchain.pem Key is saved at: /etc/letsencrypt/live/nama-domain.com/privkey.pem This certificate expires on 2024-09-08. These files will be updated when the certificate renews. Certbot has set up a scheduled task to automatically renew this certificate in the background. Deploying certificate Successfully deployed certificate for myapache.focusnic.biz.id to /etc/httpd/conf.d/nama-domain.com-le-ssl.conf Congratulations! You have successfully enabled HTTPS on https://nama-domain.com - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - If you like Certbot, please consider supporting our work by: * Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate * Donating to EFF: https://eff.org/donate-le - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
Setelah itu Anda dapat mengakses website Anda dengan HTTPS melalui browser
Kesimpulan
Pada artikel ini Anda sudah mempelajari bebera langkah seperti instalasi Apache, konfigurasi keamanan dan firewall, membuat virtualhost, dan menginstall SSL Let’s Encrypt menggunakan Certbot untuk memberikan keamanan ekstra pada website Anda.
Jangan lupa untuk selalu menjaga keamanan dan memperbarui paket-paket sistem Anda agar tetap aman dan terlindungi dari ancaman keamanan yang mungkin muncul.
Semoga tutorial ini bermanfaat bagi Anda. Jika Anda memiliki pertanyaan atau membutuhkan bantuan lebih lanjut, jangan ragu untuk menghubungi kami.
Leave a Reply