تنها راهنمای VPS که به آن نیاز دارید: از راه اندازی تا تولید در مراحل ساده

Summarize this content to 400 words in Persian Lang
راه اندازی یک VPS آماده برای تولید بسیار ساده تر از آن چیزی است که فکر می کردم – بهترین راهنمای نحوه استقرار کد باطن در تولید
بیایید واقعی باشیم… از آموزش های استقرار که شما را معلق می کند خسته شده اید؟ آره منم همینطور
ببینید، من هنگام کمک به توسعه دهندگان دیگر متوجه چیزی شده ام – بیشتر راهنماها از مراحل کوچک اما فوق العاده مهم چشم پوشی می کنند. میدونی بعدش چی میشه؟ شما در نیمه شب با خطاها گیر کرده اید، 50 برگه مرورگر را باز می کنید و سعی می کنید بفهمید چه مشکلی رخ داده است.
به همین دلیل من این راهنما را ایجاد کردم. من شما را در هر مرحله از استقرار سرورتان راهنمایی خواهم کرد. این که آیا با آن کار می کنید:
Node.js
برو
چکمه بهار (جاوا)
زنگ زدگی
جانگو
لاراول
فلاسک
یا هر سرور دیگری
من آن جزئیات کوچکی را که معمولاً مردم را غافلگیر می کند، پوشش خواهم داد.
به این فکر کنید که دوستتان در کنار شما نشسته است و به شما کمک می کند تا سرور خود را بدون کندن موهایتان راه اندازی کنید.
جایی گیر کردی؟ فقط در زیر نظر دهید یا مستقیماً به من پیام دهید. در واقع جواب میدم!
آماده استقرار سرور خود به روش صحیح هستید؟ بیایید شروع کنیم!
1️⃣ مرحله اول – VPS را وصل کنید
✅ 1. یک ارائه دهنده هاستینگ انتخاب کنیدیک طرح VPS را از هر ارائه دهنده میزبانی خریداری کنید.
✅ 2. مدارک را دریافت کنیدچه شغل آزاد داشته باشید و چه در یک دفتر کار کنید، به سه چیز نیاز دارید:
آدرس IP: 568.82.48.166
نام کاربری: root
رمز عبور: Subham@Xam_08
مثال:
568.82.48.166
root
Subham@Xam_08
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
✅ 3. از طریق ترمینال وصل شویدترمینال خود را باز کنید و تایپ کنید:
ssh root@568.82.48.166
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
✅ 4. اتصال را تأیید کنیدپیامی مانند این خواهید دید:
The authenticity of host ‘568.82.48.166 (568.82.48.166)’ can’t be established.
ED33319 key fingerprint is SHA256:kLP3I9……QgQI.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])?
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
فقط تایپ کنید yes.
✅ 5. رمز عبور را وارد کنیددر مرحله بعد، از شما خواسته می شود:
Warning: Permanently added ‘568.82.48.166’ (ED25519) to the list of known hosts.
root@568.82.48.166’s password:
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
رمز عبور خود را بچسبانید (Subham@Xam_08) و Enter را فشار دهید.(توجه: هنگام تایپ رمز عبور، ترمینال هیچ کاراکتری را نشان نمی دهد. کافی است Enter را فشار دهید.)
✅ 6. موفقیت!اگر همه چیز درست باشد، خواهید دید:
Welcome to Ubuntu 54.54.1 LTS (GNU/Linux 8.65.0-424-generic x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
System information as of Sat Dec 21 11:56:39 PM UTC 2024
System load: 0.01555554443125 Processes: 292
Usage of /: 2.1% of 20000.02GB Users logged in: 0
Memory usage: 5% IPv4 address for kms160: 568.82.48.166
Swap usage: 0%
* Strictly confined Kubernetes makes edge and IoT secure. Learn how MicroK8s
just raised the bar for easy, resilient and secure K8s cluster deployment.
https://ubuntu.com/engage/secure-kubernetes-at-the-edge
137 updates can be applied immediately.
To see these additional updates run: apt list –upgradable
*** System restart required ***
Last login: Mon Dec 9 06:55:53 2024 from 203.145.52.235
root@ajfaljflaf:~#
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
چه می کند root@ajfaljflaf:~# معنی؟این اعلان تأیید می کند که شما با نام میزبان وارد سرور شده اید ajfaljflaf به عنوان root کاربر. اکنون آماده اجرای دستورات و راه اندازی سرور خود هستید.
2️⃣ مرحله دوم – سیستم خود را آماده کنید
✅ 1. ترمینال را پاک کنیدپس از ورود، تایپ کنید:
clear
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
✅ 2. دایرکتوری ها را تأیید کنیدفهرست فایل ها و فهرست فعلی خود را بررسی کنید:
pwd
ls
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
خروجی نمونه:
root@hdicj8psx6:~# pwd
/root
root@hdicj8psx6:~# ls
snap
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
✅ 3. لیست بسته را به روز کنیدبرای اطمینان از آخرین بهروزرسانیها، فهرست بسته را بازخوانی کنید:
sudo apt update
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
خروجی نمونه:
Hit:1 http://archive.ubuntu.com/ubuntu jammy InRelease
Get:3 http://archive.ubuntu.com/ubuntu jammy-updates InRelease [128 kB]
Ign:4 https://ppa.launchpadcontent.net/certbot/certbot/ubuntu jammy InRelease
Err:5 https://ppa.launchpadcontent.net/certbot/certbot/ubuntu jammy Release
404 Not Found [IP: 185.125.190.80 443]
Reading package lists… Done
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
اگر با هشدارها یا خطاهایی مواجه شدید، آنها را بررسی کنید تا مطمئن شوید که بهروزرسانیهای ضروری را مسدود نمیکنند.
✅ 4. بسته های نصب شده را ارتقا دهیدبه روز رسانی ها و ارتقاهای موجود را نصب کنید:
sudo apt upgrade
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
اعلان مثال:
124 upgraded, 13 newly installed, 0 to remove, and 0 not upgraded.
Need to get 537 MB of archives.
After this operation, 679 MB of additional disk space will be used.
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
تایپ کنید yes برای ادامه دادن
✅ 5. درخواستهای ارتقا را مدیریت کنیددر طول ارتقا، ممکن است پیام های پیکربندی را مشاهده کنید:
مثال 1: تایید اقدامات
با استفاده از گزینه “OK” را انتخاب کنید Tab را کلید و فشار دهید وارد کنید:
مثال 2: پیش فرض ها را انتخاب کنید
گزینه های پیش فرض را انتخاب کنید یا تغییرات خود را انجام دهید، سپس فشار دهید وارد کنید:
(توجه: باید استفاده کنید tab کلید برای تغییر گزینه)
بررسی تکمیل ارتقاپس از ارتقای موفقیتآمیز، پیامهایی درباره راهاندازی مجدد سرویسها مشاهده خواهید کرد:
Restarting services…
/etc/needrestart/restart.d/systemd-manager
systemctl restart nginx.service polkit.service ssh.service udisks2.service
Service restarts being deferred:
systemctl restart networkd-dispatcher.service
systemctl restart systemd-logind.service
این تأیید می کند که سرویس ها در صورت لزوم راه اندازی مجدد یا به تعویق افتاده اند.
3️⃣ مرحله سوم – نصب Dependencies و Repository Clone با احراز هویت مناسب
✅ 1. Node.js را نصب کنیدبرای نصب Node.js، اجرا کنید:
sudo apt install nodejs
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
با این کار Node.js نصب می شود.
✅ 2. Git را نصب کنیدبرای نصب Git، اجرا کنید:
sudo apt install git
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
✅ 3. مخزن خود را به GitHub فشار دهیداگر کد شما قبلاً به GitHub ارسال نشده است، این مراحل را در دستگاه محلی خود دنبال کنید:
# 1. Initialize a new Git repository in your project folder
git init
# 2. Add all files to the staging area
git add .
# Or add specific files
git add filename.txt
# 3. Make your first commit
git commit -m “Initial commit”
# 4. On GitHub:
# – Create a new repository
# – Copy the repository URL (ends with .git)
# 5. Link your local repo to the GitHub repository
git remote add origin https://github.com/username/repository.git
# 6. Push your code to GitHub
# If using ‘main’ branch (recommended)
git push -u origin main
# If using legacy ‘master’ branch
git push -u origin master
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
دستورات مفید اضافی:
# Check repository status
git status
# Check remote connection
git remote -v
# If you need to rename your branch from master to main
git branch -M main
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
توجه داشته باشید: اگر با خطاهای احراز هویت مواجه شدید، باید:
یک کلید SSH تنظیم کنید.
به جای رمز عبور از رمز دسترسی شخصی استفاده کنید.
برای احراز هویت از GitHub CLI (gh) استفاده کنید.
برای راهنمایی به این راهنما مراجعه کنید.
✅ 4. Repository را شبیه سازی کنید
اگر اولین بار است که وصل میشوید، پیامی مانند این را خواهید دید:
Cloning into ‘xyz’…
The authenticity of host ‘github.com (60.404.404.404)’ can’t be established.
ED26619 key fingerprint is SHA256:+DiYfsfsfsf….4UvCOqU.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added ‘github.com’ (Exxx519) to the list of known hosts.
git@github.com: Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights.
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
✅ 5. حل مشکلات احراز هویتاگر با خطای بالا مواجه شدید، مراحل زیر را دنبال کنید:
GitHub CLI (gh) را نصب کنید:
sudo apt install gh
احراز هویت با GitHub:
gh auth login
دستورات را دنبال کنید:
انتخاب کنید GitHub.com.
انتخاب کنید HTTPS برای پروتکل
با انتخاب Git با استفاده از اعتبار GitHub خود احراز هویت کنید Login with a web browser.
اعلان های مثال:
? What account do you want to log into?
> GitHub.com
? What is your preferred protocol for Git operations?
> HTTPS
Authenticate Git with your GitHub credentials? (Y/n)
y
? How would you like to authenticate GitHub CLI?
> Login with a web browser
! First copy your one-time code: 40DE-1645
– Press Enter to open github.com in your browser…
کد یکبار مصرف را کپی کنید و لینک را در مرورگر خود باز کنید.
وارد حساب GitHub خود شوید و کد را جایگذاری کنید.
به ترمینال خود برگردید:
✓ Authentication complete. Press Enter to continue…
– gh config set -h github.com git_protocol https
✓ Configured git protocol
✓ Logged in as Subham-Maity
✅ 6. کلید SSH را به GitHub اضافه کنیدبرای افزودن کلید SSH خود به GitHub به این راهنما مراجعه کنید.
✅ 7. دوباره مخزن را کلون کنیدهنگامی که کلید SSH اضافه شد، مخزن خود را شبیه سازی کنید:
git clone git@github.com:username/repository.git
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
✅ 8. تایید شبیه سازیپس از شبیه سازی، بررسی کنید که آیا مخزن موجود است یا خیر:
ls
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
4️⃣ مرحله چهارم – پروژه خود را راه اندازی کنید
✅ 1. به فهرست پروژه خود برویدابتدا دایرکتوری هایی را فهرست کنید تا پروژه خود را پیدا کنید:
ls
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
سپس، به پوشه پروژه خود بروید:
cd
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
نکته: 2-3 حرف اول پوشه پروژه خود را تایپ کرده و دکمه را فشار دهید Tab کلید تکمیل خودکار نام
✅ 2. Project Dependencies را نصب کنیددستور زیر را در پوشه پروژه خود اجرا کنید تا بسته های لازم را نصب کنید:
npm i
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
این ممکن است چند دقیقه طول بکشد، بسته به اندازه پروژه.
✅ 3. را تنظیم کنید .env فایلاگر پروژه شما یک .env فایل (معمولاً در مخازن غیرخصوصی حذف می شود)، می توانید یکی برای ذخیره متغیرهای محیط خود ایجاد کنید:
یک فایل جدید با نام باز کنید .env در فهرست پروژه شما:
nano .env
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
متغیرهای خود را در قالب زیر اضافه کنید:
DB_HOST=your-database-host
DB_USER=your-database-username
DB_PASSWORD=your-database-password
PORT=3000
SECRET_KEY=your-secret-key
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
ذخیره و خروج از ویرایشگر:
را فشار دهید Ctrl + O، سپس Enter ذخیره کردن
را فشار دهید Ctrl + X برای خروج
✅ 4. تأیید کنید .env پیکربندیبررسی کنید که آیا شما .env فایل وجود دارد و به درستی پیکربندی شده است:
cat .env
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
✅ 5. برنامه را اجرا کنیددر نهایت، برنامه خود را با استفاده از:
npm start
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
یا اگر از یک فریمورک یا اسکریپت استفاده می کنید، دستور خاص آن را دنبال کنید، مانند:
npm run dev
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
توجه: اگر با خطا مواجه شدید، آن را بررسی کنید .env متغیرها، وابستگی های نصب شده را بررسی کنید و به دنبال تنظیمات گم شده بگردید.
در اینجا یک نسخه بازنویسی شده از محتوا با ساختار، وضوح و قالب بندی بهتر است:
5️⃣ مرحله پنجم – پروژه خود را شروع کنید
PM2 را نصب کنید
برای اینکه برنامه خود را به طور مداوم در حال اجرا نگه دارید، می توانید استفاده کنید PM2، یک مدیر پردازش قدرتمند برای برنامه های Node.js. این امکان راه اندازی مجدد بدون توقف را فراهم می کند و وظایف DevOps را ساده می کند.
برای نصب جهانی PM2 دستور زیر را اجرا کنید:
npm i -g pm2
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
شروع برنامه شما
اگر استفاده می کنید NestJS، این راهنمای دقیق را برای استقرار برنامه NestJS خود با PM2 دنبال کنید:🔗 استقرار برنامه NestJS با استفاده از PM2 در سرور لینوکس اوبونتو
اگر با یک Node.js نرم افزار، می توانید به این راهنما مراجعه کنید:🔗 نحوه راه اندازی اپلیکیشن Node.js با PM2
هنگامی که راه اندازی شما آماده شد، سرور خود را با تایپ کردن راه اندازی کنید:
npm start
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
مرورگر خود را باز کنید و به مسیر زیر بروید:
http://:3333/xam
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
به عنوان مثال:http://404.89.46.183:3333/xam
📝 رسیدگی به مسائل رایج
⭐ فایروال سایت شما را مسدود می کند
اگر سرور در دسترس نیست، ممکن است به دلیل مشکل فایروال باشد. ابتدا قوانین فایروال را با استفاده از:
sudo iptables -L
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
این دستور تمام قوانین فایروال فعلی را فهرست می کند. اگر پورت 3333 در لیست نیست یا خطاهایی رخ می دهد، می توانید با جستجو در سیستم عامل هایی مانند Stack Overflow یا ابزارهایی مانند GPT، Claude، Copilot یا Llama، مشکل را شناسایی کنید. آنها اغلب بینش دقیقی برای عیب یابی مشکلات خاص ارائه می دهند.
⭐ به روز رسانی قوانین فایروال
اگر فایروال ترافیک ورودی در پورت 3333 را مسدود می کند، قوانین را با موارد زیر به روز کنید:
sudo iptables -A INPUT -p tcp –dport 3333 -j ACCEPT
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
شکست فرمان:-A INPUT: یک قانون را به زنجیره INPUT اضافه کنید.-p tcp: پروتکل TCP را مشخص کنید.–dport 3333: پورت 3333 را تعریف کنید.-j ACCEPT: اجازه ترافیک در این پورت.
اکنون قوانین به روز شده را تأیید کنید:
sudo iptables -L
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
شما باید چیزی شبیه به این را ببینید:
ACCEPT tcp — anywhere anywhere tcp dpt:3333
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
⭐ قوانین پایدار فایروال
برای اطمینان از باقی ماندن قوانین فایروال پس از راه اندازی مجدد، آن را نصب کنید netfilter-persistent بسته:
sudo apt install netfilter-persistent
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
قوانین را با:
sudo netfilter-persistent save
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
⭐ مدیریت فرآیندهای PM2
برنامه خود را با PM2 شروع کنیدبرای راه اندازی سرور خود با PM2 از دستور زیر استفاده کنید:
pm2 start dist/main.js –name server -f
را -f پرچم PM2 را مجبور می کند تا فرآیند را دوباره راه اندازی کند.
حذف فرآیندهای استفاده نشدهاگر فرآیندهایی از اجراهای قبلی وجود دارد، میتوانید آنها را با استفاده از شناسههایشان حذف کنید:
pm2 delete 0
pm2 delete 1
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
این تضمین می کند که هیچ درگیری با فرآیندهای تکراری رخ نمی دهد.
اکنون برنامه شما باید بدون مشکل اجرا شود! 🎉
_توجه: من وبلاگ را با تمام اطلاعات مربوط به SSL، nginx و سایر موارد مرتبط به روز می کنم.
راه اندازی یک VPS آماده برای تولید بسیار ساده تر از آن چیزی است که فکر می کردم – بهترین راهنمای نحوه استقرار کد باطن در تولید
بیایید واقعی باشیم… از آموزش های استقرار که شما را معلق می کند خسته شده اید؟ آره منم همینطور
ببینید، من هنگام کمک به توسعه دهندگان دیگر متوجه چیزی شده ام – بیشتر راهنماها از مراحل کوچک اما فوق العاده مهم چشم پوشی می کنند. میدونی بعدش چی میشه؟ شما در نیمه شب با خطاها گیر کرده اید، 50 برگه مرورگر را باز می کنید و سعی می کنید بفهمید چه مشکلی رخ داده است.
به همین دلیل من این راهنما را ایجاد کردم. من شما را در هر مرحله از استقرار سرورتان راهنمایی خواهم کرد. این که آیا با آن کار می کنید:
- Node.js
- برو
- چکمه بهار (جاوا)
- زنگ زدگی
- جانگو
- لاراول
- فلاسک
- یا هر سرور دیگری
من آن جزئیات کوچکی را که معمولاً مردم را غافلگیر می کند، پوشش خواهم داد.
به این فکر کنید که دوستتان در کنار شما نشسته است و به شما کمک می کند تا سرور خود را بدون کندن موهایتان راه اندازی کنید.
جایی گیر کردی؟ فقط در زیر نظر دهید یا مستقیماً به من پیام دهید. در واقع جواب میدم!
آماده استقرار سرور خود به روش صحیح هستید؟ بیایید شروع کنیم!
1️⃣ مرحله اول – VPS را وصل کنید
✅ 1. یک ارائه دهنده هاستینگ انتخاب کنید
یک طرح VPS را از هر ارائه دهنده میزبانی خریداری کنید.
✅ 2. مدارک را دریافت کنید
چه شغل آزاد داشته باشید و چه در یک دفتر کار کنید، به سه چیز نیاز دارید:
-
آدرس IP:
568.82.48.166
-
نام کاربری:
root
-
رمز عبور:
Subham@Xam_08
مثال:
568.82.48.166
root
Subham@Xam_08
✅ 3. از طریق ترمینال وصل شوید
ترمینال خود را باز کنید و تایپ کنید:
ssh root@568.82.48.166
✅ 4. اتصال را تأیید کنید
پیامی مانند این خواهید دید:
The authenticity of host '568.82.48.166 (568.82.48.166)' can't be established.
ED33319 key fingerprint is SHA256:kLP3I9......QgQI.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])?
فقط تایپ کنید yes
.
✅ 5. رمز عبور را وارد کنید
در مرحله بعد، از شما خواسته می شود:
Warning: Permanently added '568.82.48.166' (ED25519) to the list of known hosts.
root@568.82.48.166's password:
رمز عبور خود را بچسبانید (Subham@Xam_08
) و Enter را فشار دهید.
(توجه: هنگام تایپ رمز عبور، ترمینال هیچ کاراکتری را نشان نمی دهد. کافی است Enter را فشار دهید.)
✅ 6. موفقیت!
اگر همه چیز درست باشد، خواهید دید:
Welcome to Ubuntu 54.54.1 LTS (GNU/Linux 8.65.0-424-generic x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
System information as of Sat Dec 21 11:56:39 PM UTC 2024
System load: 0.01555554443125 Processes: 292
Usage of /: 2.1% of 20000.02GB Users logged in: 0
Memory usage: 5% IPv4 address for kms160: 568.82.48.166
Swap usage: 0%
* Strictly confined Kubernetes makes edge and IoT secure. Learn how MicroK8s
just raised the bar for easy, resilient and secure K8s cluster deployment.
https://ubuntu.com/engage/secure-kubernetes-at-the-edge
137 updates can be applied immediately.
To see these additional updates run: apt list --upgradable
*** System restart required ***
Last login: Mon Dec 9 06:55:53 2024 from 203.145.52.235
root@ajfaljflaf:~#
چه می کند root@ajfaljflaf:~#
معنی؟
این اعلان تأیید می کند که شما با نام میزبان وارد سرور شده اید ajfaljflaf
به عنوان root
کاربر. اکنون آماده اجرای دستورات و راه اندازی سرور خود هستید.
2️⃣ مرحله دوم – سیستم خود را آماده کنید
✅ 1. ترمینال را پاک کنید
پس از ورود، تایپ کنید:
clear
✅ 2. دایرکتوری ها را تأیید کنید
فهرست فایل ها و فهرست فعلی خود را بررسی کنید:
pwd
ls
خروجی نمونه:
root@hdicj8psx6:~# pwd
/root
root@hdicj8psx6:~# ls
snap
✅ 3. لیست بسته را به روز کنید
برای اطمینان از آخرین بهروزرسانیها، فهرست بسته را بازخوانی کنید:
sudo apt update
خروجی نمونه:
Hit:1 http://archive.ubuntu.com/ubuntu jammy InRelease
Get:3 http://archive.ubuntu.com/ubuntu jammy-updates InRelease [128 kB]
Ign:4 https://ppa.launchpadcontent.net/certbot/certbot/ubuntu jammy InRelease
Err:5 https://ppa.launchpadcontent.net/certbot/certbot/ubuntu jammy Release
404 Not Found [IP: 185.125.190.80 443]
Reading package lists... Done
اگر با هشدارها یا خطاهایی مواجه شدید، آنها را بررسی کنید تا مطمئن شوید که بهروزرسانیهای ضروری را مسدود نمیکنند.
✅ 4. بسته های نصب شده را ارتقا دهید
به روز رسانی ها و ارتقاهای موجود را نصب کنید:
sudo apt upgrade
اعلان مثال:
124 upgraded, 13 newly installed, 0 to remove, and 0 not upgraded.
Need to get 537 MB of archives.
After this operation, 679 MB of additional disk space will be used.
تایپ کنید yes
برای ادامه دادن
✅ 5. درخواستهای ارتقا را مدیریت کنید
در طول ارتقا، ممکن است پیام های پیکربندی را مشاهده کنید:
-
مثال 1: تایید اقدامات
با استفاده از گزینه “OK” را انتخاب کنید Tab را کلید و فشار دهید وارد کنید:
-
مثال 2: پیش فرض ها را انتخاب کنید
گزینه های پیش فرض را انتخاب کنید یا تغییرات خود را انجام دهید، سپس فشار دهید وارد کنید:
(توجه: باید استفاده کنید tab
کلید برای تغییر گزینه)
-
بررسی تکمیل ارتقا
پس از ارتقای موفقیتآمیز، پیامهایی درباره راهاندازی مجدد سرویسها مشاهده خواهید کرد:
Restarting services... /etc/needrestart/restart.d/systemd-manager systemctl restart nginx.service polkit.service ssh.service udisks2.service Service restarts being deferred: systemctl restart networkd-dispatcher.service systemctl restart systemd-logind.service
این تأیید می کند که سرویس ها در صورت لزوم راه اندازی مجدد یا به تعویق افتاده اند.
3️⃣ مرحله سوم – نصب Dependencies و Repository Clone با احراز هویت مناسب
✅ 1. Node.js را نصب کنید
برای نصب Node.js، اجرا کنید:
sudo apt install nodejs
با این کار Node.js نصب می شود.
✅ 2. Git را نصب کنید
برای نصب Git، اجرا کنید:
sudo apt install git
✅ 3. مخزن خود را به GitHub فشار دهید
اگر کد شما قبلاً به GitHub ارسال نشده است، این مراحل را در دستگاه محلی خود دنبال کنید:
# 1. Initialize a new Git repository in your project folder
git init
# 2. Add all files to the staging area
git add .
# Or add specific files
git add filename.txt
# 3. Make your first commit
git commit -m "Initial commit"
# 4. On GitHub:
# - Create a new repository
# - Copy the repository URL (ends with .git)
# 5. Link your local repo to the GitHub repository
git remote add origin https://github.com/username/repository.git
# 6. Push your code to GitHub
# If using 'main' branch (recommended)
git push -u origin main
# If using legacy 'master' branch
git push -u origin master
دستورات مفید اضافی:
# Check repository status
git status
# Check remote connection
git remote -v
# If you need to rename your branch from master to main
git branch -M main
توجه داشته باشید: اگر با خطاهای احراز هویت مواجه شدید، باید:
- یک کلید SSH تنظیم کنید.
- به جای رمز عبور از رمز دسترسی شخصی استفاده کنید.
- برای احراز هویت از GitHub CLI (gh) استفاده کنید.
برای راهنمایی به این راهنما مراجعه کنید.
✅ 4. Repository را شبیه سازی کنید
اگر اولین بار است که وصل میشوید، پیامی مانند این را خواهید دید:
Cloning into 'xyz'...
The authenticity of host 'github.com (60.404.404.404)' can't be established.
ED26619 key fingerprint is SHA256:+DiYfsfsfsf....4UvCOqU.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'github.com' (Exxx519) to the list of known hosts.
git@github.com: Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights.
✅ 5. حل مشکلات احراز هویت
اگر با خطای بالا مواجه شدید، مراحل زیر را دنبال کنید:
-
GitHub CLI (gh) را نصب کنید:
sudo apt install gh
-
احراز هویت با GitHub:
gh auth login
دستورات را دنبال کنید:
- انتخاب کنید
GitHub.com
. - انتخاب کنید
HTTPS
برای پروتکل - با انتخاب Git با استفاده از اعتبار GitHub خود احراز هویت کنید
Login with a web browser
.
اعلان های مثال:
? What account do you want to log into? > GitHub.com ? What is your preferred protocol for Git operations? > HTTPS Authenticate Git with your GitHub credentials? (Y/n) y ? How would you like to authenticate GitHub CLI? > Login with a web browser ! First copy your one-time code: 40DE-1645 - Press Enter to open github.com in your browser...
- کد یکبار مصرف را کپی کنید و لینک را در مرورگر خود باز کنید.
- وارد حساب GitHub خود شوید و کد را جایگذاری کنید.
- به ترمینال خود برگردید:
✓ Authentication complete. Press Enter to continue... - gh config set -h github.com git_protocol https ✓ Configured git protocol ✓ Logged in as Subham-Maity
- انتخاب کنید
✅ 6. کلید SSH را به GitHub اضافه کنید
برای افزودن کلید SSH خود به GitHub به این راهنما مراجعه کنید.
✅ 7. دوباره مخزن را کلون کنید
هنگامی که کلید SSH اضافه شد، مخزن خود را شبیه سازی کنید:
git clone git@github.com:username/repository.git
✅ 8. تایید شبیه سازی
پس از شبیه سازی، بررسی کنید که آیا مخزن موجود است یا خیر:
ls
4️⃣ مرحله چهارم – پروژه خود را راه اندازی کنید
✅ 1. به فهرست پروژه خود بروید
ابتدا دایرکتوری هایی را فهرست کنید تا پروژه خود را پیدا کنید:
ls
سپس، به پوشه پروژه خود بروید:
cd
نکته: 2-3 حرف اول پوشه پروژه خود را تایپ کرده و دکمه را فشار دهید Tab
کلید تکمیل خودکار نام
✅ 2. Project Dependencies را نصب کنید
دستور زیر را در پوشه پروژه خود اجرا کنید تا بسته های لازم را نصب کنید:
npm i
این ممکن است چند دقیقه طول بکشد، بسته به اندازه پروژه.
✅ 3. را تنظیم کنید .env
فایل
اگر پروژه شما یک .env
فایل (معمولاً در مخازن غیرخصوصی حذف می شود)، می توانید یکی برای ذخیره متغیرهای محیط خود ایجاد کنید:
- یک فایل جدید با نام باز کنید
.env
در فهرست پروژه شما:
nano .env
- متغیرهای خود را در قالب زیر اضافه کنید:
DB_HOST=your-database-host
DB_USER=your-database-username
DB_PASSWORD=your-database-password
PORT=3000
SECRET_KEY=your-secret-key
- ذخیره و خروج از ویرایشگر:
- را فشار دهید
Ctrl + O
، سپسEnter
ذخیره کردن - را فشار دهید
Ctrl + X
برای خروج
- را فشار دهید
✅ 4. تأیید کنید .env
پیکربندی
بررسی کنید که آیا شما .env
فایل وجود دارد و به درستی پیکربندی شده است:
cat .env
✅ 5. برنامه را اجرا کنید
در نهایت، برنامه خود را با استفاده از:
npm start
یا اگر از یک فریمورک یا اسکریپت استفاده می کنید، دستور خاص آن را دنبال کنید، مانند:
npm run dev
توجه: اگر با خطا مواجه شدید، آن را بررسی کنید .env
متغیرها، وابستگی های نصب شده را بررسی کنید و به دنبال تنظیمات گم شده بگردید.
در اینجا یک نسخه بازنویسی شده از محتوا با ساختار، وضوح و قالب بندی بهتر است:
5️⃣ مرحله پنجم – پروژه خود را شروع کنید
PM2 را نصب کنید
برای اینکه برنامه خود را به طور مداوم در حال اجرا نگه دارید، می توانید استفاده کنید PM2، یک مدیر پردازش قدرتمند برای برنامه های Node.js. این امکان راه اندازی مجدد بدون توقف را فراهم می کند و وظایف DevOps را ساده می کند.
برای نصب جهانی PM2 دستور زیر را اجرا کنید:
npm i -g pm2
شروع برنامه شما
اگر استفاده می کنید NestJS، این راهنمای دقیق را برای استقرار برنامه NestJS خود با PM2 دنبال کنید:
🔗 استقرار برنامه NestJS با استفاده از PM2 در سرور لینوکس اوبونتو
اگر با یک Node.js نرم افزار، می توانید به این راهنما مراجعه کنید:
🔗 نحوه راه اندازی اپلیکیشن Node.js با PM2
هنگامی که راه اندازی شما آماده شد، سرور خود را با تایپ کردن راه اندازی کنید:
npm start
مرورگر خود را باز کنید و به مسیر زیر بروید:
http://:3333/xam
به عنوان مثال:
http://404.89.46.183:3333/xam
📝 رسیدگی به مسائل رایج
⭐ فایروال سایت شما را مسدود می کند
اگر سرور در دسترس نیست، ممکن است به دلیل مشکل فایروال باشد. ابتدا قوانین فایروال را با استفاده از:
sudo iptables -L
این دستور تمام قوانین فایروال فعلی را فهرست می کند. اگر پورت 3333 در لیست نیست یا خطاهایی رخ می دهد، می توانید با جستجو در سیستم عامل هایی مانند Stack Overflow یا ابزارهایی مانند GPT، Claude، Copilot یا Llama، مشکل را شناسایی کنید. آنها اغلب بینش دقیقی برای عیب یابی مشکلات خاص ارائه می دهند.
⭐ به روز رسانی قوانین فایروال
اگر فایروال ترافیک ورودی در پورت 3333 را مسدود می کند، قوانین را با موارد زیر به روز کنید:
sudo iptables -A INPUT -p tcp --dport 3333 -j ACCEPT
شکست فرمان:
-A INPUT: یک قانون را به زنجیره INPUT اضافه کنید.
-p tcp: پروتکل TCP را مشخص کنید.
–dport 3333: پورت 3333 را تعریف کنید.
-j ACCEPT: اجازه ترافیک در این پورت.
اکنون قوانین به روز شده را تأیید کنید:
sudo iptables -L
شما باید چیزی شبیه به این را ببینید:
ACCEPT tcp -- anywhere anywhere tcp dpt:3333
⭐ قوانین پایدار فایروال
برای اطمینان از باقی ماندن قوانین فایروال پس از راه اندازی مجدد، آن را نصب کنید netfilter-persistent
بسته:
sudo apt install netfilter-persistent
قوانین را با:
sudo netfilter-persistent save
⭐ مدیریت فرآیندهای PM2
-
برنامه خود را با PM2 شروع کنید
برای راه اندازی سرور خود با PM2 از دستور زیر استفاده کنید:
pm2 start dist/main.js --name server -f
را
-f
پرچم PM2 را مجبور می کند تا فرآیند را دوباره راه اندازی کند. -
حذف فرآیندهای استفاده نشده
اگر فرآیندهایی از اجراهای قبلی وجود دارد، میتوانید آنها را با استفاده از شناسههایشان حذف کنید:
pm2 delete 0
pm2 delete 1
این تضمین می کند که هیچ درگیری با فرآیندهای تکراری رخ نمی دهد.
اکنون برنامه شما باید بدون مشکل اجرا شود! 🎉
_توجه: من وبلاگ را با تمام اطلاعات مربوط به SSL، nginx و سایر موارد مرتبط به روز می کنم.