Konfigurasi Web Server Apache2 di Debian (Static & Dynamic Website)

Assalamualaikum Wr.Wb.

Hallo guys !!! Bagaimana kabarnya ? Semoga sehat selalu yaa :D

Sesuai judul pada blog kali ini saya akan berbagi cara konfigurasi Web Server (Apache2) di Debian 11. Kita akan bahas tuntas sesuai dengan agenda pembahasan berikut :

  • Pengertian Web Server
  • Cara Kerja Web Server
  • Web Statis vs Web Dinamis
  • Konfigurasi Sub-domain di DNS-Bind9
  • Deploy Web Statis
  • Deploy Web Dinamis
  • Konfigurasi SSL/TLS di Apache Debian 11

Pengertian Web Server

Web server adalah sebuah perangkat lunak (software) atau perangkat keras (hardware) yang berfungsi untuk menyimpan, mengelola, dan mengirimkan berkas-berkas dan konten yang membentuk sebuah website. Permintaah HTTP / HTTPS yang dikirimkan oleh klien atau dikenal dengan Web Browser (Chrome, Firefox, Opera, DLL) ketika sedang mengakses sebuah website (HTTP Request), akan direspon oleh perangkat Web Server dengan mengirimkan halaman-halaman web, gambar, video, atau konten lainnya kepada browser client / pengguna (HTTP Response).
cara kerja web server

Pada blog kali ini kita akan menggunakan Apache HTTP Server sebagai Web Server.

Cara Kerja Web Server

Cara kerja web server tidak bisa lepas dari penggunaan protokol HTTP (Hypertext Transfer Protocol)-port 80, yaitu protokol komunikasi antarsisem untuk melakukan transfer informasi dan data melalui jaringan. Protokol ini adalah protokol lapisan yang digunakan oleh web browser dan server untuk berkomunikasi melalui intenet. Ketika kita ingin membuka atau berinteraksi dengan halaman web, web browser akan mengirimkan permintaan HTTP ke server asal yang menghosting file website. Permintaan ini pada dasarnya adalah baris teks yang dikirim melalui internet.
Kemudian, koneksi akan dibuat antara browser dan server, lalu server akan memproses permintaan dan mengirimkan kembali respon HTTP. Degan deminkian, halaman web pun bisa diakses oleh pengunjung.
Saat ini sudah menjadi hal wajib untuk setiap pengelola web server unuk meningkatkan keamanan websitenya, untuk itu gunakanlah protokol HTTPS (Hyper Transfer Protocol Secure) - port 443. yang mirip dengan HTTP tapi sudah menggunakan SSL/TLS untuk mengamankan proses transfer data. 
HTTP mengamannkan koneksi dengan protokol kemananan digiral menggunakan kunci kriptografi untuk mengenkripsi dan memvalidasi data. Untuk bisa menggunakan HTTPS dan mengamankan domain, kita harus memerlukan sertifikat SSL/TLS (Secure Socker Layer / Transport Layer Security). Konfigurasi web server HTTPS akan kita praktikan di akhir blog ini.
Sumber : Hostinger
Dengan menambahkan sertifikat SSL/TLS selain menambahkan keamanan komunikasi data dan perangkat, kita juga akan mendapat manfaat lain yaitu :
1. Mendapatkan kepercayaan pengguna.
2. Perlindungan terhadap pemalsuan dan penyusupan.
3. SEO (Search Engine Oprimazion) yang lebih baik, memungkinkan website kita muncul paling atas saat pencarian.
4. Mematuhi regulasi.
5. Keamanan perangkat lunak.

Web Statis vs Web Dinamis

Berdasarakan konten website yang simpan, dihasilkan, dan disajikan kepada pengguna, website bisa dibagi menjadi 2 yaitu : 
1. Website Statis
Website statis terdiri dari berkas HTML, CSS, dan mungkin juga gambar atau file lain yang disimpan di server. Konten ini tidak berubah tanpa adanya perubahan manual pada berkas-berkas tersebut. Setiap kali pengguna mengakses halaman, server secara langsung mengirimkan berkas HTML ke browser pengguna. Website statis cocok untuk situs web yang tidak memerlukan banyak perubahan, seperti situs perusahaan yang hanya berisi informasi kontak, layanan, dan informasi tetap.
Keuntungan:
  • Mudah dikelola karena tidak ada perubahan dinamis.
  • Cepat diakses karena tidak ada pemrosesan server saat tampilan.
  • Lebih aman karena memiliki sedikit interaksi server-pengguna.
Kekurangan:
  • Sulit untuk mengelola dan memperbarui konten secara berulang.
  • Tidak cocok untuk fitur interaktif atau dinamis.
2. Website Dinamis
Website dinamis menggunakan bahasa pemrograman seperti PHP, Python, atau Ruby untuk menghasilkan konten secara real-time berdasarkan permintaan pengguna. Informasi seperti artikel, komentar, dan konten yang dapat berubah sering dikelola melalui basis data. Saat pengguna mengakses halaman, server menghasilkan halaman HTML yang sesuai berdasarkan data yang diambil dari basis data.
Keuntungan:
  • Mampu menampilkan konten yang disesuaikan dengan pengguna atau situasi tertentu.
  • Cocok untuk situs web dengan berita, blog, atau fitur interaktif.
  • Lebih fleksibel untuk memperbarui dan mengelola konten.
Kekurangan:
  • Dibutuhkan pemrosesan server setiap kali halaman diminta, yang dapat memperlambat waktu pemuatan.
  • Lebih rumit untuk mengelola dan mengembangkan.
Umumnya, situs web dinamis lebih sesuai untuk interaksi dan perubahan konten yang sering, sementara situs web statis lebih cocok untuk konten yang tetap dan perubahan jarang. Banyak platform dan kerangka kerja web modern menggabungkan fitur statis dan dinamis untuk mengoptimalkan kinerja dan pengalaman pengguna.

Konfigurasi Sub-domain di DNS Bind9

Pada blog kali ini saya akan melakukan deploying 1 website statik dan 2 website dinamis (DVWA & Web dinamis laravel). untuk itu saya akan mebuat sub domain dengan nama : static1., dvwa., dan dinamis1. nantinya sub-domain ini akan di arahkan menggunakan record CNAME (alias) ke domain utama srvabdul.net.
Lakukan konfigurasi di VM-Router.
Sub Domain : www. => website utama
                        static1. => web static 1
                        dvwa. => web aplikasi untuk latihan kemanan web & pentest
                        dinamis1 => web aplikasi dinamis berbasis PHP menggunakan framework laravel.
Berikut adalah langkah konfigurasinya :
1. Edit file konfigurasi forward (db.namadomain)
nano /etc/bind/db.srvabdul
tambahkan script seperti berikut - silahkan di sesuaikan.


2. Edit file konfigurasi reverse (db.alamatIP)
nano /etc/bind/db.20.30.172
tambahkan script seperti berikut - silahkan di sesuaikan.

Jika sudah diubah lakukan  restart sevices bind9 : 
systemctl restart bind9

3. Testing menggunakan nslookup.
lakukan test nslookup untuk semua subdomain.

Konfigurasi sub-domian DNS Bind9 berhasil !!!
** Silahkan sesuaikan jumlah sub-domain yang dibuat dengan ketentuan di LKPD.

Deploy Web Statis 

Untuk mendapatkan sources-code webiste statis maupun dinamis, teman-teman bisa mencarinya di Github : https://github.com/. Kita bisa menginstall git di Debian 11 untuk melakukan clone / download sources-code.
1. Install web server apache2 & git
apt-get install -y apache2 git

2. Konfigurasi website utama
- Hapus file index.html bawaan, dan buat tampilan website utama.
Saya sudah menyediakan template untuk tampilan website utama, silahkan di clone dan di simpan di /var/www/html.
rm /var/www/html/index.html
git clone https://github.com/abdullahalfz18/tabel-di-html.git /var/www/html/

- Akan terdownload file dengan index.html, silahkan lakukan penyesuaian data diri dan link / url button.
nano /var/www/html/index.html


- Ubah konfigurasi VirtualHost bawaan.
nano /etc/apache2/sites-available/000-default.conf
**Lakukan penyesuian NameServer dan DocumentRoot
- Restart services apache2

- Cek tampilan website utama di Client : search www.srvabdul.net

3. Deploy website static
- Buat direktori untuk menyimpan sources-code website statik
mkdir /var/www/html/static1
- Cari sources-code web static di github, silahkan cari web dengan base HTML, CCS, atau JS.
Git clone sources-code kedalam direktori static1
- Ubah tampilan static web : minimal menampilkan NIS_NAMA_Rombel
edit file index.html 

- Konfigurasi VirtualHost untuk website static1.namadomain.net
nano /etc/apache2/sites-available/static.conf

- Enable file konfigurasi virtualhost dengan perintah a2ensite kemudian cek menggunakan.

- Cek tampilan static web 1 dengan menekan tombol di website utama.

Deploy web static berhasil, selanjutnya teman-teman bisa menambahkan tampilan web static 2, dan 3. untuk konfigurasi VirtualHostnya bisa ikut di file static.conf.

Deploy Web Dinamis

Sebelum melanjutkan ke praktik deploy web dinamis, pastikan kamu sudah memahami beberapa konsep tentang web dinamis. Berbeda dengan web statis yang minim perubahan dan sederhana, website dinamis dapat berinteraksi dengan pengguna dan menghasilkan konten dinamis berdasarkan permintaan. Website dinamis menggunakan bahasa pemprograman seperti PHP, JavaScript, Python, dan Ruby untuk mengambil data dari Database, sehingga menghasilkan konten secara real-rime, dan memberikan pengalaman yang lebih interaktif kepada pengguna.
Langkah-langkah dasar deploy website dinamis.
  • Persiapan - Pastikan kode / source-code kita siap di deploy (pastikan tidak terdapat bug, keamanan telah diperiksa dan konfigurasi sudah benar).
  • Pemilihan Hosting - Seperti toko / warung website kita juga harus memiliki lahan untuk bisa diakses oleh pengguna, dalam konteks ini Hosting adalah penyedia lahan (server) yang bisa kita sewa untuk menyimpan website. Pastikan kamu memilih penyedia hosting yang sudah mendukug teknologi yg kita digunakan (seperti PHP, JavaScript, dan Node.js).
  • Konfigurasi Server - Konfigurasikan server web (biasanya Apache2 atau Nginx), depedency, library dan lain-lain.
  • Setup Database - Pastikan database telah di atur dengan benar, seperti membuat database baru, import database, pembuatan user dan lain-lain.
  • Konfigutasi Enviroment - Pastikan file konfigurasi (seperti .env) telah diatur dengan benar untuk lingkungan produksi.
  • Testing - Lakukan pengujian ektensif untuk memastikan website berfungsi dengan bak di server produksi.
Pada blog kali ini saya akan mendemonstrasikan cara deploy web dinamis yang dibangun menggunakan framework Laravel. Untuk template / sources code web dinamis bisa kamu dapatkan dari web berikut: https://stokcoding.com/ dan github silahkan dicari. Dari website tersebut biasanya sudah dijelaskan kebutuhan sistem, langkah-langkah konfigurasi, dan link menuju ke repository github-nya.

Link github web dinamis yang saya deploy :

1. Buat repository baru di folder htdocs apache2 (/var/www/) dan clone Source-Code ke direktori tsb.
mkdir /var/www/dinamis1
jalankan perintah git clone untuk mendownload sources code web dinamis.
git clone https://github.com/adhiariyadi/Sistem-Informasi-Akademik-Sekolah-Laravel.git /var/www/dinamis1
Setelah selesai di download, cek isi direktori dinamis 1. 


2. Install dan konfigurasi PHP Composer
PHP Composer adalah alat manajemen depedency untuk aplikasi yang dibangun menggunakan bahasa php. Composer dapat menyediakan modul php tanpa rumit, composer akan melacak semua modul yang diperlukan aplikasi dan menginstallnya hanya dengan satu perintah (composer install). Composer menyimpan paket yang diperlukan dalam file JSON bernama composer.json. Kita juga dapat melakukan pembaruan / update modul menggunakan composer.
 Composer adalah alat yang mirip dengan npm untuk Node.js, pip untuk Pyhton dan bundler untuk ROR (Ruby on Rails).
Pra-Syarat sebelum menginstall composer adalah.
  • Memiliki hak akses istimewa (privileges) sebagai user sudo atau root.
  • Sudah menginstall PHP versi 5.3 atau lebih tinggi di Debian.
Okee.. kita lanjut ke langkah-langkahnya.
- Install PHP dan Extensinya.
Secara default versi php yang tersedia di repository Debian 11 adalah PHP 7.4. Jika website teman-teman memerlukan versi diatas atau dibawah itu silahkan klik disini
apt update
apt install php php7.4-cli php7.4-mbstring php7.4-zip php7.4-curl php7.4-common
PHP 7.4.33. berhasil terinstall

- Install Composer
Pindah ke direktori home kemudian download file installer compose menggunakan script yang disediakan oleh PHP.
cd ~
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" 

Sebuah file bernama composer-setup.php telah di buat di direktori saat ini. Sekarang kita eksekusi script php untuk install composer menggunakan argumen tambahan --install-dir untuk menentukan binary location dan --filename untuk memberikan nama binary. Ubah hakakses file binary agar bisa dieksekusi oleh semua user. 
php composer-setup.php --install-dir=/usr/local/bin --filename=composer
chmod +x /usr/local/bin/composer

cek versi composer yang sudah terinstall
composer --version

3. Konfigurasi website dinamis
Ada beberapa setup yang harus di lakukan agar website dinamis bisa di akses oleh pengguna, yaitu install modul php, membuat database baru, set enviroment variable dan melakukan beberapa perubahan konfigrasi web server apache2.
- Install modul php menggunakan composer.
Pindah ke direktori htdocs dinamis1 kemudian jalankan perintah composer install, composer akan menginstall modul/library yang berada pada file composer.json.
cd /var/www/dinamis1
composer install
Tunggu hingga proses download selesai.
Modul / library yang sudah di install akan disimpan pada direktory vendor, nantinya web dinamis akan mengakses librarynya dari direktori ini.

- Buat database baru
Setelah selesai mengsetup modul, selanjutnya kita akan membuat database baru untuk menyimpan data-data website. Untuk nama databasenya bisa di sesuaikan dengan yang diminta oleh programmer / pembuat websitenya, bisa dibaca pada file README.md.
Jika belum install DBMS mariadb, silahkan install terlebih dahulu
apt install mariadb-server mariadb-client -y
Jalankan setup security installation databases : mysql_secure_installation
Jika sudah silahkan cek status databases, pastikan Running.

Masuk kedalam DBMS mysql kemudian buat database baru, disini saya membuat database dengan nama laravel.

Untuk keamanan teman-teman juga bisa membuat user baru yang memiliki akses penuh hanya ke databases yang telah di tentukan. Pada gambar dibawah saya membuat user databases baru dengan nama webadmin, Password admin123 dan memiliki privileges (hak akses)  penuh ke databases laravel.

- Edit file .env (enviroment variable).
File .env adalah file konfigurasi yang biasanya digunakan untuk menyimpan variable-variable lingkungan (enviroment variable) yang digunakan oleh aplikasi. File ini menyimpan informasi penting seperti url databases, username dan password databases, kunci rahasia, kunci token API dan lain-lain. penambahan titik (.) didepan nama file berfungsi untuk menyembunyikan file agar tidak bisa di akses oleh pihak lain dan mencegah kebocoran data pribadi. Untuk itu sangat disarankan untuk, jangan menyimpan file ini di direktori htdocs yang bisa diakses langsung oleh pengguna.
Pada website dinamis yang saya deploy, file .env awalnya bernama .env example. Jadi kita perlu mencopy-nya menjadi file.env saja.
cp .env-example .env
Jika di website teman-teman tidak seperti itu, silahkan lanjut edit file .env
Masukan informasi nama database, username, dan passwordnya.

- Instalasi website
Jalankan perintah php artisan key:generate untuk meng-generate random string yang nantinya akan digunakan sebagai key yang diperlukan untuk semua proses enkripsi dan deskripsi pada aplikasi kita, membuat aplikasi yang dibuat lebih aman.
php artisan key:generate

Database laravel yang kita buat masih kosong, untuk itu kita perlu melakukan migrasi data dari web dinamis ke database tersebut. Gunakan fungsi Seeder (benih) untuk melakukan migrasi data ke databases.
php artisan migrate --seed

Schema database pada web dinamis yang saya deploy terletak pada direktori databases/seeds. Di beberapa kasus mungkin kamu harus menambahkan data website (schma databases) secara manual dengan melakukan import file .sql ke dalam databases yang sudah di buat.

4. Konfigurasi web server apache2 dan membuat virtualhost baru.
- Konfigurasi web server apache2
Edit file apache2.conf ubah pada bagian berikut.
nano /etc/apache2/apache2.conf

Lakukan rewrite module apache2
a2enmod rewrite


- Tambahkan Virtualhost baru.
Buat file virtualhost dengan nama dinamis.conf kemudian tambahkan script virtualhost. Silahkan disesuaikan.
nano /etc/apache2/sites-available/dinamis.conf
Untuk keamanan disarankan mengarahkan DocumentRoot ke direktori yang boleh di akses oleh penggun, di web dinamis saya terdapat direktori public berisi front-end web yang boleh di akses oleh pengguna. Hindari melakukan publish file-file laravel dan .env ke pengguna dengan tidak meletakan file tsb di htdocs. 
Aktifkan virtualhost yang sudah di buat. 
a2ensite dinamis.conf

- Stop dan Start services apache2
Untuk memastikan semua perubahan kita berjalan, coba stop dan start services apache2.
systemctl stop apache2
systemctl start apache2

5. Uji coba akses website dinamis.
Akses menggunakan subdomain dinamis1 di Client Windows7.

Terjadi error seperti gambar di atas, silahkan masuk ke VM-Server untuk mengubah hak akses direktori /var/www/dinamis1/storage.
chmod -R 777 /var/www/dinamis1/storage

Coba refresh tampilan webiste dinamis1.

Website dinamis berhasil di akses, silahkan login menggunakan username dan password yang sudah disediakan oleh developer.

Website Dinamis berhasil di deploy !!!





Post a Comment

0 Comments