Oneliner Built-in Web Server pada Python, PHP dan NodeJS.

1 min read

Disclaimer
Saya bekerja di AWS, semua opini adalah dari saya pribadi. (I work for AWS, my opinions are my own.)
Oneliner web server Python NodeJS PHP
Ilustrasi: Rio Astamal

TeknoCerdas.com – Salam cerdas untuk kita semua. Cukup sering pengembang ingin suatu direktori diakses lewat HTTP untuk satu keperluan. Memodifikasi Apache atau Nginx terasa overkill pun begitu dengan menggunakan Docker. Berikut ini adalah oneliner built-in web server pada Python, PHP dan NodeJS.

Built-in web server ini biasanya berguna ketika kita ingin sharing file dengan device yang lain pada satu jaringan. Kasus lain misalnya kita ingin simulasi static assets URL dan beberapa kasus lain.

Baca Juga
Mengenal WHOIS Protokol dan Cara Kerjanya

Python Web Server

Berikut ini adalah satu baris perintah untuk static web server dengan Python 2.x.

$ python -m SimpleHTTPServer 8000
Serving HTTP on 0.0.0.0 port 8000 ...

Untuk Python 3 module yang digunakan sedikit berbeda. Berikut perintahnya.

$ python3.8 -m http.server 8000
Serving HTTP on :: port 8000 (http://[::]:8000/) ...

Kedua perintah diatas akan menjalankan web server pada port 8000 dengan document root sesuai dengan lokasi perintah yang dijalankan. Kelebihan dari Python module web server adalah sudah terdapat fitur directory listing.

Referensi:
https://docs.python.org/3/library/http.server.html

NodeJS Web Server

NodeJS tidak memiliki pustaka bawaan untuk static web server jadi kita harus membuatnya dari pustaka http yang ada. Kodenya jika dijabarkan dalam beberapa baris seperti berikut:

var fs = require('fs'), http = require('http');
http.createServer(function(req, res) {
  fs.readFile(__dirname + req.url, function(err, data) {
    res.writeHead(200); res.end(data);
  })
}).listen(8000);

Jika dibuat untuk oneliner maka perintahnya.

$ echo "var fs = require('fs'), http = require('http'); http.createServer(function(req, res) { fs.readFile(__dirname + req.url, function(err, data) { res.writeHead(200); res.end(data); })}).listen(8000);" | node

Perintah tersebut akan mengaktifkan web server pada port 8000. Kekurangannya tidak ada directory listing.

Referensi:
https://nodejs.org/en/knowledge/HTTP/servers/how-to-serve-static-files/

PHP Web Server

File binary PHP memiliki opsi untuk menyalakan web server langsung tanpa bantuan kode tambahan. Yaitu dengan menggunakan opsi -S. Berikut adalah perintahnya.

$ php -S 0.0.0.0:8000

Sedikit berbeda dengan Python dan NodeJS, PHP built-in web server tidak hanya berfungsi sebagai static web server tapi juga bisa memproses file dengan ekstensi .php.

Referensi:
https://www.php.net/manual/en/features.commandline.webserver.php

Umumnya developer saat ini hampir dipastikan memiliki salah satu instalasi bahasa pemograman diatas pada mesin mereka. Dengan demikian jika ingin membuat static web server tidak perlu repot untuk konfigurasi Apache atau Nginx cukup gunakan oneliner diatas.