در این راهنما یاد میگیرید
- نسخهٔ پایتون را بررسی کنید و برای پکیجهای پروژه محیط مجازی بسازید.
- فایل را خارج از مسیر عمومی وب بگذارید و ابتدا دستی اجرا کنید.
- برای کار دورهای، مسیر کامل مفسر و فایل را در Cron وارد کنید و لاگ را ببینید.
۱. ترمینال cPanel را باز کنید
برای اجرای اسکریپت پایتون در هاست، اول به مفسر Python و راهی برای اجرای فرمان نیاز دارید. در این راهنما یک اسکریپت میسازیم که زمان اجرا را چاپ میکند و پایان مییابد. همان فایل را ابتدا دستی و بعد با Cron اجرا میکنیم.
cPanel پنل مدیریت هاست شماست؛ فایلها، دیتابیس و ترمینال را از همین صفحه مدیریت میکنید. برای ورود، اطلاعات سرویس فعال خود را آماده داشته باشید.
- وارد ناحیهٔ کاربری پایتون هاست شوید؛ از حسابی استفاده کنید که هاست را با آن تهیه کردهاید.
- در بخش سرویسها، هاست فعال خود را باز کنید و گزینهٔ ورود به cPanel را بزنید. اگر لینک ورود مستقیم ندارید، از آدرس و اطلاعات ورودِ پیام فعالسازی سرویس استفاده کنید.
- پس از ورود، صفحهٔ اصلی cPanel را میبینید. نام ابزار موردنیاز، مثل
File ManagerیاTerminalرا در کادر جستوجوی پنل بنویسید.
نام کاربری cPanel را از اطلاعات سرویس پیدا کنید. هر جا در فرمانها USERNAME دیدید، همین نام را جایگزین کنید؛ این مقدار، ایمیل یا نام نمایشی حساب شما نیست.
در صفحهٔ اصلی cPanel، ابزار Terminal را پیدا کنید. اگر در حساب شما نمایش داده نمیشود، از میزبان دربارهٔ فعالبودن Terminal یا دسترسی SSH بپرسید. نمایش این ابزار به دسترسی حساب و تنظیمات سرور بستگی دارد. مستندات Terminal در cPanel
۲. نسخهٔ Python را بررسی کنید و محیط مجازی بسازید
اگر دنبال نصب پایتون روی هاست هستید، ابتدا python3 --version را در Terminal اجرا کنید. در هاست اشتراکی، نسخههای پایتون را ارائهدهنده در سطح سرور آماده میکند. شما میتوانید از یک نسخهٔ در دسترس و سازگار با پروژه استفاده کنید و پکیجها را در محیط مجازی خودتان نصب کنید.
اگر فرمان نسخهٔ مناسبی نشان داد، دستورهای زیر را اجرا کنید. پوشهٔ python-scripts زیر Home و خارج از public_html ساخته میشود. خروجی pwd مسیر کامل آن را نشان میدهد. این مسیر را برای Cron نگه دارید.
mkdir -p "$HOME/python-scripts"
cd "$HOME/python-scripts" && python3 -m venv .venv
pwd
.venv/bin/python --version
اگر python3 در دسترس نیست یا نسخهٔ دیگری لازم دارید، نسخههای ارائهشده را از میزبان بپرسید. اگر از قبل محیط سازگاری در Setup Python App دارید، دستور فعالسازی همان محیط را از پنل بگیرید و با python -c 'import sys; print(sys.executable)' مسیر مفسرش را ببینید. در مراحل بعد، همان مفسر را به جای مفسر .venv به کار ببرید. مستندات انتخاب نسخهٔ Python در CloudLinux
اگر پروژهٔ شما requirements.txt دارد، آن را در همین پوشه بگذارید و .venv/bin/python -m pip install -r requirements.txt را با مفسر محیط پروژه اجرا کنید. اسکریپت نمونهٔ این مقاله از کتابخانهٔ استاندارد استفاده میکند. مستندات محیط مجازی Python
۳. فایل پایتون را بسازید و دستی اجرا کنید
در File Manager به پوشهٔ python-scripts بروید. فایل main.py را بسازید و محتوای زیر را در آن ذخیره کنید. اگر از قبل اسکریپت دارید، فایلهای پروژه را در همین پوشه بارگذاری کنید و نام فایل ورودی را در فرمان اجرا جایگزین کنید.
from datetime import datetime, timezone
now = datetime.now(timezone.utc)
print(f"Python script ran at {now.isoformat(timespec='seconds')}")
در Terminal، از پوشهٔ پروژه مفسر محیط مجازی را مستقیم اجرا کنید. با این روش همان مفسری استفاده میشود که پکیجهای پروژه را در آن نصب کردهاید.
cd "$HOME/python-scripts" && .venv/bin/python main.py
باید پیامی با عبارت Python script ran at و زمان UTC ببینید. اگر بهجای خروجی با خطا روبهرو شدید، اول همان خطا را در اجرای دستی رفع کنید. بعد سراغ زمانبندی بروید.
۴. اسکریپت را با Cron Jobs زمانبندی کنید
برای کاری مثل ساخت گزارش دورهای، Cron Jobs را از cPanel باز کنید. برای مثال اجرای ساعتی، در Common Settings گزینهٔ اجرای هر ساعت را انتخاب کنید یا مقدار Minute را 0 و چهار فیلد بعدی را * بگذارید. زمانبندی را با منطقهٔ زمانی Cron در سرویس خود تطبیق دهید.
در کادر Command فقط فرمان زیر را وارد کنید. مسیر نمونهٔ /home/USERNAME/python-scripts را در همهٔ قسمتها با خروجی واقعی pwd جایگزین کنید. اگر مفسر در مسیر دیگری است، مسیر کامل همان مفسر را قرار دهید.
cd "/home/USERNAME/python-scripts" && "/home/USERNAME/python-scripts/.venv/bin/python" "/home/USERNAME/python-scripts/main.py" >> "/home/USERNAME/python-scripts/cron.log" 2>&1
با Add New Cron Job زمانبندی را ذخیره کنید. پس از اولین نوبت، با tail -n 20 "$HOME/python-scripts/cron.log" خروجی یا خطا را بخوانید. زمان چاپشدهٔ نمونه UTC است. فاصلهٔ اجرا را بیشتر از زمان معمول اجرای کار بگذارید تا نوبتها روی هم نیفتند و حجم فایل لاگ را دورهای بررسی کنید. مستندات Cron Jobs در cPanel
برای اجرای کد پایتون روی سرور کدام روش مناسب است؟
- اجرای دستی در Terminal. برای آزمایش اولیه یا کاری که یک بار انجام میدهید.
- Cron Jobs. برای کاری که در زمان مشخص شروع میشود، نتیجه میدهد و تمام میشود.
- مدیریت پردازش مداوم. برای ربات polling یا برنامهای که منتظر پیام میماند، هاست باید اجازهٔ اجرای پیوسته و مدیریت فرایند را بدهد. راهنمای اجرای ربات و مشاهدهٔ لاگ با BotCTL
- محیط برنامهٔ وب. برای سایت یا API، از روش استقرار سازگار با فریمورک استفاده کنید. راهنمای استقرار جنگو و راهنمای استقرار فلسک
برای آزمودن دسترسی به Terminal، نسخهٔ پایتون و اجرای اسکریپت، جزئیات تست سهروزهٔ هاست پایتون را ببینید. اگر کارتان به زمانبندی یا پردازش مداوم وابسته است، فعالبودن امکانات لازم را روی همان پلن بررسی کنید.
رفع خطاهای اجرای پایتون روی هاست
چرا خطای ModuleNotFoundError میگیرم؟
پکیج را با مفسری نصب کنید که اسکریپت را اجرا میکند. مسیر Python در فرمان نصب، اجرای دستی و Cron باید به همان محیط پروژه برسد.
اسکریپت دستی اجرا میشود، اما در Cron چه چیزی را بررسی کنم؟
فرمان کامل Cron را یک بار در Terminal آزمایش کنید. مسیر مفسر، پوشهٔ کاری، نام فایل و مسیر لاگ را بررسی کنید. اگر برنامه به متغیر محیطی نیاز دارد، مطمئن شوید اجرای زمانبندیشده هم به تنظیمات خصوصی لازم دسترسی دارد.
آیا برای اجرای یک فایل پایتون به دامنه نیاز دارم؟
اسکریپتی که از Terminal یا Cron اجرا میشود و رابط وب ندارد، به دامنه نیاز ندارد. برای انتشار سایت یا API، تنظیمات دسترسی وب و HTTPS را جداگانه انجام دهید.