Menjalankan Aplikasi Astro JS di VPS Ubuntu

mrfdn author

Rafi

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.

mrfdn author

Rafi

  • 15 year+ of Linux user.
  • 5 years+ blogger and web developer.

Jika artikel yang dibuatnya ternyata bermanfaat, support dengan cara

Baca juga