Mendeploy aplikasi PHP ke VPS Ubuntu adalah langkah krusial bagi banyak developer dan startup. Ini bukan hanya sekadar mengunggah file, tetapi melibatkan konfigurasi server, database, dan memastikan aplikasi berjalan dengan aman serta optimal. Jika Anda seorang web developer, freelancer, atau mahasiswa IT yang ingin membawa aplikasi PHP Anda live, panduan ini akan memandu Anda melalui setiap langkah, mulai dari persiapan server hingga aplikasi Anda bisa diakses publik.
Meskipun terlihat kompleks pada awalnya, proses deployment ini sebenarnya logis dan terstruktur. Dengan mengikuti panduan ini, Anda akan memiliki pemahaman yang kuat tentang bagaimana membangun infrastruktur web sendiri di lingkungan VPS Ubuntu.
Prasyarat Sebelum Deploy Aplikasi PHP
Sebelum kita mulai menggali terminal, ada beberapa hal yang perlu Anda siapkan:
- VPS Ubuntu Aktif: Pastikan Anda memiliki VPS dengan sistem operasi Ubuntu (disarankan versi LTS seperti 22.04 atau 24.04). Spesifikasi minimal RAM 1GB biasanya cukup untuk aplikasi PHP skala kecil-menengah.
- Akses SSH: Anda harus bisa mengakses VPS Anda melalui SSH. Biasanya, ini dilakukan dengan username root dan password, atau lebih baik lagi, dengan kunci SSH.
- Aplikasi PHP Anda: Siapkan aplikasi PHP yang sudah Anda kembangkan dan siap untuk dideploy. Pastikan semua dependensi (jika ada, seperti via Composer) sudah tercatat.
- Nama Domain (Opsional tapi Direkomendasikan): Jika Anda ingin aplikasi Anda diakses melalui nama domain kustom (misalnya,
tubianto.com), pastikan Anda sudah memilikinya dan bisa mengelola DNS. - Pengetahuan Dasar Linux: Sedikit familiaritas dengan perintah dasar Linux akan sangat membantu.
Langkah 1: Persiapan Awal Server Ubuntu
Langkah pertama adalah menyiapkan VPS Anda agar aman dan up-to-date.
Update Sistem Operasi
Selalu mulai dengan memperbarui paket-paket sistem. Ini memastikan semua perangkat lunak Anda terbaru dan aman.
sudo apt update
sudo apt upgrade -y
Buat User Baru dan Konfigurasi SSH
Menggunakan user non-root untuk pekerjaan sehari-hari adalah praktik keamanan terbaik.
- Buat user baru: Ganti
nama_user_barudengan username pilihan Anda.sudo adduser nama_user_baruIkuti prompt untuk mengatur password dan informasi lainnya.
- Berikan hak sudo: Agar user baru bisa menjalankan perintah dengan hak superuser.
sudo usermod -aG sudo nama_user_baru - Login sebagai user baru: Keluar dari sesi root dan login lagi dengan user baru.
exitLalu, login kembali dengan
ssh nama_user_baru@IP_VPS_Anda. - Konfigurasi SSH (Opsional tapi Sangat Direkomendasikan): Untuk keamanan lebih, nonaktifkan login root dan gunakan SSH Key.
- Nonaktifkan login root: Edit file konfigurasi SSH:
sudo nano /etc/ssh/sshd_configCari baris
PermitRootLogin yesdan ubah menjadiPermitRootLogin no. - Konfigurasi SSH Key: Jika Anda belum menggunakannya, ini adalah waktu yang tepat. Ikuti panduan untuk generate SSH key di lokal Anda dan tambahkan public key ke file
~/.ssh/authorized_keysdi VPS Anda. - Restart layanan SSH:
sudo systemctl restart ssh
- Nonaktifkan login root: Edit file konfigurasi SSH:
Instal dan Konfigurasi Firewall (UFW)
Firewall akan membatasi akses ke port-port tertentu, meningkatkan keamanan server Anda.
sudo apt install ufw
sudo ufw allow OpenSSH
sudo ufw allow 'Nginx HTTP' # Atau 'Apache' jika Anda memilih Apache
sudo ufw enable
sudo ufw status
Pastikan Anda mengizinkan OpenSSH sebelum mengaktifkan UFW, agar Anda tidak terkunci dari server.
Langkah 2: Instalasi Komponen Web Server (LEMP Stack)
Ada dua pilihan utama untuk web server: Nginx atau Apache. Nginx (LEMP Stack: Linux, Nginx, MySQL, PHP) umumnya direkomendasikan untuk aplikasi modern karena performanya yang lebih baik dalam menangani concurrent connections dan efisiensinya. Apache (LAMP Stack: Linux, Apache, MySQL, PHP) lebih mudah dikonfigurasi dan cocok untuk pemula atau aplikasi yang bergantung pada .htaccess.
Dalam panduan ini, kita akan fokus pada Nginx. Jika Anda memilih Apache, prosesnya akan sedikit berbeda.
Instalasi Nginx
sudo apt install nginx -y
sudo systemctl start nginx
sudo systemctl enable nginx
sudo systemctl status nginx
Setelah instalasi, buka browser dan akses http://IP_VPS_Anda. Anda seharusnya melihat halaman “Welcome to Nginx!”.
Instalasi PHP dan PHP-FPM
Nginx tidak memproses file PHP secara langsung; ia meneruskannya ke PHP-FPM (FastCGI Process Manager). Kita akan menginstal PHP versi terbaru yang stabil, misalnya PHP 8.2 atau 8.3.
sudo apt install php-fpm php-mysql php-cli php-mbstring php-zip php-dom php-curl -y
sudo systemctl start php8.2-fpm # Sesuaikan dengan versi PHP Anda, misal php8.3-fpm
sudo systemctl enable php8.2-fpm
sudo systemctl status php8.2-fpm
Instalasi php-fpm akan memasang versi PHP default dari repository Ubuntu. Jika Anda butuh versi yang lebih spesifik atau lebih baru, Anda mungkin perlu menambahkan PPA (Personal Package Archive) seperti Ondrej Sury.
Konfigurasi PHP (Opsional)
Anda mungkin perlu menyesuaikan beberapa pengaturan PHP di php.ini, terutama untuk aplikasi yang mengunggah file besar atau membutuhkan lebih banyak memori.
sudo nano /etc/php/8.2/fpm/php.ini
Cari dan sesuaikan nilai-nilai berikut:
upload_max_filesize = 32M(atau lebih besar jika perlu)post_max_size = 32Mmemory_limit = 256M(atau lebih besar, tergantung kebutuhan aplikasi)max_execution_time = 300(atau lebih, untuk proses yang panjang)
Setelah perubahan, jangan lupa restart PHP-FPM:
sudo systemctl restart php8.2-fpm
Instalasi MySQL/MariaDB Server
Database adalah tulang punggung sebagian besar aplikasi web.
sudo apt install mysql-server -y
sudo systemctl start mysql
sudo systemctl enable mysql
sudo systemctl status mysql
Setelah instalasi, jalankan skrip keamanan untuk mengamankan instalasi MySQL Anda:
sudo mysql_secure_installation
Ikuti prompt. Disarankan untuk:
- Mengatur password root yang kuat.
- Menghapus user anonim.
- Menonaktifkan login root dari jarak jauh.
- Menghapus database test.
Buat Database dan User untuk Aplikasi Anda
Masuk ke MySQL sebagai root:
sudo mysql -u root -p
Masukkan password root yang sudah Anda atur. Lalu, jalankan perintah berikut:
CREATE DATABASE nama_database_aplikasi;
CREATE USER 'nama_user_db'@'localhost' IDENTIFIED BY 'password_kuat_db';
GRANT ALL PRIVILEGES ON nama_database_aplikasi.* TO 'nama_user_db'@'localhost';
FLUSH PRIVILEGES;
EXIT;
Ganti nama_database_aplikasi, nama_user_db, dan password_kuat_db dengan detail yang sesuai untuk aplikasi Anda.
Langkah 3: Transfer Aplikasi PHP ke VPS
Ada beberapa cara untuk memindahkan file aplikasi Anda ke VPS.
Menggunakan Git (Disarankan)
Jika aplikasi Anda menggunakan Git (misalnya, GitHub, GitLab, Bitbucket), ini adalah cara paling efisien.
sudo apt install git -y
cd /var/www/
sudo git clone URL_REPO_ANDA nama_folder_aplikasi
Pastikan Anda memiliki akses yang benar ke repositori (SSH key atau token pribadi jika repositori privat).
Menggunakan SFTP (FileZilla, WinSCP)
Jika aplikasi Anda tidak di Git, Anda bisa menggunakan SFTP client seperti FileZilla atau WinSCP untuk mengunggah file.
- Hubungkan ke VPS Anda menggunakan SFTP (biasanya port 22).
- Navigasi ke direktori
/var/www/di VPS. - Unggah folder aplikasi Anda ke sana. Contoh:
/var/www/nama_aplikasi.
Langkah 4: Konfigurasi Aplikasi PHP
Setelah file berada di server, beberapa konfigurasi mungkin diperlukan.
Instal Composer (Jika Diperlukan)
Banyak aplikasi PHP modern menggunakan Composer untuk manajemen dependensi.
cd ~
curl -sS https://getcomposer.org/installer -o composer-setup.php
sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer
rm composer-setup.php
Sekarang, masuk ke direktori aplikasi Anda dan instal dependensi:
cd /var/www/nama_folder_aplikasi
composer install --no-dev --optimize-autoloader
Konfigurasi Lingkungan Aplikasi
Jika Anda menggunakan framework seperti Laravel, Anda perlu mengkonfigurasi file .env Anda. Salin file contoh:
cp .env.example .env
nano .env
Ubah detail database, APP_KEY, dan pengaturan lain yang relevan. Jangan lupa jalankan command untuk menghasilkan APP_KEY (khusus Laravel):
php artisan key:generate
Migrasi database jika diperlukan:
php artisan migrate
Set Permission Direktori
Direktori tertentu (misalnya, storage dan bootstrap/cache di Laravel) memerlukan izin tulis agar web server dapat mengaksesnya.
sudo chown -R www-data:www-data /var/www/nama_folder_aplikasi
sudo chmod -R 775 /var/www/nama_folder_aplikasi/storage
sudo chmod -R 775 /var/www/nama_folder_aplikasi/bootstrap/cache
Pastikan user www-data (user default Nginx/Apache) memiliki izin yang cukup.
Langkah 5: Konfigurasi Nginx untuk Aplikasi Anda
Kita perlu membuat “server block” baru di Nginx untuk melayani aplikasi PHP Anda.
- Buat file konfigurasi baru:
sudo nano /etc/nginx/sites-available/nama_aplikasi.conf - Isi file dengan konfigurasi Nginx berikut:
server {
listen 80;
server_name IP_VPS_ANDA_ATAU_DOMAIN_ANDA www.DOMAIN_ANDA;
root /var/www/nama_folder_aplikasi/public; # Sesuaikan dengan direktori public aplikasi Anda
index index.php index.html index.htm;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.2-fpm.sock; # Sesuaikan dengan versi PHP Anda
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.ht {
deny all;
}
}
Ganti IP_VPS_ANDA_ATAU_DOMAIN_ANDA dan DOMAIN_ANDA dengan yang sesuai. Pastikan root mengarah ke direktori publik aplikasi Anda (misalnya, public di Laravel atau web di Symfony).
- Aktifkan server block ini: Buat symlink dari
sites-availablekesites-enabled.sudo ln -s /etc/nginx/sites-available/nama_aplikasi.conf /etc/nginx/sites-enabled/ - Uji konfigurasi Nginx:
sudo nginx -tJika ada kesalahan, perbaiki sebelum melanjutkan.
- Restart Nginx:
sudo systemctl restart nginx
Sekarang, coba akses aplikasi Anda melalui http://IP_VPS_Anda atau http://DOMAIN_ANDA.
Langkah 6: Konfigurasi Domain dan SSL (Opsional tapi Sangat Direkomendasikan)
Menggunakan domain kustom dan SSL (HTTPS) adalah standar industri untuk keamanan dan kredibilitas.
Konfigurasi DNS
Di panel penyedia domain Anda, tambahkan atau ubah “A record” untuk domain Anda agar mengarah ke IP Address VPS Anda. Jika Anda ingin menggunakan subdomain (misalnya, app.domainanda.com), buat A record untuk subdomain tersebut.
Instal Certbot dan Let’s Encrypt SSL
Certbot membuat proses mendapatkan dan memperbarui sertifikat SSL dari Let’s Encrypt menjadi sangat mudah.
sudo snap install core
sudo snap refresh core
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot
Kemudian, jalankan Certbot untuk Nginx:
sudo certbot --nginx -d DOMAIN_ANDA -d www.DOMAIN_ANDA
Ikuti prompt. Certbot akan secara otomatis memodifikasi konfigurasi Nginx Anda untuk mengaktifkan HTTPS dan menginstal sertifikat.
Uji pembaharuan otomatis SSL:
sudo certbot renew --dry-run
Jika semua berjalan lancar, sekarang aplikasi Anda seharusnya dapat diakses melalui https://DOMAIN_ANDA.
Masalah yang Sering Terjadi
Dalam praktiknya, deployment jarang sekali berjalan mulus tanpa hambatan. Berikut adalah beberapa masalah umum yang sering saya temui saat mendeploy aplikasi PHP:
-
Error 502 Bad Gateway (Nginx)
- Gejala: Browser menampilkan “502 Bad Gateway” saat mengakses aplikasi.
- Penyebab: Ini seringkali berarti Nginx tidak dapat berkomunikasi dengan PHP-FPM. Bisa jadi PHP-FPM tidak berjalan, salah konfigurasi, atau socket yang disebut di konfigurasi Nginx salah.
- Solusi:
- Periksa status PHP-FPM:
sudo systemctl status php8.2-fpm(sesuaikan versi PHP). Pastikan sedang ‘running’. - Periksa log PHP-FPM:
sudo tail -f /var/log/php8.2-fpm.logatau/var/log/syslog. - Pastikan jalur
fastcgi_passdi konfigurasi Nginx Anda (/etc/nginx/sites-available/nama_aplikasi.conf) sudah benar dan sesuai dengan socket PHP-FPM yang aktif (biasanyaunix:/run/php/php8.2-fpm.sock). - Restart PHP-FPM dan Nginx setelah koreksi:
sudo systemctl restart php8.2-fpm nginx.
- Periksa status PHP-FPM:
-
Error 403 Forbidden
- Gejala: Browser menampilkan “403 Forbidden” saat mencoba mengakses aplikasi atau direktori tertentu.
- Penyebab: Izin file atau direktori tidak benar, sehingga web server (Nginx/Apache) tidak memiliki hak untuk membaca atau menulis ke lokasi tersebut. Ini juga bisa terjadi jika
index.phptidak ditemukan di direktori root yang ditentukan. - Solusi:
- Pastikan direktori root aplikasi di konfigurasi Nginx sudah benar.
- Periksa izin direktori aplikasi:
sudo chown -R www-data:www-data /var/www/nama_folder_aplikasidansudo chmod -R 755 /var/www/nama_folder_aplikasi. Untuk direktori yang membutuhkan hak tulis (misal:storageataucachedi Laravel), gunakansudo chmod -R 775 /var/www/nama_folder_aplikasi/storage.
-
Error 404 Not Found (Routing/Framework Issues)
- Gejala: Halaman utama atau halaman tertentu tidak ditemukan, padahal file ada.
- Penyebab: Web server tidak diarahkan dengan benar untuk menangani URL yang tidak langsung merujuk ke file fisik. Ini umum terjadi pada framework PHP seperti Laravel atau CodeIgniter yang menggunakan rewrite rules (contoh:
/artikel/slugsebenarnya merujuk keindex.php). - Solusi:
- Pastikan bagian
location / { try_files $uri $uri/ /index.php?$query_string; }di konfigurasi Nginx sudah ada dan benar. Ini akan memastikan semua permintaan yang tidak cocok dengan file fisik akan diteruskan keindex.php. - Jika menggunakan Apache, pastikan modul
mod_rewriteaktif dan file.htaccessAnda sudah benar.
- Pastikan bagian
-
Database Connection Error
- Gejala: Aplikasi gagal terhubung ke database.
- Penyebab: Kredensial database (username, password, nama database, host) di file konfigurasi aplikasi (misal:
.env) salah, atau MySQL server tidak berjalan, atau port MySQL tidak terbuka. - Solusi:
- Periksa kredensial di file konfigurasi aplikasi Anda (
.env). Pastikan cocok dengan user dan database yang Anda buat di MySQL. - Pastikan MySQL server berjalan:
sudo systemctl status mysql. - Pastikan user database memiliki izin yang benar untuk mengakses database aplikasi Anda (gunakan
GRANT ALL PRIVILEGES...). - Jika menggunakan
localhostsebagai host database, itu sudah benar untuk koneksi dari aplikasi di VPS yang sama.
- Periksa kredensial di file konfigurasi aplikasi Anda (
-
Composer Memory Limit Exceeded
- Gejala: Saat menjalankan
composer installataucomposer update, muncul error “Allowed memory size of X bytes exhausted”. - Penyebab: Composer membutuhkan banyak memori, terutama untuk project besar dengan banyak dependensi.
- Solusi:
- Tingkatkan batas memori PHP sementara untuk Composer:
php -d memory_limit=-1 /usr/local/bin/composer install(-1berarti tidak ada batas). - Atau, tingkatkan
memory_limitdiphp.ini(lihat di bagian konfigurasi PHP di atas) dan restart PHP-FPM.
- Tingkatkan batas memori PHP sementara untuk Composer:
- Gejala: Saat menjalankan
Pengalaman dan Pertimbangan Praktis
Mendeploy aplikasi bukan hanya soal mengikuti langkah-langkah, tetapi juga memahami kapan dan mengapa memilih pendekatan tertentu. Dari pengalaman saya, ada beberapa hal yang perlu dipertimbangkan:
-
Nginx vs. Apache: Kapan Memilih?
- Nginx: Saya selalu merekomendasikan Nginx untuk aplikasi modern yang membutuhkan performa tinggi dan skalabilitas. Nginx sangat efisien dalam menangani static content dan banyak koneksi secara bersamaan karena arsitektur event-driven-nya. Ini adalah pilihan ideal untuk aplikasi API atau situs web dengan trafik tinggi.
- Apache: Apache lebih mudah diatur, terutama jika Anda bergantung pada file
.htaccess(misalnya, beberapa CMS lama atau aplikasi PHP warisan). Untuk developer yang baru mulai atau proyek dengan trafik rendah, Apache bisa menjadi pilihan yang lebih ramah pengguna. Namun, untuk performa puncak, Nginx seringkali lebih unggul.
-
Manajemen Resource VPS
Aplikasi PHP bisa rakus memori, terutama jika Anda menggunakan framework besar dan banyak dependensi. VPS dengan RAM 1GB mungkin cukup untuk aplikasi kecil, tetapi untuk proyek yang lebih kompleks atau dengan trafik sedang, 2GB RAM atau lebih sangat direkomendasikan. Selalu pantau penggunaan RAM dan CPU server Anda. Jika Anda melihat swapping berlebihan atau CPU usage tinggi, itu pertanda Anda butuh VPS yang lebih besar atau perlu mengoptimasi kode aplikasi.
-
Keamanan adalah Prioritas Utama
Saya tidak bisa cukup menekankan pentingnya keamanan. Selalu gunakan SSH Key, nonaktifkan login root langsung, dan aktifkan firewall seperti UFW. Pastikan izin file dan direktori sudah benar (jangan pernah
chmod 777secara sembarangan!). Selalu perbarui sistem operasi dan semua paket yang terinstal. Untuk database, batasi akses user hanya darilocalhostdan berikan hak istimewa seminimal mungkin. -
Automasi Deployment (CI/CD)
Untuk project serius, deployment manual yang kita lakukan di sini adalah langkah awal yang bagus. Namun, dalam jangka panjang, pertimbangkan untuk mengotomatiskan proses deployment Anda dengan CI/CD (Continuous Integration/Continuous Deployment) tools seperti GitHub Actions, GitLab CI/CD, atau Jenkins. Ini akan menghemat waktu, mengurangi kesalahan manusia, dan memungkinkan Anda untuk merilis fitur lebih cepat.
-
Monitoring dan Backup
Setelah aplikasi Anda live, tugas Anda belum selesai. Implementasikan alat monitoring (misalnya, New Relic, Prometheus + Grafana, atau bahkan log Nginx/PHP-FPM sederhana) untuk memantau performa dan kesehatan server. Yang tak kalah penting adalah strategi backup. Pastikan Anda memiliki backup otomatis untuk kode aplikasi dan database Anda. Ini adalah jaring pengaman terakhir jika terjadi hal yang tidak diinginkan.
-
Versi PHP dan Kompatibilitas
Selalu usahakan menggunakan versi PHP terbaru yang stabil. Ini tidak hanya memberikan fitur dan performa terbaik, tetapi juga perbaikan keamanan. Pastikan aplikasi Anda kompatibel dengan versi PHP yang Anda instal di VPS.
FAQ
Apa itu VPS dan kenapa harus menggunakannya untuk aplikasi PHP?
VPS (Virtual Private Server) adalah mesin virtual yang berjalan di server fisik, memberikan Anda kontrol penuh atas lingkungan server Anda. Anda bisa menginstal sistem operasi, web server, database, dan konfigurasi lainnya sesuai kebutuhan. Ini lebih fleksibel dan berperforma tinggi daripada shared hosting, serta lebih hemat biaya daripada dedicated server, menjadikannya pilihan ideal untuk aplikasi PHP yang membutuhkan lingkungan kustom dan performa yang stabil.
Kenapa PHP-FPM penting untuk Nginx?
Nginx dirancang sebagai web server yang efisien dalam melayani file statis dan menjadi reverse proxy. Nginx tidak memiliki kemampuan bawaan untuk memproses kode PHP. Di sinilah PHP-FPM berperan. PHP-FPM (FastCGI Process Manager) adalah implementasi FastCGI untuk PHP yang mengelola pool proses PHP terpisah. Nginx meneruskan permintaan file PHP ke PHP-FPM, yang kemudian memprosesnya dan mengembalikan hasilnya ke Nginx. Ini membuat Nginx dan PHP-FPM bekerja sama secara efisien.
Bagaimana cara mengamankan aplikasi PHP di VPS setelah deploy?
Selain langkah-langkah dasar seperti SSH Key dan firewall, beberapa tips tambahan adalah: selalu perbarui semua paket, jangan pernah menyimpan informasi sensitif (password database, API key) langsung di kode, gunakan variabel lingkungan (.env), terapkan HTTPS (SSL) dengan Let’s Encrypt, konfigurasikan izin file yang ketat, dan pertimbangkan WAF (Web Application Firewall) jika aplikasi Anda sangat rentan.
Bisakah panduan ini digunakan untuk mendeploy aplikasi Laravel?
Ya, panduan ini sangat relevan untuk mendeploy aplikasi Laravel. Laravel adalah framework PHP yang populer, dan langkah-langkah umum seperti instalasi web server (Nginx), PHP-FPM, MySQL, Composer, serta konfigurasi .env dan public directory sangat sesuai. Anda hanya perlu memastikan konfigurasi Nginx root mengarah ke direktori public di Laravel dan try_files sudah benar untuk routing Laravel.
Berapa resource minimal VPS untuk aplikasi PHP?
Untuk aplikasi PHP yang sederhana dengan trafik rendah, VPS dengan 1GB RAM dan 25GB SSD sudah cukup. Namun, untuk aplikasi dengan framework yang lebih berat (seperti Laravel, Symfony), proses background, atau trafik yang lebih tinggi, direkomendasikan minimal 2GB RAM dan setidaknya 50GB SSD agar performa tetap optimal dan ada ruang untuk pertumbuhan.
Kesimpulan
Mendeploy aplikasi PHP ke VPS Ubuntu adalah skill fundamental yang wajib dikuasai setiap developer modern. Prosesnya memang melibatkan beberapa langkah teknis, mulai dari konfigurasi server, instalasi web server, PHP, database, hingga penyiapan aplikasi dan domain. Namun, dengan panduan lengkap ini, Anda kini memiliki peta jalan untuk membawa aplikasi Anda live dengan percaya diri.
Ingatlah bahwa deployment adalah proses berkelanjutan. Selalu perhatikan keamanan, performa, dan pertimbangkan untuk mengotomatiskan workflow Anda seiring waktu. Dengan praktik yang konsisten, Anda akan menjadi mahir dalam mengelola infrastruktur aplikasi PHP Anda sendiri. Selamat mendeploy!
TAGS: PHP, Deploy, VPS, Ubuntu, Nginx, MySQL, Web Development, Server, Developer Tools, Linux, Hosting, Tutorial



