پرش به محتوای اصلی
تاپ گیفت
سرور مجازی

آموزش اجرای پروژه پایتون روی سرور مجازی لینوکس

از نصب پایتون تا ساخت محیط مجازی و تبدیل اسکریپت به یک سرویس سیستمی که بعد از راه‌اندازی مجدد خودش بالا می‌آید. همه دستورها روی لینوکس اجرا و بررسی شده‌اند.

4 دقیقه مطالعه
آموزش اجرای پروژه پایتون روی سرور مجازی لینوکس

اجرای یک اسکریپت پایتون روی سرور با python main.py شروع می‌شود و با بستن ترمینال تمام می‌شود. برای اینکه سرویس واقعاً بماند، سه قدم لازم است: محیط مجازی، سرویس سیستمی، و لاگ.

فرض این آموزش اوبونتو یا دبیان است و اینکه کاربر غیر root ساخته‌اید. اگر نساخته‌اید، اول بعد از خرید سرور مجازی را ببینید.

1. پایتون را بررسی کنید

python3 -V

روی نسخه‌های جدید اوبونتو، پایتون از قبل نصب است. خروجی چیزی شبیه Python 3.12.3 خواهد بود.

2. بسته venv را نصب کنید

این قدمی است که بیشترین کسان را متوقف می‌کند. روی اوبونتو و دبیان، پایتون نصب است اما ابزار ساخت محیط مجازی جداگانه بسته‌بندی شده. اگر این قدم را رد کنید، دستور بعدی با این خطا متوقف می‌شود:

The virtual environment was not created successfully because ensurepip is not
available.  On Debian/Ubuntu systems, you need to install the python3-venv
package using the following command.

پس اول:

sudo apt update
sudo apt install python3-venv python3-pip

3. محیط مجازی بسازید

محیط مجازی، وابستگی‌های پروژه شما را از بسته‌های سیستم جدا نگه می‌دارد. بدون آن، نصب یک کتابخانه برای یک پروژه می‌تواند پروژه دیگر یا حتی ابزارهای خود سیستم را از کار بیندازد.

mkdir -p ~/myapp
cd ~/myapp
python3 -m venv .venv

برای فعال کردنش در جلسه فعلی:

source .venv/bin/activate

وقتی فعال باشد، نام محیط در ابتدای خط فرمان نمایش داده می‌شود.

4. وابستگی‌ها را نصب کنید

pip install -r requirements.txt

اگر فایل requirements.txt ندارید، بسته‌ها را مستقیم نصب کنید و بعد فهرستشان را بسازید:

pip install requests
pip freeze > requirements.txt

5. کد را روی سرور بگذارید

با git، اگر پروژه در یک مخزن است:

git clone https://example.com/user/myapp.git ~/myapp

یا با scp از کامپیوتر خودتان:

scp -r ./myapp deploy@203.0.113.10:~/

6. آن را به یک سرویس سیستمی تبدیل کنید

این چیزی است که اسکریپت را از یک برنامه در حال اجرا به یک سرویس تبدیل می‌کند: بعد از راه‌اندازی مجدد سرور خودش بالا می‌آید و اگر خطا داد، دوباره اجرا می‌شود.

فایل /etc/systemd/system/myapp.service را بسازید:

[Unit]
Description=My Python service
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
User=deploy
WorkingDirectory=/home/deploy/myapp
ExecStart=/home/deploy/myapp/.venv/bin/python /home/deploy/myapp/main.py
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target

چند نکته که معمولاً اشتباه نوشته می‌شوند:

  • مسیرها باید کامل باشند. systemd متغیرهای محیط پوسته شما را ندارد.
  • مفسر پایتون را از داخل محیط مجازی صدا بزنید — همان .venv/bin/python. با این کار نیازی به فعال کردن محیط نیست.
  • نام کاربر را بنویسید. بدون User، سرویس با دسترسی root اجرا می‌شود.

حالا سرویس را فعال و اجرا کنید:

sudo systemctl daemon-reload
sudo systemctl enable myapp
sudo systemctl start myapp

و وضعیتش را ببینید:

systemctl status myapp

7. لاگ‌ها

هر چیزی که برنامه چاپ کند در ژورنال سیستم ثبت می‌شود:

journalctl -u myapp -f

گزینه -f یعنی همان‌طور که خطوط جدید می‌آیند نمایش بده. برای دیدن خطاهای اخیر:

journalctl -u myapp -p err -n 50

8. بعد از هر به‌روزرسانی کد

cd ~/myapp
git pull
.venv/bin/pip install -r requirements.txt
sudo systemctl restart myapp

چند نکته عملی

  • حافظه را نگاه کنید. با free -h ببینید چقدر باقی مانده. سرویس پایتونی که حافظه‌اش تمام شود، معمولاً بدون پیام روشنی کشته می‌شود.
  • کلیدها و رمزها را در کد ننویسید. از متغیر محیطی استفاده کنید؛ systemd با Environment= یا EnvironmentFile= پشتیبانی می‌کند.
  • اگر برنامه وب است، آن را مستقیم روی پورت 80 اجرا نکنید. روی یک پورت محلی اجرا کنید و یک وب‌سرور جلویش بگذارید.

مشخصات پلن‌های در دسترس را در خرید سرور مجازی می‌بینید. اگر سرویس شما سبک است و مطمئن نیستید کدام اندازه کافی است، سرور مجازی با رم 1 یا 2 گیگابایت را ببینید.

پرسش‌های متداول

چرا python3 -m venv خطا می‌دهد؟
روی اوبونتو و دبیان، ابزار ساخت محیط مجازی در بسته جداگانه‌ای است. با apt install python3-venv نصبش کنید و دوباره امتحان کنید.
حتماً باید از محیط مجازی استفاده کنم؟
عملاً بله. بدون آن، نصب بسته برای یک پروژه می‌تواند پروژه دیگر یا ابزارهای خود سیستم را خراب کند.
چطور مطمئن شوم برنامه بعد از راه‌اندازی مجدد بالا می‌آید؟
اگر systemctl enable را اجرا کرده باشید، خودکار بالا می‌آید. برای اطمینان یک بار سرور را راه‌اندازی مجدد کنید و systemctl status را ببینید.
اشتراک‌گذاری: اشتراک در تلگرام

مقالات مرتبط

سرور مجازی چیست و چه کاربردی دارد؟

سرور مجازی یا VPS یک ماشین مستقل روی سخت‌افزار مشترک است که منابع اختصاصی و دسترسی مدیریتی کامل دارد. در این راهنما می‌خوانید VPS چطور کار می‌کند، چه تفاوتی با هاست دارد و برای چه کارهایی مناسب است.

1 دقیقه مطالعه
ادامه مطلب

راهنمای خرید سرور مجازی؛ چطور VPS مناسب را انتخاب کنیم؟

انتخاب سرور مجازی یعنی تصمیم درباره پردازنده، حافظه، فضا، موقعیت جغرافیایی، سیستم‌عامل و دوره پرداخت. این راهنما هر کدام را جداگانه توضیح می‌دهد و می‌گوید کدام را می‌شود بعداً عوض کرد و کدام را نه.

1 دقیقه مطالعه
ادامه مطلب