life, coding, and stuff

10 April 2013

Konfigurasi Web Server Apache


Apache adalah salah satu web server populer yang banyak dipakai. Kelebihannya adalah banyaknya kustomisasi yang bisa kita lakukan agar apache dapat bekerja sesuai yang kita inginkan. Kali saya akan menunjukkan beberapa konfigurasi pada apache yang dapat kita lakukan.

Membuat Virtual Direktori

Biasanya, kita harus meletakkan halaman-halaman web kita di folder /var/www (jika di linux) atau /htdocs (jika di windows). Nah, ada trik dimana jika kita ingin meletakkan halaman web di luar folder-folder ini, atau istilahnya Virtual directory.

Pertama kita harus meng-enable modul mod_alias milik apache
LoadModule alias_module modules/mod_alias.so



Kemudian tambahkan konfigurasi berikut di .httpd.conf


# ADD THIS LINES FOR YOUR VIRTUAL DIRECTORIES Alias /project1 /home/me/web/project1 Alias /project2 /home/me/web/project2 Alias /project3 /home/me/web/project3

dalam contoh, saya membuat virtual directory bernama /project1 dimana sebenarnya letak project1 ini ada di /home/me/project1

Lalu tambahkan baris berikut untuk setiap virtual direktori:

# SETTING DIRECTORY FOR /home/me/web/project1

Options None
AllowOverride All
Order allow,deny
Allow from all


Kita harus membuat lebih dari satu konfigurasi untuk setiap virtual direktori yang kita buat seperti di atas. Kemudian Restart Apache.

Hosting lebih dari satu website

Apache dapat meng-host lebih dari satu website. Metode ini bisa dilakukan dengan melakukan setting yang disebut "virtual host" di Apache.

di folder /etc/apache2/sites-available/ ada sebuah file bernama "default". Gunakan file ini sebagai template untuk file virtual host. Untuk melakukannya cukup copy file-nya, dan rename dengan nama lain. contoh :
cp default djmadjack.com
kemudian edit file yang baru kta copy tersebut menggunakan text editor


nano djmadjack.com
kemudian tambahkan baris berikut :


      ServerAdmin eric@djmadjack.com
      ServerName www.djmadjack.com
      DocumentRoot /var/www/djmadjack.com/
      
              Options FollowSymLinks
              AllowOverride None
      
      
              Options Indexes FollowSymLinks MultiViews
              AllowOverride None
              Order allow,deny
              allow from all
      

 (...)

Baris DocumentRoot adalah letak di mana halaman web kita akan disimpan.

Kemudian kita perlu meng-enable website baru kita.

a2ensite djmadjack.com
Jika sewaktu-waktu kita perlu men-disable, gunakan

a2dissite djmadjack.com

Terakhir, restart apache.

Direktori Halaman Web per User

Secara default, letak halaman web apache adalh di /var/www. Ada kalanya kuta ingin membuat agar setiap user di komputer memiliki folder web nya sendiri-sendiri, jadi nantinya website kita bisa diakses lewat url : http://example.com/~namauser/
Pertama, kita perlu meng-enable modul mod_userdir di apache

sudo a2enmod userdir


Lalu lakukan konfigurasi di file userdir.conf

gksudo gedit /etc/apache2/mods-enabled/userdir.conf

Kemudian ganti dengan baris berikut :

<IfModule mod_userdir.c>
        UserDir public_html
        UserDir disabled root
 
        <Directory /home/*/public_html>
  AllowOverride All
  Options MultiViews Indexes SymLinksIfOwnerMatch
  <Limit GET POST OPTIONS>
          Order allow,deny
          Allow from all
  </Limit>
  <LimitExcept GET POST OPTIONS>
          Order deny,allow
          Deny from all
  </LimitExcept>
        </Directory>
</IfModule>


Restart apache.

Dengan ini, setiap user dapat memiliki folder web nya di folder public_html di home foldernya masing-masing. Url nya dapat diakses melalui : http://127.0.0.1/~namauser/.

Disable Directory Listing

Secara default, apache akan memperlihatkan direktori jika tidak dapat menemukan file index.html atau index.php. Untuk alasan keamanan, kita mungkin ingin mendisable hal ini.

Pertama, buka file .httpd.conf

Cari baris berikut

Options Includes Indexes FollowSymLinks MultiViews

Kemudian hapus tulisan Indexes menjadi :

Options Includes FollowSymLinks MultiViews

Restart apache.

Melindungi Direktori dengan Password

Kita dapat melindungi sebuah direktori agar tidak dapat diakses orang yang tidak berhak. Caranya dengan menggunakan file .htaccess

Pertama buat file bernama .htacess di direktori yang ingin kita lindungi. Isi dengan baris berikut :


AuthName "Section Name"
    AuthType Basic
    AuthUserFile /home/username/.htpasswds
    Require valid-user 


baris /home/username/,htpasswds merupakan lokasi file yang berisi username dan password kita.
Buatlah file tersebut.

Kemudian buka situs berikut, isi username dan password anda pada form yang sesuai, kemudian klik create password. maka password akan dienkripsi.

kemudian isi file .htpasswds kita dengan username dan password yang kita dapat dari situs barusan.


username:password


Restart apache.

Nah sekarang, direktori kita sudah terlindungi. Jika user membuka direktori ini lewat web browser, sebuah dialog box akan muncul dan menanyakan username dan password sebelum kita dapat mengaksesnya. Atau alternatifya kita bisa membukanya lewat :

http://username:password@www.website.com/directory/ 
    
Konfigueasi SSL

Ada kalanya kita ingin melindungi website kita dengan SSL untuk alasan keamanan.  Untuk kasus self-signed certificate, kita bisa melakukan langkah berikut :

Pertama, enable SSL di Apache 

sudo a2enmod ssl

Generate file CSR

sudo openssl req -new > new.ssl.csr

Masukkan passphrase, ingat baik-baik, karen akita akan ditanya lagi di langkah berikutnya.

Kemudian kita akan diberikan serangkaian pertanyaan :

Generating a 1024 bit RSA private key
................++++++
........................++++++
writing new private key to 'privkey.pem'
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:Masukkan kode Negara
State or Province Name (full name) [Some-State]:Masukkan nama Provinsi
Locality Name (eg, city) []:Masukkan nama kota
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Masukkan nama instansi 
Organizational Unit Name (eg, section) []:Masukkan nama unit di institusi anda
Common Name (eg, YOUR name) []:Nama lengkap anda
Email Address []:Email anda

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:Kosongi
An optional company name []:Opsional

Kemudian generate certificate nya

sudo openssl rsa -in privkey.pem -out new.cert.key
sudo openssl x509 -in new.ssl.csr -out new.cert.cert -req -signkey new.cert.key -days NNN
sudo cp new.cert.cert /etc/ssl/certs/server.crt
sudo cp new.cert.key /etc/ssl/private/server.key

Ganti NNN dengan jumlah hari certificate ini akan berlaku sebelum expired.

Kemudian lakukan konfigurasi di file situs anda yang ada di sites-available. Contohnya, saya di : /etc/apache2/sites-available/mydomain.net:

NameVirtualHost *:443
NameVirtualHost *:80


    ServerAdmin email address here
    ServerName mydomain.net
    ServerAlias www.mydomain.net
    DocumentRoot /srv/www/mydomain.net/public_html/
    ErrorLog /srv/www/mydomain.net/logs/error.log
    CustomLog /srv/www/mydomain.net/logs/access.log combined



    ServerAdmin 
 jzb@zonker.net
    ServerName mydomain.net
    ServerAlias www.mydomain.net
    DocumentRoot /srv/www/mydomain.net/public_html/

    ErrorLog /srv/www/mydomain.net/logs/error.log
    CustomLog /srv/www/mydomain.net/logs/access.log combined

    SSLEngine on
    SSLOptions +StrictRequire
    SSLCertificateFile /etc/ssl/certs/server.crt
    SSLCertificateKeyFile /etc/ssl/private/server.key

Enable situs anda 

sudo a2ensite mydomain.net

Restart apache.

Nah, sekarang kita bisa membuka situs kita dengan protokol https://www.example.com

0 Comments:

Post a Comment

Popular Posts