Lighttpd adalah web server free, open-source, serta berkecepatan tinggi yang dirancang khusus untuk lingkungan yang kritis akan kecepatan. Lighttpd membutuhkan jejak memori yang lebih rendah dibandingkan dengan web server lain, seperti Apache dan Nginx, Lighttpd terkenal akan kecepatannya untuk menjalankan aplikasi AJAX.

Lighttpd juga memungkinkan kita untuk meng-host aplikasi web yang ditulis dalam bahasa pemrograman lain menggunakan interface FastCGI, SCGI dan CGI. Lighttpd adalah pilihan terbaik untuk pengguna yang lebih mementingkan kecepatan daripada performa. Terutama untuk web server yang minim akan sumber daya atau hanya menangani sedikit pemrosesan.

Dalam tutorial ini, kita akan belajar cara menginstal Lighttpd pada Debian 10 dengan dukungan PHP-FPM dan MariaDB. Untuk mengamankan lalu lintas ke web server, kita juga akan mengkonfigurasi sertifikat SSL Let’s Encrypt.

Persyaratan

  • Server yang menjalankan Debian 10.
  • Kata sandi root diatur ke server Anda.
Dalam tutorial ini, kita akan nama domain example.com. Ganti example.com di semua nama file dan pengaturan konfigurasi dengan nama domain Anda sendiri.

Langkah Awal

Sebelum memulai, Anda perlu memperbarui sistem dengan versi terbaru. Anda dapat melakukan ini dengan menjalankan perintah berikut:

apt-get update && apt-get upgrade -y

Setelah server diperbarui, restart server untuk menerapkan perubahan dan meminimalisir kesalahan.

Instal Lighttpd

Secara default, Lighttpd tersedia di repositori default Debian 10. Anda dapat menginstalnya dengan hanya menjalankan perintah berikut:

apt-get install lighttpd -y

Setelah instalasi selesai, mulai layanan Lighttpd dan aktifkan untuk memulai setelah sistem reboot dengan perintah berikut:

systemctl start lighttpd
 systemctl enable lighttpd

Periksa status Lighttpd dengan perintah berikut:

systemctl status lighttpd

Anda akan mendapatkan output berikut:

? lighttpd.service - Lighttpd Daemon
   Loaded: loaded (/lib/systemd/system/lighttpd.service; enabled; vendor preset: enabled)
   Active: active (running) since Fri 2019-09-06 02:09:35 EDT; 29s ago
 Main PID: 4445 (lighttpd)
    Tasks: 1 (limit: 1138)
   Memory: 1.4M
   CGroup: /system.slice/lighttpd.service
           ??4445 /usr/sbin/lighttpd -D -f /etc/lighttpd/lighttpd.conf

Sep 06 02:09:35 debian systemd[1]: Starting Lighttpd Daemon...
Sep 06 02:09:35 debian systemd[1]: Started Lighttpd Daemon.
Sep 06 02:09:36 debian systemd[1]: /lib/systemd/system/lighttpd.service:6: PIDFile= references path below legacy directory /var/run/, updating 
lines 1-12/12 (END)

Setelah selesai, Anda dapat melanjutkan ke langkah berikutnya.

Instal MariaDB Server

Anda dapat menginstal server MariaDB dengan menjalankan perintah berikut:

apt-get install mariadb-server mariadb-client -y

Setelah diinstal, Anda harus mengamankan instalasi MariaDB. Anda dapat mengamankannya dengan menjalankan skrip berikut:

mysql_secure_installation
Answer all the questions as shown below:
Change the root password? [Y/n] n
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y

Setelah selesai, Anda dapat melanjutkan ke langkah berikutnya.

Instal PHP dan PHP-FPM

Selanjutnya, Anda perlu menginstal PHP, PHP-FPM, dan FastCGI ke sistem Anda. Secara default, Debian 10 dikirimkan dengan PHP versi 7.3. Anda dapat menginstalnya dengan hanya menjalankan perintah berikut:

apt-get install php php-cgi php-fpm php-mysql -y

Setelah semua paket diinstal, Anda perlu mengedit file php.ini dan mengatur cgi.fix_pathinfo ke 1. Anda dapat melakukannya dengan perintah berikut:

nano /etc/php/7.3/fpm/php.ini

Ubah baris berikut:

cgi.fix_pathinfo=1

Simpan dan tutup file setelah selesai.

Secara default, PHP menunjuk ke UNIX soket  /var/run/php/php7.3-fpm.sock. Jadi, Anda perlu mengkonfigurasi PHP-FPM pool untuk mengatur PHP untuk listens pada TCP socket.

Anda dapat melakukan ini dengan mengedit file /etc/php/7.3/fpm/pool.d/www.conf:

nano /etc/php/7.3/fpm/pool.d/www.conf

Temukan baris berikut:

listen = /run/php/php7.3-fpm.sock

Ganti baris berikut

listen = 127.0.0.1:9000

Simpan dan tutup file setelah selesai. Kemudian, restart layanan PHP-FPM untuk menerapkan perubahan konfigurasi:

systemctl restart php7.3-fpm

Selanjutnya, kita perlu memodifikasi file 15-fastcgi-php.conf:

nano /etc/lighttpd/conf-available/15-fastcgi-php.conf

Temukan baris berikut:

"bin-path" => "/usr/bin/php-cgi",
"socket" => "/var/run/lighttpd/php.socket",

Dan gantilah dengan yang berikut ini:

"host" => "127.0.0.1",
"port" => "9000",

Simpan dan tutup file setelah selesai. Kemudian, aktifkan modul FastCGI dan FastCGI-PHP dengan perintah berikut:

lighty-enable-mod fastcgi
 lighty-enable-mod fastcgi-php

Terakhir, restart layanan Lighttpd untuk menerapkan perubahan:

systemctl restart lighttpd

Buat Lighttpd Virtual Host

Selanjutnya, Anda perlu membuat file virtual host baru untuk menguji PHP dengan Lighttpd. Anda dapat membuatnya dengan perintah berikut:

nano /etc/lighttpd/conf-available/example.com.conf

Tambahkan baris berikut:

$HTTP["host"] == "www.example.com" {
    server.document-root = "/var/www/html/"
    server.errorlog      = "/var/log/lighttpd/example.com-error.log"
}

Simpan dan tutup file setelah selesai. Kemudian, aktifkan Virtual host dengan perintah berikut:

ln -s /etc/lighttpd/conf-available/example.com.conf /etc/lighttpd/conf-enabled/

Selanjutnya, buat file sample index.php di direktori root dokumen Lighttpd dengan perintah berikut:

nano /var/www/html/index.php

Tambahkan baris berikut:

<?php phpinfo(); ?>

Simpan dan tutup file. Kemudian, ubah kepemilikan direktori root dokumen Lighttpd ke www-data dengan perintah berikut:

chown -R www-data:www-data /var/www/html/

Terakhir, restart layanan Lighttpd untuk menerapkan semua perubahan konfigurasi:

systemctl restart lighttpd

Amankan Lighttpd dengan Let’s Encrypt

Pertama, instal Certbot tool untuk mengamankan web server dengan Let’s Encrypt. Secara default, versi terbaru Certbot tidak tersedia di repositori default Debian 10.

Anda dapat menambahkan repositori Certbot dengan perintah berikut:

apt-get install software-properties-common
add-apt-repository ppa:certbot/certbot

Selanjutnya, perbarui repositori dan instal Certbot dengan perintah berikut:

apt-get update -y
apt-get install certbot -y

Selanjutnya, buat sertifikat Let’s Encrypt dengan perintah berikut:

certbot certonly --webroot -w /var/www/html/ -d www.example.com

Anda akan diminta untuk memberikan alamat email dan menerima ketentuan lisensi seperti yang ditunjukkan di bawah ini:

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator webroot, Installer None
Enter email address (used for urgent renewal and security notices) (Enter 'c' to
cancel): [email protected]

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server at
https://acme-v02.api.letsencrypt.org/directory
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(A)gree/(C)ancel: A

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing 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: Y

Setelah sertifikat berhasil diunduh, Anda akan melihat output berikut:

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/example.com/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/example.com/privkey.pem
   Your cert will expire on 2019-12-06. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot
   again. To non-interactively renew *all* of your certificates, run
   "certbot renew"
 - 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

Selanjutnya, Anda harus menggabungkan sertifikat dan private key dalam satu file. Anda dapat melakukannya dengan perintah berikut:

cat /etc/letsencrypt/live/example.com/cert.pem /etc/letsencrypt/live/example.com/privkey.pem > /etc/letsencrypt/live/example.com/web.pem

Selanjutnya, Anda perlu mengedit file virtual host Lighttpd dan menentukan jalur Let’s Encrypt.

Anda dapat melakukannya dengan perintah berikut:

nano /etc/lighttpd/conf-enabled/example.com.conf

Ubah file seperti yang ditunjukkan di bawah ini:

$HTTP["host"] == "www.example.com" {
    server.document-root = "/var/www/html/"
}

$SERVER["socket"] == ":443" {
ssl.engine = "enable"
ssl.pemfile = "/etc/letsencrypt/live/example.com/web.pem" # Combined Certificate
ssl.ca-file = "/etc/letsencrypt/live/example.com/chain.pem" # Root CA
server.name = "www.example.com" # Domain Name OR Virtual Host Name
server.document-root = "/var/www/html/" # Document Root
server.errorlog = "/var/log/lighttpd/example.com_error.log"
accesslog.filename = "/var/log/lighttpd/example.com_access.log"
}

$HTTP["scheme"] == "http" {
$HTTP["host"] == "www.example.com" { # HTTP URL
url.redirect = ("/.*" => "https://www.example.com$0") # Redirection HTTPS URL
}
}

Simpan dan tutup file. Kemudian restart layanan Lighttpd untuk menerapkan perubahan konfigurasi:

systemctl restart lighttpd

Akses Web Interface Lighttpd

Lighttpd telah diinstal dan dikonfigurasi dengan dukungan PHP dan PHP-FPM. Sekarang, saatnya untuk mengujinya.

Buka web browser dan ketik URL https://www.example.com. Anda akan diarahkan ke halaman berikut:

PHP Info

Halaman di atas menunjukkan bahwa PHP dan FastCGI telah berfungsi dengan baik.

Kesimpulan

Pada poin ini, instal dan konfigurasi server web Lighttpd dengan dukungan PHP-FPM dan FastCGI di Debian 10 telah berhasil. Sekarang Anda dapat meng-host aplikasi web server dengan mudah. Untuk informasi lebih lanjut, kunjungi halaman dokumentasi resmi Lighttpd di Lighttpd Doc.