Tutorial Apache untuk Pemula
Apa itu Apache?
Apache adalah perangkat lunak aplikasi yang luar biasa. Apache adalah aplikasi Server Web yang paling banyak digunakan di dunia dengan lebih dari 50% pangsa pasar server web komersial. Apache adalah aplikasi Server Web yang paling banyak digunakan dalam sistem operasi mirip Unix tetapi dapat digunakan di hampir semua platform seperti Windows, OS X, OS/2, dll. Kata Apache diambil dari nama suku asli Amerika 'Apache', yang terkenal karena keahliannya dalam peperangan dan pembuatan strategi.
Ini adalah aplikasi server web modular berbasis proses yang membuat thread baru dengan setiap koneksi simultan. Aplikasi ini mendukung sejumlah fitur; banyak di antaranya dikompilasi sebagai modul terpisah dan memperluas fungsionalitas intinya, serta dapat menyediakan segalanya mulai dari dukungan bahasa pemrograman sisi server hingga mekanisme autentikasi. Hosting virtual adalah salah satu fitur yang memungkinkan satu Server Web Apache untuk melayani sejumlah situs web yang berbeda.
Cara menginstal Apache
Ada banyak cara untuk menginstal paket atau aplikasi. Ada yang terdaftar di bawah –
- Salah satu fitur terbuka ini aplikasi web sumber adalah siapa pun dapat membuat penginstal sesuai lingkungan mereka sendiri. Hal ini memungkinkan berbagai vendor seperti Debian, Red Hat, FreeBSD, Suse dll. untuk menyesuaikan lokasi file dan konfigurasi apache dengan mempertimbangkan aplikasi terinstal lainnya dan OS dasar.
- Selain menginstalnya dari penginstal berbasis vendor, selalu ada opsi untuk membuat dan menginstalnya dari kode sumber. Menginstal Apache dari file sumber adalah platform independen & berfungsi untuk semua OS.
Server web Apache adalah aplikasi modular di mana administrator dapat memilih fungsionalitas yang diperlukan dan menginstal modul yang berbeda sesuai kebutuhannya.
Semua modul dapat dikompilasi sebagai a Objek Bersama Dinamis (DSO adalah file objek yang dapat dibagikan oleh beberapa aplikasi saat dijalankan) yang ada secara terpisah dari file apache utama. Pendekatan DSO sangat disarankan, ini membuat tugas menambah/menghapus/memperbarui modul dari konfigurasi server menjadi sangat sederhana.
Instal Apache:Platform Linux
Pada sistem berbasis Red Hat atau rpm
Jika Anda menggunakan rpm (RedHat Package Manager adalah utilitas untuk menginstal aplikasi pada sistem Linux) berbasis distribusi Linux yaitu Red Hat, Fedora, CentOs, Suse, Anda dapat menginstal aplikasi ini baik melalui Package Manager khusus vendor atau langsung membuat file rpm dari tarball sumber yang tersedia.
Anda dapat menginstal Apache melalui Package Manager default yang tersedia di semua distribusi berbasis Red Hat seperti CentOs, Red Hat dan Fedora.
[root@amsterdam ~]# yum install httpd
Tarball sumber apache dapat diubah menjadi file rpm menggunakan perintah berikut.
[root@amsterdam ~]# rpmbuild -tb httpd-2.4.x.tar.bz2
Paket -devel wajib diinstal di server Anda untuk membuat file .rpm dari sumber.
Setelah Anda mengonversi berkas sumber menjadi penginstal rpm, Anda dapat menggunakan perintah berikut untuk menginstal Apache.
[root@amsterdam ~]# rpm –ivh httpd-2.4.4-3.1.x86_64.rpm
Setelah instalasi, server tidak memulai secara otomatis, untuk memulai layanan, Anda harus menggunakan salah satu perintah berikut pada Fedora, CentOs atau Red Hat.
[root@amsterdam ~]# /usr/sbin/apachectl start [root@amsterdam ~]# service httpd start [root@amsterdam ~]# /etc/init.d/httpd start
Instal Apache dari Sumber
Menginstal apache dari sumber memerlukan paket –devel untuk diinstal di server Anda. .Anda dapat menemukan versi terbaru Apache yang tersedia, Anda dapat mengunduhnya di sini . Setelah Anda mengunduh file sumber, pindahkan ke folder /usr/local/src.
[root@amserversterdam ~] cd /usr/local/src [root@amserversterdam ~] gzip -d httpd-2.2.26.tar.gz [root@amserversterdam ~] tar xvf httpd-2.2.26.tar [root@amserversterdam ~] httpd-2.2.26
Untuk melihat semua opsi konfigurasi yang tersedia untuk Apache, Anda dapat menggunakan opsi ./configure –help. Opsi konfigurasi yang paling umum adalah –prefix={install nama direktori}.
[root@amserversterdam ~]./configure --help [root@amserversterdam ~]./configure –prefix=/usr/local/apache –enable-so [root@amserversterdam ~] make [root@amserversterdam ~] make install
Contoh di atas menunjukkan kompilasi Apache dalam direktori /usr/local/apache dengan kemampuan DSO. Opsi –enable-so, dapat memuat modul yang diperlukan ke Apache saat run time melalui mekanisme DSO daripada memerlukan kompilasi ulang.
Setelah instalasi selesai, Anda dapat menjelajahi halaman default server web dengan browser favorit Anda. Jika firewall diaktifkan di server Anda, Anda harus membuat pengecualian untuk port 80 pada firewall OS Anda. Anda dapat menggunakan perintah berikut untuk membuka port 80.
iptables -I INPUT -p tcp --dport 80 -j ACCEPT
layanan iptables disimpan
Anda dapat melihat defaultnya Layar Selamat Datang Apache2 dengan menelusuri alamat IP server Anda.
Apa itu Host Virtual?
Server web Apache dapat meng-host beberapa situs web di SAMA server. Anda tidak memerlukan mesin server dan perangkat lunak Apache terpisah untuk setiap situs web. Hal ini dapat dicapai dengan menggunakan konsep Host Virtual or VHost.
Domain apa pun yang ingin Anda host di server web Anda akan memiliki entri terpisah di file konfigurasi Apache.
Jenis Apache Virtualhost
- Host Virtual berbasis nama
- Host virtual berbasis alamat atau berbasis IP dan.
Host Virtual berbasis nama
Hosting virtual berbasis nama digunakan untuk meng-host beberapa situs virtual pada satu alamat IP.
Untuk mengonfigurasi hosting virtual berbasis nama, Anda harus menetapkan alamat IP yang akan digunakan untuk menerima permintaan Apache untuk semua situs web yang diinginkan. Anda dapat melakukan ini dengan arahan NameVirutalHost dalam konfigurasi Apache yaitu httpd.conf/apache2.conf.
Contoh host virtual Apache:
NameVirtualHost *:80 <VirtualHost 192.168.0.108:80> ServerAdmin webmaster@example1.com DocumentRoot /var/www/html/example1.com ServerName www.example1.com </VirtualHost> <VirtualHost 192.168.0.108:80> ServerAdmin admin@example2.com DocumentRoot /var/www/html/example2.com ServerName www.example2.com </VirtualHost>
Anda dapat menambahkan host virtual sebanyak-banyaknya, sesuai kebutuhan Anda. Anda dapat memeriksa file konfigurasi web Anda dengan:
[root@amsterdam ~]#httpd –t Syntax OK
Jika file konfigurasi memiliki sintaks yang salah, maka akan terjadi kesalahan
[root@115 conf.d]# httpd -t Syntax error on line 978 of /etc/httpd/conf/httpd.conf: Invalid command '*', perhaps misspelled or defined by a module not included in the server configuration
Host virtual berbasis IP
Untuk menyiapkan hosting virtual berbasis IP, Anda memerlukan lebih dari satu alamat IP yang dikonfigurasi di server Anda. Jadi, jumlah vhost apache akan bergantung pada jumlah alamat IP yang dikonfigurasi di server Anda. Jika server Anda memiliki 10 alamat IP, Anda dapat membuat 10 host virtual berbasis IP.
Dalam diagram di atas, dua situs web example1.com dan example2.com diberi IP berbeda dan menggunakan hosting virtual berbasis IP.
Listen 192.168.0.100:80 <VirtualHost 192.168.10.108:80> ServerAdmin webmaster@example1.com DocumentRoot /var/www/html/example1.com ServerName www.example1.com </VirtualHost> <VirtualHost 192.168.10.109:80> ServerAdmin admin@example2.com DocumentRoot /var/www/html/example2.com ServerName www.example2.com </VirtualHost>
Apache apa yang dibutuhkan untuk Menjalankan File Php?
Menjalankan file Php pada kebutuhan Apache mod_php diaktifkan di server Anda. Ini memungkinkan Apache untuk menafsirkan file .Php. Ia memiliki penangan Php yang menafsirkan kode Php di apache dan mengirim HTML ke server web Anda.
Jika mod_php diaktifkan di server Anda, Anda akan memiliki file bernama php.conf di direktori /etc/httpd/conf.d/. Anda juga dapat memeriksanya dengan:
httpd -M | grep "php5_module"
Outputnya akan serupa dengan:
Penangan php di Apache
- mod_php
- CGI
- CGI cepat
- suPHP
mod_phpadalah pengendali PHP tertua, menjadikan PHP bagian dari Apache dan tidak memanggil proses PHP eksternal apa pun. Modul ini terinstal secara default di setiap repositori distribusi Linux, sehingga mengaktifkan/menonaktifkan modul ini sangatlah mudah.
Jika Anda menggunakan CGI cepat sebagai pengendali PHP, Anda dapat mengatur beberapa versi PHP untuk digunakan oleh akun berbeda di server Anda.
FastCGI yaitu mod_fastcgi adalah perpanjangan dari mod_fcgid, dimana mod_fcgid adalah alternatif CGI berkinerja tinggi yaitu mod_cgi . Ini memulai sejumlah contoh CGI yang cukup untuk menangani permintaan web secara bersamaan. Ia juga menggunakan suexec untuk mendukung pengguna yang berbeda dengan contoh PHP mereka sendiri dan meningkatkan keamanan web.
Menjalankan file Ruby di Apache memerlukan mod_ruby untuk diaktifkan. Apache juga dapat menangani file Ruby melalui FastCGI. Dimungkinkan untuk menggunakan beberapa versi Ruby dengan bantuan mod_fcgid yaitu FastCGI.
Anda juga dapat menginstal apache penumpang dan mengkonfigurasi Apache untuk menggunakannya untuk melayani halaman Ruby.
(Penumpang Phusion juga dikenal sebagai “penumpang” adalah modul server web gratis yang dirancang untuk berintegrasi dengan Apache dan Nginx)
Langkah-langkah untuk menginstal mod_ruby di server Anda –
cd /tmp wget http://www.modruby.net/archive/mod_ruby-1.2.6.tar.gz tar zxvf mod_ruby-1.2.6.tar.gz cd mod_ruby-1.2.6/ ./configure.rb --with-apr-includes=/usr/include/apr-1 make make install
Cara menjalankan Ruby dengan Apache
Kita harus menambahkan modul mod_ruby ke konfigurasi Apache yaitu /etc/httpd/conf.d/ruby.conf dan menambahkan baris berikut.
LoadModule ruby_module modul/mod_ruby.so
Jika Anda ingin mengaktifkan atau menonaktifkan modul ini, Anda harus mengedit file konfigurasi Apache dan memberi komentar atau menghapus komentar pada modul ini, jika server web sudah dikompilasi dengan modul ini.
Cara Mengamankan Server Web Apache
Mengamankan server web Anda sangatlah penting, artinya mengizinkan orang lain untuk melihat hanya informasi yang dimaksud & melindungi data Anda serta membatasi akses.
Ini adalah hal umum yang meningkatkan keamanan server web Apache Anda.
1) Menyembunyikan versi Apache dan informasi OS:
Apache menampilkan versi dan nama sistem operasinya dalam kesalahan seperti yang ditunjukkan pada tangkapan layar di bawah.
Seorang peretas dapat menggunakan informasi ini untuk melancarkan serangan menggunakan kerentanan yang tersedia untuk umum di versi server atau OS tertentu.
Untuk mencegah server web Apache menampilkan informasi ini, kita harus memodifikasi
Opsi "tanda tangan server" tersedia di file konfigurasi Apache. Secara default, ini adalah "aktif", kita perlu menyetelnya ke "mati".
vim /etc/httpd/conf/httpd.conf
ServerSignature Off ServerTokens Prod
Kami juga telah menetapkan "ServerTokens Prod" yang memberitahu server web untuk hanya mengembalikan apache dan menyembunyikan versi OS mayor dan minor
Setelah memodifikasi file konfigurasi, Anda harus me-restart/memuat ulang server web Apache Anda agar efektif.
service httpd restart
2) Nonaktifkan Daftar Direktori
Jika direktori root dokumen Anda tidak memiliki file indeks, secara default server web Apache Anda akan menampilkan semua konten direktori root dokumen.
Fitur ini dapat dimatikan untuk direktori tertentu melalui "direktif opsi" yang tersedia di file konfigurasi Apache.
<Directory /var/www/html> Options -Indexes </Directory>
3) Menonaktifkan modul yang tidak diperlukan
Merupakan praktik yang baik untuk menonaktifkan semua modul yang tidak diperlukan dan tidak digunakan. Anda dapat melihat daftar modul yang diaktifkan tersedia di file konfigurasi Apache Anda –
[root@amsterdam ~]#httpd –M perl_module (shared) php5_module (shared) proxy_ajp_module (shared) python_module (shared) ssl_module (shared)
Banyak modul yang terdaftar dapat dinonaktifkan sepertimod_imap, mod_include, mod_info, mod_userdir, mod_autoindex, karena modul tersebut jarang digunakan oleh server web produksi mana pun.
vi /etc/httpd/conf/httpd.conf #LoadModule auth_digest_module modules/mod_auth_digest.so
Setelah Anda mengomentari modul, simpan file tersebut.
Mulai ulang layanan apache dengan perintah berikut.
/etc/init.d/httpd restart
4) Membatasi Akses ke file di luar direktori root web
Jika Anda ingin memastikan bahwa file yang berada di luar direktori root web tidak dapat diakses, Anda harus memastikan bahwa direktori tersebut dibatasi dengan “Izinkan” dan “Opsi Tolak” di file konfigurasi server web Anda.
<Directory/> Options None AllowOverride None Order deny,allow Deny from all </Directory>
Setelah Anda membatasi akses di luar direktori root web, Anda tidak akan dapat mengakses file apa pun yang terletak di folder lain di server web Anda, Anda akan mendapatkan kode pengembalian 404.
5) Menggunakan mod_evasive untuk membantah serangan DoS
Jika Anda ingin melindungi server web Anda dari Dos (yaitu Denial of Service), Anda harus mengaktifkan modul mod_evasive. Ini adalah modul pihak ketiga yang mendeteksi serangan Dos dan mencegah serangan tersebut menimbulkan kerusakan sebanyak yang akan terjadi jika dibiarkan begitu saja. Itu bisa diunduh di sini.
6) Menggunakan mod_security untuk meningkatkan keamanan apache
Modul ini berfungsi sebagai firewall untuk Apache dan memungkinkan Anda memantau lalu lintas secara real time. Ini juga mencegah server web dari serangan brute force. Modul mod_security dapat diinstal dengan manajer paket default distribusi Anda.
7) Membatasi ukuran permintaan
Apache tidak memiliki batasan apa pun pada ukuran total permintaan http yang dapat menyebabkan serangan DoS. Anda dapat membatasi ukuran permintaan direktif Apache “LimitRequestBody” dengan tag direktori. Nilainya dapat diatur mulai dari 0 hingga 2 GB (yaitu 2147483647 byte) sesuai kebutuhan Anda.
<Directory "/var/www/html/uploads"> LimitRequestBody 512000 </Directory>
Format Log Apache
Log Apache memberikan informasi terperinci yang membantu mendeteksi masalah umum pada server.
Untuk membuat log akses, mod_log_configmodule harus diaktifkan.
Tiga arahan tersedia di file konfigurasi Apache yaitu
- TransferLog: Membuat file log.
- LogFormat : Menentukan format khusus.
- CustomLog : Membuat dan memformat file log.
Arahan TransferLog tersedia di file konfigurasi Apache dan memutar file log host virtual sesuai parameter yang ditetapkan.
<VirtualHost www.example.com> ServerAdmin webmaster@example.com DocumentRoot /usr/www/example/httpd/htdocs/ ServerName www.example.com ServerAlias example.com www.example ErrorLog /usr/www/example/httpd/logs/error_log TransferLog/usr/www/example/httpd/logs/accesslog CustomLog /usr/www/example/httpd/logs/accesslog combined </VirtualHost>
Dua jenis Format Log Apache
- Format Log Umum
- Format Log Gabungan.
Anda dapat mengaktifkannya dengan mengedit file konfigurasi apache yaitu apache2.conf (Debian/ubuntu) atau file httpd.conf (sistem berbasis rpm).
Format Log Umum
LogFormat "%h %l %u %t \"%r\" %>s %b" common CustomLog logs/access_log common
Log Umum yang dihasilkan oleh Apache
[Wed Oct 11 14:32:52 2000] [error] [client 127.0.0.1] client denied by server configuration: /export/home/live/ap/htdocs/test
Format Log Gabungan
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\"" combined CustomLog log/access_log combined
Di sini,
- %h adalah host jarak jauh
- %l adalah identitas pengguna yang ditentukan oleh identd
- %u adalah nama pengguna yang ditentukan oleh otentikasi HTTP
- %t adalah waktu server selesai memproses permintaan.
- %r adalah baris permintaan dari klien. (“DAPATKAN / HTTP/1.0”)
- %>s adalah kode status yang dikirim dari server ke klien (500, 404 dst.)
- %b adalah ukuran respon ke klien (dalam byte)
- Referer adalah halaman yang tertaut ke URL ini.
- Agen pengguna adalah string identifikasi browser.
Log Gabungan yang dihasilkan oleh Apache:
199.187.122.91 - - [06/Mar/2014:04:22:58 +0100] "GET /robots.txt HTTP/1.1" 404 1228 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)"
Log Kustom membuat file log terpisah untuk setiap Virtual Host di server Anda. Itu perlu ditentukan di bagian host virtual pada file konfigurasi.
Anda dapat melihat konfigurasi host virtual yang disebutkan di bawah, log yang dihasilkan akan disesuaikan untuk host virtual tersebut dan formatnya akan digabungkan.
Konfigurasikan Server Web Produksi pertama Anda
1. Untuk menjalankan server web produksi, Anda memerlukan server khusus simpul (Instans Fisik/Virtual atau cloud) yang menjalankan Linux/Unix, Windows, MacOS dll.
2. Server Web harus memiliki a koneksi jaringan langsung dan alamat IP statis dikonfigurasi di atasnya.
3. Perlu memiliki semua modul diperlukan untuk menjalankan halaman web. Jika server web memproses halaman PHP, modul PHP harus diaktifkan.
- Itu juga perlu memiliki kebaikan antivirus aplikasi dikonfigurasi dan dijalankan untuk mengamankan Server Web dari serangan Malware atau Virus. Anda juga memerlukan mekanisme untuk melakukannya memperbarui aplikasi antivirus/anti malware yang dikonfigurasi secara teratur tanpa intervensi manual untuk mendapatkan manfaat maksimal darinya.
- Jika Anda memiliki ratusan domain untuk dihosting di server web Anda, Anda harus menerapkannya batasan kuota sistem file untuk setiap domain, jumlah basis data yang dapat dibuat setiap domain, jumlah akun email per domain, dll.
- Jika server web Anda telah diatur layanan hosting bersama, pengguna di server web Anda perlu dibatasi. Pengguna shared hosting harus memiliki hak pengguna paling sedikit sehingga ia tidak merusak file penting & merusak seluruh server. Apache tidak menyediakan fungsionalitas seperti itu dan memerlukan aplikasi pihak ketiga yang berbeda, penyesuaian OS untuk mencapai hal ini.
- Jika Anda menambahkan a domain baru di server web Anda, perlu mengedit ratusan file konfigurasi untuk mengaktifkan semua fitur untuk domain yang ditambahkan.
- Jika salah satu domain yang dihosting memerlukan pengaturan PHP yang berbeda daripada domain lainnya, penerapan ini dalam server web inti Apache sangatlah rumit dan memerlukan kustomisasi server web Anda secara luas.
- Server web produksi memerlukan a firewall untuk memblokir lalu lintas yang tidak diinginkan yang dapat menyebabkan beban tinggi pada server Anda. Menerapkan IPTABLE aturan dengan baris perintah sangatlah rumit. Diperlukan keahlian dalam lingkungan inti Linux/Unix untuk menulis aturan firewall yang efektif guna memblokir lalu lintas yang tidak diinginkan. IPTABLE didasarkan pada modul netfilter; ini adalah firewall tingkat OS yang memungkinkan administrator membuat aturan untuk lalu lintas masuk/keluar di server.
- Server web produksi memerlukan beberapa aplikasi berbeda seperti Email, FTP untuk mengunggah file, Domain Name System untuk domain terparkir. Mengelola semua aplikasi ini pada sistem inti Linux/Unix memerlukan keahlian pada masing-masing teknologi.
Jadi, dapat dikatakan bahwa mengelola server web untuk beberapa domain merupakan tugas yang sangat rumit dan memerlukan pengeditan ratusan file konfigurasi, penyesuaian setiap aplikasi untuk memenuhi hasil yang diinginkan. Pemecahan masalah untuk setiap konfigurasi yang salah akan sangat sulit bagi pemula.
Solusinya menggunakan Cpanel atau software sejenisnya
Cpanel menyediakan cara grafis untuk mengelola server web Anda. cPanel dimaksudkan untuk menyediakan layanan hosting massal yang mudah digunakan dan dikonfigurasi. cPanel telah mengurangi hambatan teknis untuk masuk ke manajemen hosting dan server web. cPanel mempermudah tugas yang rumit, menyediakan banyak antarmuka web yang berguna dan mudah digunakan yang menjalankan tugas administrasi sistem umum yang diperlukan untuk mengoperasikan server web.
cPanel mengkompilasi versi perangkat lunaknya sendiri.
Jika Anda harus mengkompilasi ulang server web Anda yaitu Apache pada platform Linux normal, Anda harus memilih/mencari modul yang diperlukan secara manual. cPanel menyediakan fungsionalitas Easyapache yang merupakan metode kompilasi server web berbasis skrip.
Ini tidak hanya memberi Anda layanan web tetapi juga Mail, DNS, FTP, dan banyak lagi layanan lainnya yang diperlukan untuk aplikasi web Anda.
Tugas yang memerlukan keahlian pada hosting inti berbasis Linux/Unix seperti memasang SSL, mengompilasi ulang Apache dengan modul PHP yang berbeda, memperbarui Keamanan Web, mengonfigurasi aturan IPTABLE yang efektif, Menambahkan pengguna ftp, membuat akun email untuk setiap domain, memindai akar dokumen Anda dengan antivirus dan membuat basis data mudah diselesaikan dengan cPanel.
Ini menyediakan banyak skrip yang memperbaiki, menginstal dan memecahkan masalah tugas administratif umum.
Menyediakan fungsi pencadangan dan pemulihan, sehingga tidak perlu menyalin file secara manual ke penyimpanan cadangan. Jika Anda mencadangkan domain, cPanel akan membuat file tar yang akan berisi folder root dokumen, akun email dan surat, akun ftp, basis data, rekaman DNS, dan aplikasi lainnya.
Ia juga menyediakan dokumentasi yang kuat, dan memiliki komunitas pengguna yang sangat besar tempat Anda dapat berdiskusi dan mendapatkan solusi atas masalah Anda.
Jadi, bisa dikatakan begitu cPanel adalah aplikasi terbaik untuk mengelola server web Anda dengan fitur-fitur yang dibutuhkan. Aplikasi ini menyediakan antarmuka yang mudah digunakan untuk mengelola domain Anda dan mekanisme untuk menghindari kerumitan dalam mengelola Server Web inti.
Ada banyak produk pesaing cPanel seperti Plesk, ISPConfig, Ajenti, Kloxo, Open Panel, Zpanel dll.