VPS-এ Node.js সব সময় চালু থাকা সার্ভিস হিসেবে চালান
এই উদাহরণে Ubuntu বা Debian-এ systemd ব্যবহার করা হয়েছে। ধরে নেওয়া হয়েছে আপনার কাছে রিভিউ করা Node.js অ্যাপ এবং সমর্থিত Node.js ইনস্টলেশন আগে থেকেই আছে। পাথ ও এন্ট্রি পয়েন্ট আপনার প্রজেক্ট অনুযায়ী বদলে নিন।
ধাপ
আলাদা একটি সার্ভিস ইউজার এবং ব্যক্তিগত রিলিজ ডিরেক্টরি তৈরি করুন। রিভিউ করা প্রজেক্ট সেখানেই ডিপ্লয় করুন, আর তার মালিক ওই ইউজারকেই রাখুন। ডিপেন্ডেন্সি ইনস্টল ও বিল্ড ওই ইউজার দিয়ে চালান, root দিয়ে নয়।
bashsudo adduser --system --group --home /srv/apnapp apnapp sudo install -d -o apnapp -g apnapp /srv/apnapp/currentলক করা ডিপেন্ডেন্সি ইনস্টল করুন, প্রোডাকশন রিলিজ বিল্ড করুন এবং অ্যাপকে 127.0.0.1:3000-এ শুনতে সেট করুন। এনভায়রনমেন্ট সেটিং তখনই কাজ করে, যখন অ্যাপ সেগুলো পড়ে। গোপন তথ্য সোর্স রিপোজিটরিতে নয়, সীমিত অনুমতির এনভায়রনমেন্ট ফাইলে রাখুন।
bashsudo test -e /etc/apnapp.env || sudo install -o root -g apnapp -m 640 /dev/null /etc/apnapp.env command -v nodeনিচের কনফিগারেশন দিয়ে /etc/systemd/system/apnapp.service তৈরি করুন। Node executable-এর পাথ, ওয়ার্কিং ডিরেক্টরি ও এন্ট্রি ফাইল নিজের মতো বদলে নিন। এনভায়রনমেন্ট ফাইল ব্যক্তিগতভাবে পূরণ করুন। গোপন তথ্য আছে এমন বিদ্যমান ফাইল ওভাররাইট করবেন না।
ini[Unit] Description=APNCloud application After=network.target [Service] User=apnapp Group=apnapp WorkingDirectory=/srv/apnapp/current Environment=NODE_ENV=production EnvironmentFile=/etc/apnapp.env ExecStart=/usr/bin/node /srv/apnapp/current/server.js Restart=on-failure RestartSec=5 NoNewPrivileges=true PrivateTmp=true [Install] WantedBy=multi-user.targetইউনিট যাচাই করুন, চালু করুন এবং লগ দেখুন। কোনো রুট পাবলিশ করার আগে স্টার্টআপের ত্রুটি ঠিক করুন।
bashsudo systemd-analyze verify /etc/systemd/system/apnapp.service sudo systemctl daemon-reload sudo systemctl enable --now apnapp sudo journalctl -u apnapp -n 50 --no-pager curl -I http://127.0.0.1:3000/রিলিজের পর সার্ভিস রিস্টার্ট করে হেলথ দেখুন। একটি রিবুট পরীক্ষার পরিকল্পনা করুন এবং রোলব্যাকের জন্য আগের রিলিজ রেখে দিন। রিস্টার্টে রিকোয়েস্ট কিছুক্ষণের জন্য থেমে যেতে পারে।
সমস্যা হলে
শেলে অ্যাপ চললেও সার্ভিস হিসেবে ব্যর্থ হলে executable-এর পাথ, অনুমতি, ওয়ার্কিং ডিরেক্টরি ও এনভায়রনমেন্ট মিলিয়ে দেখুন। অনুমতির সমস্যা এড়াতে সার্ভিস root দিয়ে চালাবেন না। আপলোড ও স্থায়ী ডেটার জন্য অ্যাপের নিজস্ব writable ডিরেক্টরি ব্যবহার করুন।
সম্পর্কিত গাইড
সর্বশেষ পর্যালোচনা
2026-10-28
