Menjalankan Aplikasi Astro JS di VPS Ubuntu
tentang Menjalankan Astrojs Di Vps
mrfdn.com - Saya akhirnya memiliki sebuah projekan NodeJS. Saya memilih AstroJS untuk membangun aplikasi ini.
Setelah aplikasi di build, saya mendapatkan sebuah kendala. Bahwa aplikasi tidak bisa run di server karena ada beberapa pengaturan yang harus diset supaya aplikasi bisa run di server.
Berikut pengaturan yang saya lakukan.
edit file astro.config.mjs
export default defineConfig({
integrations: [solidJs()],
base: process.env.NODE_ENV === 'production' ? '/app' : '/',
output: 'server',
adapter: node({
mode: "standalone"
}),
server: {
host: true
}
});
Dengan pengaturan di atas, aplikasi akan berjalan saat mengakses route /app
saat sudah dibuild di server, tetapi jika tidak dia akan berjalan di root (/) domain.
nginx reverse proxy
Kemudian supaya aplikasi bisa diakses, pastikan sudah set reverse proxy di pengaturan web server. Di sini saya menggunakan nginx.
Tambahkan pengaturan ini pada block config server. Disini saya edit di file /etc/nginx/conf.d/mywebapp.conf
location /app {
proxy_pass http://127.0.0.1:4321; #ganti dengan ip vps ubuntu anda.
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_cache_bypass $http_upgrade;
}
build aplikasi astrojs
Jalankan perintah npm run build
untuk membuild aplikasi astrojs. Anda akan mendapatkan folder dist/
di sana.
run aplikasi astro di background server
Cukup buat sebuah file bash di main project Astrojs, untuk menjalankan nodejs di background.
Jadi tidak perlu ketik npm run start
setiap kali sesudah build. Di sini saya memberikan nama file ini adalah run.sh
.
#!/bin/bash
# Path to the Node.js app
APP_DIR="/home/ubuntu/myastroapp/" #letak aplikasi astro
APP_FILE="entry.mjs"
# Navigate to the app directory
cd $APP_DIR
# Run the app in the background using nohup and redirect output to a log file
#nohup node run $APP_FILE > app.log 2>&1 &
nohup npm run start --host "ip.vps.ubuntu.anda" > app.log 2>&1 &
# Print the process ID of the Node.js app
echo "Node.js app is running in the background with PID $!"
Kemudian run dengan perintah sh run.sh
Sekarang aplikasi astrojs sudah bisa diakses melalui domain.saya/endpoint
Mematikan aplikasi nodejs dengan benar
Jika ingin mematikan aplikasi nodeJS, bisa dimatikan melalui perintah:
ps aux | grep node
Kemudian perhatikan proses id (PID) nodejs itu tertera. PID ini ditandai dengan sederet angka.
misalnya seperti ini:
ubuntu 34616 0.0 0.0 6748 2604 pts/4 S+ 07:06 0:00 grep node
PID nya adalah 34616
Setelah itu matikan dengan perintah
kill -9 34616
atau langsung saja buatkan sebuah bash script untuk melakukan perintah kill ini secara otomatis. Buat sebuah file bernama killnode.sh
kemudian isi dengan script ini:
#!/bin/bash
ps aux | grep node | awk '{print $2}' | xargs kill -9
echo "semua proses dari node sudah dimatikan."
## Explanation:
## ps aux | grep node: Lists all processes related to "node."
## awk '{print $2}': Extracts the second column, which is the PID.
## xargs kill -9: Sends the kill -9 command to each PID found, terminating all matching processes.
Jangan lupa untuk menambahkan chmod +x killnode.sh
pada file tersebut supaya bisa tereksekusi.
Jadi setiap kali ingin mematikan proses node, cukup jalankan script ini dengan perintah sh killnode.sh
.