در این راهنما
- ورود به cPanel، ساخت پوشه و آپلود یا ساخت فایلها
- نصب Flask و تنظیم محیط مجازی و ورودی WSGI
- راهاندازی برنامه و دیدن نتیجه روی دامنه
قبل از شروع؛ برنامه را آماده کنید
در این آموزش از ورود به cPanel شروع میکنیم و در پایان، برنامهٔ Flask را روی دامنه میبینیم. اگر پروژه دارید، فایلهای آن و requirements.txt را آماده کنید. اگر هنوز پروژه ندارید، با نمونهٔ سادهٔ همین مقاله مراحل را انجام دهید.
نام پوشهٔ هاست در مثالها flaskapp، فایل اصلی app.py و نام برنامه داخل آن app است. USERNAME را در فرمانها با نام کاربری cPanel خود جایگزین کنید.
۱. ورود به cPanel
cPanel پنل مدیریت هاست شماست؛ فایلها، دیتابیس و ترمینال را از همین صفحه مدیریت میکنید. برای ورود، اطلاعات سرویس فعال خود را آماده داشته باشید.
- وارد ناحیهٔ کاربری هاست وردپرس شوید؛ از حسابی استفاده کنید که هاست را با آن تهیه کردهاید.
- در بخش سرویسها، هاست فعال خود را باز کنید و گزینهٔ ورود به cPanel را بزنید. اگر لینک ورود مستقیم ندارید، از آدرس و اطلاعات ورودِ پیام فعالسازی سرویس استفاده کنید.
- پس از ورود، صفحهٔ اصلی cPanel را میبینید. نام ابزار موردنیاز، مثل
File ManagerیاTerminalرا در کادر جستوجوی پنل بنویسید.
نام کاربری cPanel را از اطلاعات سرویس پیدا کنید. هر جا در فرمانها USERNAME دیدید، همین نام را جایگزین کنید؛ این مقدار، ایمیل یا نام نمایشی حساب شما نیست.
دامنه باید به هاست شما وصل شده باشد. نام آن را در بخش Domains ببینید؛ برای تنظیم DNS، از اطلاعات پیام فعالسازی هاست استفاده کنید. در ادامه File Manager، Setup Python App و Terminal را از جستوجوی cPanel باز میکنیم.
۲. ساخت پوشه و انتقال فایلها
- در File Manager از ستون کناری Home را باز کنید.
- با + Folder پوشهٔ
flaskappرا کنار public_html بسازید و وارد آن شوید. - اگر پروژه دارید، فایلهای آن را روی رایانه ZIP کنید؛ پوشهٔ محیط مجازی، Git و رمزها را کنار بگذارید.
- Upload را بزنید و ZIP را آپلود کنید. در File Manager، ZIP را انتخاب و با Extract باز کنید.
فایل اصلی باید مستقیم داخل flaskapp باشد؛ مثلاً /home/USERNAME/flaskapp/app.py. اگر ZIP یک پوشهٔ اضافی ساخته، محتویات آن را با Move به flaskapp بیاورید. پروژهٔ پایتون را در public_html قرار ندهید.
۳. ساخت app.py و requirements.txt
اگر پروژه ندارید، داخل flaskapp روی + File بزنید و فایل app.py را بسازید. آن را انتخاب و Edit را بزنید؛ کد زیر را قرار دهید و Save Changes را بزنید.
from flask import Flask
app = Flask(__name__)
@app.get("/")
def home():
return "Flask application is ready."
این برنامه با باز شدن صفحهٔ اصلی، پیام Flask application is ready. را نمایش میدهد. app نام شیء برنامه است و در مراحل بعد همین شیء را به وبسرور معرفی میکنیم.
با + File، فایل requirements.txt را نیز در همین پوشه بسازید. برای این نمونه، فقط یک خط Flask داخل آن بنویسید و ذخیره کنید. این فایل فهرست پکیجهای لازم است؛ برای پروژهٔ خودتان، وابستگیها و نسخههای همان پروژه را قرار دهید.
۴. ساخت Python App در پنل
به صفحهٔ اصلی cPanel بروید، Setup Python App را باز کنید و Create Application را بزنید:
- Python version: نسخهٔ سازگار با برنامه و کتابخانههای آن.
- Application root: مقدار
flaskapp؛ بدون /home/USERNAME. - Application URL: دامنهٔ متصل به هاست؛ در این مثال مسیر بعد از دامنه خالی است.
- Application startup file: مقدار
passenger_wsgi.py. - Application Entry point: مقدار
application.
Create را بزنید. پنل محیط مجازی برنامه را میسازد؛ این محیط محل نصب جداگانهٔ پکیجهای پروژه است. دستور فعالسازی آن را که بالای صفحهٔ برنامه آمده کپی کنید.
۵. باز کردن Terminal و نصب Flask
در جستوجوی cPanel، Terminal را پیدا و باز کنید. اگر پیام تأیید اولین ورود نمایش داده شد، آن را بخوانید و I understand and want to proceed را بزنید. هر فرمان را وارد کنید و Enter بزنید:
# Use the activation command shown in your cPanel account.
# Replace USERNAME, APP_ROOT and PYTHON_VERSION with your account values.
source /home/USERNAME/virtualenv/APP_ROOT/PYTHON_VERSION/bin/activate
cd /home/USERNAME/APP_ROOT
python -m pip install -r requirements.txt
بهجای خط اول از دستور واقعی پنل استفاده کنید. در خط دوم، USERNAME نام کاربری شما و APP_ROOT برابر flaskapp است. خط آخر کتابخانهها را نصب میکند؛ تا پایان نصب صبر کنید.
برای اطمینان از نصب، python -m pip show Flask را اجرا کنید. باید نام و نسخهٔ Flask را ببینید. در نشست تازهٔ Terminal، دوباره محیط مجازی را فعال کنید و وارد پوشهٔ برنامه شوید.
۶. ساخت فایل passenger_wsgi.py
در File Manager پوشهٔ flaskapp را باز کنید. فایل passenger_wsgi.py را با + File بسازید یا اگر پنل آن را ساخته، با Edit باز کنید. برای نمونهٔ app.py، این محتوا را قرار دهید و Save Changes را بزنید:
import sys
from pathlib import Path
BASE_DIR = Path(__file__).resolve().parent
sys.path.insert(0, str(BASE_DIR))
# app.py must export a Flask instance called app.
from app import app as application
در خط آخر، app اول نام فایل app.py و app دوم نام شیء داخل آن است. application نامی است که در Entry point پنل نوشتیم. این فایل باید کنار app.py باشد. Passenger درخواستهای دامنه را به همین برنامه میرساند.
فقط اگر پروژهٔ شما تابع create_app دارد
اگر پروژه تابعی دارد که برنامه را میسازد، بهجای نمونهٔ بالا از کد زیر استفاده کنید. myproject را با نام بستهٔ واقعی پروژه عوض کنید. برای نمونهٔ سادهٔ app.py، همان کد قبلی کافی است.
import sys
from pathlib import Path
BASE_DIR = Path(__file__).resolve().parent
sys.path.insert(0, str(BASE_DIR))
from myproject import create_app
application = create_app()
۷. تنظیم رمزها و دیتابیس پروژه
نمونهٔ سادهٔ این مقاله به دیتابیس و کلید نشست نیاز ندارد؛ میتوانید به مرحلهٔ بعد بروید. اگر برنامهٔ خودتان دیتابیس، ورود کاربر یا API خارجی دارد، تنظیماتش را نیز منتقل کنید.
در Setup Python App برنامه را باز کنید. در بخش Environment variables، با Add Variable نام و مقدار هر متغیر را وارد کنید، Done و سپس Save را بزنید. نامها باید دقیقاً با کد پروژه یکسان باشند؛ مثلاً DATABASE_URL فقط وقتی کاربرد دارد که برنامهٔ شما آن را بخواند.
- برای MySQL یا MariaDB، ابزار Manage My Databases یا MySQL Databases را در cPanel باز کنید.
- دیتابیس و کاربر را بسازید و در Add User To Database کاربر را به دیتابیس متصل کنید و مجوزها را ذخیره کنید.
- نام کامل دیتابیس و کاربر، رمز و میزبانِ اعلامشدهٔ هاست را در تنظیم اتصال برنامه قرار دهید.
- اگر دادهٔ قبلی دارید، از آن خروجی بگیرید و به دیتابیس جدید وارد کنید؛ ساخت دیتابیس خالی، دادهها را منتقل نمیکند.
Debug را در محیط انتشار خاموش کنید، رمزها را خارج از Git نگه دارید و برای فرمهای حساس از HTTPS و محافظت CSRF استفاده کنید. دستور flask run یا app.run() را برای روشنماندن سایت در ترمینال اجرا نکنید؛ Passenger اجرای وب را مدیریت میکند.
۸. راهاندازی و دیدن نتیجه
- در Setup Python App برنامهٔ flaskapp را باز کنید و Restart را بزنید.
- دامنه را در مرورگر باز کنید. در نمونهٔ این مقاله، باید پیام
Flask application is ready.دیده شود. - اگر برنامهٔ خودتان را منتقل کردهاید، یک مسیر دیگر و بخشی که از دیتابیس استفاده میکند را نیز باز کنید.
- Terminal را ببندید و دامنه را دوباره باز کنید؛ سایت باید از طریق Passenger پاسخ دهد.
برای بهروزرسانی بعدی، فایلهای تغییرکرده را آپلود کنید، در صورت تغییر requirements.txt آن را در محیط مجازی نصب کنید و در پایان Restart بزنید.
| نشانه | کاری که انجام دهید |
|---|---|
| ModuleNotFoundError | در محیط مجازی همین برنامه، نصب requirements.txt را انجام دهید. |
| خطای import | نام فایل و شیء برنامه را با خط import در passenger_wsgi.py مقایسه کنید. |
| خطای اتصال دیتابیس | نام کامل کاربر و دیتابیس، رمز، میزبان و مجوز کاربر را دوباره ببینید. |
| خطای 500 | خطای اصلی را در لاگ Passenger یا برنامه پیدا و گزارش بدون رمز را برای پشتیبانی ارسال کنید. |
سوالات متداول اولین انتشار Flask
برای این روش Gunicorn نصب کنم؟
خیر؛ در این آموزش Passenger برنامهٔ WSGI را اجرا میکند. نصب و اجرای جداگانهٔ Gunicorn جزو این مراحل نیست.
Entry point باید app باشد یا application؟
در این مثال application است؛ همان متغیر صادرشده از passenger_wsgi.py. شیء اصلی برنامه در app.py همچنان app نام دارد.
برای ساخت فایل لازم است از ترمینال استفاده کنم؟
خیر؛ با + File و Edit در File Manager فایل را بسازید و ذخیره کنید. در این آموزش فقط برای نصب پکیجها از Terminal استفاده میکنیم.
منابع و ادامهٔ آموزش
برای انتخاب پلن، راهنمای منابع هاست را بخوانید. پشتیبانی تخصصی نیز در انتشار برنامه همراه شماست.