![]()
Panduan ini akan memandu Anda melakukan setup server web dari nol: mulai dari instalasi PHP 8.3, Composer, konfigurasi Nginx sebagai web server, hingga mengamankan situs dengan sertifikat SSL gratis dari Let's Encrypt. Cocok digunakan pada server berbasis Debian atau Ubuntu (termasuk VPS).
1. Instalasi PHP 8.3
Secara default, repositori bawaan Debian/Ubuntu sering kali belum menyediakan versi PHP terbaru. Karena itu, kita akan menambahkan repositori pihak ketiga yang terpercaya dan aktif dirawat, yaitu PPA milik Ondřej Surý.
Langkah 1: Install tools pendukung repositori
sudo apt-get install software-properties-common
Paket ini dibutuhkan agar sistem bisa menambah dan mengelola repositori tambahan (PPA).
Langkah 2: Tambahkan repositori PHP
sudo add-apt-repository ppa:ondrej/php
Perintah ini menambahkan PPA Ondřej Surý, sumber PHP yang paling umum digunakan karena selalu update dan stabil.
Langkah 3: Update daftar paket
sudo apt-get update
Wajib dilakukan setiap kali menambah repositori baru, agar sistem mengenali paket-paket yang tersedia di dalamnya.
Langkah 4: Install PHP 8.3
sudo apt-get install php8.3
Khusus pengguna Debian 12: kadang perintah
add-apt-repositorytidak berjalan mulus di Debian. Jika mengalami kendala, tambahkan repositori secara manual dengan langkah berikut:
apt -y install lsb-release apt-transport-https ca-certificates
wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | tee /etc/apt/sources.list.d/php.list
Baris terakhir otomatis mendeteksi versi Debian yang digunakan lewat $(lsb_release -sc), sehingga repositori yang ditambahkan selalu sesuai.
2. Instalasi Ekstensi PHP yang Umum Dibutuhkan
Setelah PHP terpasang, sebagian besar framework atau aplikasi modern (seperti Laravel) membutuhkan beberapa ekstensi tambahan agar berjalan optimal.
sudo apt install -y php8.3 php8.3-cli php8.3-mbstring php8.3-xml php8.3-bcmath php8.3-zip php8.3-tokenizer php8.3-curl php8.3-intl php8.3-sqlite3 php8.3-xmlrpc unzip curl
3. Instalasi Composer
Composer adalah dependency manager untuk PHP - alat wajib untuk mengelola library dan package di proyek PHP modern (Laravel, Symfony, dll).
Langkah 1: Unduh installer
cd ~
curl -sS https://getcomposer.org/installer -o /tmp/composer-setup.php
Langkah 2: Verifikasi keaslian installer
Demi keamanan, selalu verifikasi hash SHA-384 installer sebelum menjalankannya, untuk memastikan file tidak rusak atau dimodifikasi pihak tak bertanggung jawab.
HASH=`curl -sS https://composer.github.io/installer.sig`
php -r "if (hash_file('SHA384', '/tmp/composer-setup.php') === '$HASH') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
Jika hasilnya Installer verified, artinya file aman untuk dijalankan. Jika Installer corrupt, file installer otomatis dihapus dan sebaiknya diunduh ulang.
Langkah 3: Jalankan installer
sudo php /tmp/composer-setup.php --install-dir=/usr/local/bin --filename=composer
Setelah ini, Composer bisa dipanggil dari direktori mana pun dengan perintah composer.
4. Setup Nginx sebagai Web Server
Langkah 1: Install Nginx
apt install nginx
Langkah 2: Buat direktori website
Ganti domain.com dengan nama domain Anda sendiri.
mkdir -p /var/www/domain.com
chown root:root -R /var/www/domain.com
chmod 755 -R /var/www/domain.com
mkdir -pmembuat folder beserta parent folder-nya jika belum ada.chownmengatur kepemilikan folder ke user/grouproot.chmod 755mengatur izin akses: pemilik bisa baca/tulis/eksekusi, sedangkan group dan lainnya hanya bisa baca/eksekusi.
Langkah 3: Buat konfigurasi server block
nano /etc/nginx/sites-available/domain.com
Contoh konfigurasi untuk aplikasi PHP:
server {
server_name domain.com www.domain.com;
root /var/www/domain.com/public;
add_header X-Frame-Options "SAMEORIGIN";
add_header X-XSS-Protection "1; mode=block";
add_header X-Content-Type-Options "nosniff";
index index.html index.htm index.php;
charset utf-8;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location = /favicon.ico { access_log off; log_not_found off; }
location = /robots.txt { access_log off; log_not_found off; }
error_page 404 /index.php;
location ~ \.php$ {
fastcgi_pass unix:/var/run/php/php8.3-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
include fastcgi_params;
}
}
Penjelasan bagian penting:
server_name- domain yang akan dilayani oleh blok konfigurasi ini.root- direktori tempat file website berada.- Header
X-Frame-Options,X-XSS-Protection,X-Content-Type-Options- lapisan keamanan dasar untuk mencegah clickjacking, serangan XSS, dan MIME sniffing. try_files- Nginx akan mencari file/folder sesuai URL; jika tidak ditemukan, request dialihkan keindex.php(pola umum untuk aplikasi berbasis router seperti Laravel).location ~ \.php$- mengatur bagaimana file.phpdiproses lewat PHP-FPM melalui socket.
Contoh konfigurasi untuk aplikasi Node.js (reverse proxy):
server {
root /var/www/html;
index index.html index.htm index.nginx-debian.html;
server_name domain.com;
location / {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_cache_bypass $http_upgrade;
}
}
Konfigurasi ini meneruskan (proxy) semua request ke aplikasi Node.js yang berjalan di localhost:3000 - termasuk mendukung koneksi WebSocket lewat header Upgrade dan Connection.
Langkah 4: Aktifkan konfigurasi (symlink)
ln -s /etc/nginx/sites-available/domain.com /etc/nginx/sites-enabled/domain.com
Jika ada konfigurasi default bawaan Nginx, sebaiknya dihapus agar tidak terjadi konflik:
rm /etc/nginx/sites-enabled/default
Langkah 5: Uji dan restart Nginx
nginx -t
systemctl restart nginx
nginx -t akan memeriksa apakah ada kesalahan sintaks pada konfigurasi sebelum diterapkan. Jika hasilnya syntax is ok dan test is successful, aman untuk restart.
5. Setup SSL dengan Certbot (Let's Encrypt)
Langkah 1: Install Certbot
sudo apt install certbot python3-certbot-nginx
Certbot adalah tools gratis dan open-source untuk mengurus penerbitan serta pembaruan sertifikat SSL secara otomatis.
Langkah 2: Sesuaikan aturan firewall (UFW)
sudo ufw allow 'Nginx Full'
sudo ufw delete allow 'Nginx HTTP'
sudo ufw status
Perintah di atas membuka akses HTTP dan HTTPS, sekaligus menghapus aturan lama yang hanya mengizinkan HTTP saja.
Langkah 3: Terbitkan sertifikat SSL
sudo certbot --nginx -d example.com -d www.example.com
Ganti example.com dan www.example.com dengan domain Anda. Certbot akan otomatis mengonfigurasi ulang Nginx agar situs berjalan dengan HTTPS.
Langkah 4: Pastikan auto-renewal aktif
Sertifikat Let's Encrypt hanya berlaku 90 hari, sehingga proses perpanjangan otomatis wajib dipastikan berjalan.
sudo systemctl status certbot.timer
Cek status timer yang bertugas memperbarui sertifikat secara berkala.
sudo certbot renew --dry-run
Perintah ini mensimulasikan proses renewal tanpa benar-benar memperbarui sertifikat - cara aman untuk memastikan mekanisme auto-renewal berfungsi dengan baik.
Ringkasan Alur
- Tambahkan repositori PHP → install PHP 8.3 beserta ekstensinya.
- Install Composer untuk mengelola dependency proyek PHP.
- Install dan konfigurasikan Nginx sebagai web server, arahkan ke folder project.
- Amankan situs dengan sertifikat SSL gratis dari Certbot/Let's Encrypt.
- Pastikan auto-renewal SSL berjalan agar sertifikat tidak pernah kedaluwarsa.
Dengan langkah-langkah di atas, server siap menjalankan aplikasi PHP (maupun Node.js) secara aman dengan koneksi HTTPS.