Dokumen ini berisi panduan dan catatan mengenai proses setup server untuk website https://ft.unipa.ac.id, termasuk konfigurasi untuk aplikasi Laravel dan React JS yang di-host pada server Ubuntu yang sama, menggunakan Nginx sebagai web server dan PM2 untuk manajemen proses aplikasi.
-
Melakukan update dan upgrade sistem operasi server.
sudo apt update sudo apt upgrade -y
-
Install Nginx sebagai web server.
sudo apt install nginx -y
-
Setup firewall untuk mengizinkan lalu lintas HTTP dan HTTPS.
sudo ufw app list sudo ufw allow 2222/tcp sudo ufw allow 'Nginx Full' sudo ufw enable sudo ufw status
-
Membuat konfigurasi Nginx untuk aplikasi Laravel, termasuk pengaturan root directory, penanganan file PHP, dan rewrite rules.
cd ~/ sudo mkdir /var/www/ft.unipa.ac.id/ cd /var/www/ft.unipa.ac.id/
# /etc/nginx/sites-available/laravel server { listen 8080; server_name ft.unipa.ac.id; root /var/www/ft.unipa.ac.id/laravel/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.1-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name; include fastcgi_params; } location ~ /\.(?!well-known).* { deny all; } }
-
Menyiapkan reverse proxy dengan Nginx untuk mengarahkan permintaan ke port tertentu, memungkinkan aplikasi Laravel dan React JS diakses melalui port standar (80 untuk HTTP).
# /etc/nginx/sites-available/ft.unipa.ac.id server { server_name 85.31.232.86 ft.unipa.ac.id; location /api { proxy_pass http://localhost:8080; # Arahkan ke aplikasi Laravel di port 8080 proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } location / { proxy_pass http://localhost:3000; # Arahkan ke aplikasi ReactJS di port 3000 proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } listen [::]:443 ssl ipv6only=on; # managed by Certbot listen 443 ssl; # managed by Certbot ssl_certificate /etc/letsencrypt/live/ft.unipa.ac.id/fullchain.pem; # managed by Certbot ssl_certificate_key /etc/letsencrypt/live/ft.unipa.ac.id/privkey.pem; # managed by Certbot include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot } server { if ($host = ft.unipa.ac.id) { return 301 https://$host$request_uri; } # managed by Certbot listen 80; listen [::]:80; server_name 85.31.232.86 ft.unipa.ac.id; return 404; # managed by Certbot }
-
Meng-upload atau clone aplikasi Laravel ke dalam server dan letakan pada document root.
sudo mv laravel /var/www/ft.unipa.ac.id/
-
Konfigurasi file
.envuntuk setup database dan variabel lingkungan lainnya. -
Melakukan migrasi database dan instalasi dependencies melalui Composer.
-
Meng-upload atau clone aplikasi Laravel ke dalam server dan letakan pada document root.
cd ~/ sudo mv reactjs /var/www/ft.unipa.ac.id/ cd /var/www/ft.unipa.ac.id/reactjs/
-
Build aplikasi React JS menggunakan
npm run build. -
Melayani build aplikasi React JS menggunakan
serveyang dijalankan oleh PM2, memudahkan manajemen proses dan restart otomatis aplikasi.sudo npm install -g pm2 sudo npm install -g serve pm2 serve build 3000
-
Mengkonfigurasi Let's Encrypt untuk SSL, memastikan semua lalu lintas dienkripsi dan aman.
sudo apt install certbot python3-certbot-nginx sudo certbot --nginx -d ft.unipa.ac.id
- Menggunakan PM2 untuk menjalankan dan memonitor aplikasi React JS dan Laravel (untuk keperluan non-produksi), termasuk fitur auto-restart, logging, dan load balancing.
- Selengkapnya tentang PM2
Berikut adalah beberapa referensi yang digunakan dalam proses deployment:
- Troubleshoot koneksi SSH ke Server
- Initial Server Setup dengan Ubuntu 20.04
- Installasi Nginx pada Ubuntu 20.04
- Mengamankan Nginx dengan Let's Encrypt pada Ubuntu 20.04
- Deployment Aplikasi React
- Menjalankan React App di Server menggunakan PM2
- Installasi LEMP Stack pada Ubuntu 22.04
- Hosting Multiple Applications dalam VM menggunakan Nginx Reverse Proxy
- Menjalankan Multiple Web Apps dengan Single Nginx Server
Dengan mengikuti panduan ini, website https://ft.unipa.ac.id dapat di-setup dan di-deploy dengan konfigurasi yang optimal untuk keamanan dan performa.
dokumen ini akan terus diupdate kedepannya