Tutorial Konfigurasi Web Server (Apache2)

Berikut adalah konfigurasi - konfigurasi yang akan kita terapkan

  1. Website dapat melayani lewat port 80 dan port 8080
  2. Terdapat subdirektori /admin yang file - filenya terletak di /home/admin
  3. Ketika mengakses lewat port 8080, user harus menginputkan username dan password untuk mengakses folder yang diproteksi dengan .htaccess
  4. Setiap mengakses website lewat port 80 dan tidak ada file index.html, tidak boleh menampilkan daftar isi direktori
  5. Ketika mengakses ip_anda:80/example maka akan diarahkan ke ip_anda:80/example/example.html
  6. Setiap user di server dapat memiliki folder pribadi yang dapat diakses lewat web server (mod_userdir)
  7. Konfigurasikan apache agar dapat menggukan SSL dengan self-signed-certificate
  8. Konfigurasikan apache agar mendapat guaranteed RAM sebesar 8 MB

Untuk mencoba konfigurasi yang sudah dilakukan, gunakan Lynx
apt-get install lynx

1. Website dapat melayani lewat port 80 dan port 8080

Pertama, tambahkan di /etc/apache2/ports.conf 
NameVirtualHost *:8080
Listen 8080
Lalu buat struktur VirtualHost baru di /etc/apache2/sites-available/default
Salin struktur untuk VirtualHost 80, tapi ganti menjadi 8080
Restart service apache2 lalu buka di lynx
lynx ip_anda:8080
Jika sukses, maka file index.html akan dibuka atau menampilkan daftar isi direktori jika tidak ada index.html

2. Terdapat subdirektori /admin yang file - filenya terletak di /home/admin

Pertama, buat folder /home/admin
mkdir /home/admin
Buat sebuah file di folder tersebut untuk pengujian nantinya, misal index.html
Tambahkan baris berikut di apache2.conf atau di httpd.conf
Alias /admin /home/admin
Restart service apache2 lalu buka di lynx
lynx ip_anda/admin
Jika sukses, maka file index.html yang dibuat sebelumnya akan ditampilkan

3. Ketika mengakses lewat port 8080, user harus menginputkan username dan password untuk mengakses folder yang diproteksi dengan .htaccess

Pertama, buat dulu file .htaccess yang berisi baris - baris berikut
AuthType Basic
AuthName "Required"
AuthGroupFile /www.null
AuthUserFile /var/www/admin/.htpasswd
require user admin

Lalu buat file .htpasswd dengan perintah
htpasswd -c /path/kefolder/.htpasswd admin

Kita harus mengkonfigurasi agar hanya akses lewat port 8080 yang dapat membaca file .htaccess
Pada bagian VirtualHost 8080, tambahkan struktur untuk direktori yang diinginkan, misalnya folder protected. Ubah AllowOverride dari none menjadi AuthConfig

...
AllowOverride AuthConfig
....

Lalu coba dengan Lynx
lynx ip_anda:8080/protected
Jika berhasil, maka lynx akan meminta username dan password saat mengakses.

4. Setiap mengakses website lewat port 80 dan tidak ada file index.html, tidak boleh menampilkan daftar isi direktori

Pada bagian VirtualHost 80 di struktur Directory /var/www, ubah dari Indexes menjadi -Indexes

5. Ketika mengakses ip_anda:80/example maka akan diarahkan ke ip_anda:80/example/example.html

Tambahkan
alias /example /example/example.html
di file apache2.conf atau httpd.conf

6. Setiap user di server dapat memiliki folder pribadi yang dapat diakses lewat web server (mod_userdir)

Pertama, aktifkan modul userdir dari apache2
a2enmod userdir
Lalu buat user baru, misalnya bocah
adduser bocah

Buat folder public_html pada /home/bocah
mkdir /home/bocah/public_html

Tambahkan file - file yang ingin diakses lewat web di folder public_html tersebut
Cobalah mengakses dengan Lynx
lynx ip_anda/~bocah
Maka daftar isi dari folder bocah akan ditampilkan (jika tidak ada index.html)

7. Konfigurasikan apache agar dapat menggukan SSL dengan self-signed-certificate

Buat sertifikat dan key untuk sslnya
openssl req -new > new.ssl.csr
openssl rsa -in > privkey.pem -out new.cert.key
openssl x509 -in new.cert.csr -out new.cert.cert -req -signkey new.cert.key -days 365
cp new.cert.cert /etc/ssl/certs/server.crt
cp new.cert.key /etc/ssl/private/server.key

Tambahkan di ports.conf agar apache2 listen ke port 443
VirtualHost *: 443
Listen 443

Tambahkan virtualhost baru di sites-available/default dengan VirtualHost *:443 dan tambahkan baris - baris berikut di blok virtualhost tersebut
SSLEngine on
SSLCertificateFile /etc/ssl/certs/server.crt
SSLCertificateKeyFile /etc/ssl/private/server.key

8. Konfigurasikan apache agar mendapat guaranteed RAM sebesar 8 MB
Pertama - tama, kita harus tahu berapa banyak memory yang dialokasikan untuk uml web server ini. Dari tutorial sebelumnya, saya mengalokasikan 64 MB. Selanjutnya, matikan service apache2 dan lihat berapa besar penggunaan server maksimum sekarang tanpa service apache2, misalnya 47 MB.
Jumlah memory tersedia dikurangi memory yang digunakan tanpa apache2, yaitu 64 - 47 = 17 MB
Nilai ini dikalikan 0.8 sehingga menjadi 17 * 0.8 = 13.6
Karena kita ingin agar guaranteed RAM 8 MB, maka nilai itu dibagi 8
13.6 / 8 = ~2

Nah setelah angkanya didapat (2) maka atur setiap maxclient dari konfigurasi menjadi sekitar 2 dan konfigurasi - konfigurasi lainnya menyesuaikan agar tidak lebih dari 2. Selain itu, kecilkan durasi Timeout, dan disable HTTP Persistent dengan KeepAlive Off.

0 comments:

Post a Comment