FA-TOOLS — Header Component
کدهای آماده deployment اپ Flask روی سرور

کدهای آماده deployment اپ Flask روی سرور

فهرست مطالب

کدهای آماده deployment اپ Flask روی سرور — تصویر 1

نقشه راه Deployment اپ Flask: گام به گام تا انتشار

کدهای آماده deployment اپ Flask روی سرور — تصویر 2
  • آماده‌سازی سرور: انتخاب VPS، SSH، آپدیت سیستم، ساخت کاربر جدید و تنظیم فایروال.
  • پروژه Flask: استفاده از محیط مجازی، `requirements.txt`، ساختاردهی مناسب.
  • WSGI Server (Gunicorn): نصب و پیکربندی Gunicorn برای مدیریت درخواست‌ها.
  • Reverse Proxy (Nginx/Apache): نصب و تنظیم Nginx یا Apache برای هدایت ترافیک و مدیریت SSL.
  • امنیت: مدیریت متغیرهای محیطی، تنظیم مجوزها و Certbot برای HTTPS.
  • مانیتورینگ: بررسی لاگ‌ها و اطمینان از عملکرد صحیح اپلیکیشن.
  • بهینه‌سازی: نکات برای افزایش سرعت و مقیاس‌پذیری اپلیکیشن.

با دنبال کردن این مراحل، اپلیکیشن Flask شما کاملا آماده خدمت‌رسانی به کاربران خواهد بود.

اپلیکیشن‌های وب مبتنی بر Flask به دلیل سبک بودن، انعطاف‌پذیری و جامعه توسعه‌دهندگان فعال، محبوبیت زیادی پیدا کرده‌اند. اما تنها نوشتن کد کافی نیست؛ برای اینکه اپلیکیشن شما در دسترس عموم قرار بگیرد، باید آن را روی یک سرور مستقر (deploy) کنید. این فرآیند ممکن است در ابتدا کمی پیچیده به نظر برسد، اما با دنبال کردن گام‌های صحیح و استفاده از کدهای آماده، می‌توانید به راحتی اپلیکیشن Flask خود را به دنیای واقعی بیاورید.

در این مقاله جامع، به صورت گام به گام و با ارائه کدهای عملی، نحوه deployment یک اپلیکیشن Flask روی سرور لینوکس (اوبونتو) را توضیح می‌دهیم. از آماده‌سازی سرور گرفته تا تنظیمات پیشرفته، همه چیز را پوشش خواهیم داد تا مطمئن شوید پروژهتان بدون مشکل و به بهترین شکل ممکن راه‌اندازی می‌شود.

چرا Deployment اپلیکیشن‌های Flask اهمیت دارد؟

کدهای آماده deployment اپ Flask روی سرور — تصویر 3

شاید از خود بپرسید چرا باید اپلیکیشن محلی (Local) خود را روی سرور ببرید؟ پاسخ ساده است: تا کاربران بتوانند به آن دسترسی داشته باشند. Deployment تنها یک مرحله فنی نیست، بلکه یک گام حیاتی در چرخه عمر هر محصول نرم‌افزاری است. بدون آن، بهترین ایده‌ها و کدهای شما در حد همان سیستم شخصی‌تان باقی می‌مانند.

مهمترین دلایل اهمیت deployment عبارتند از:

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

پیش‌نیازهای لازم برای Deployment موفق

قبل از اینکه وارد جزئیات کدها شویم، باید مطمئن شوید که ابزارهای لازم را در اختیار دارید:

  • سرور (VPS یا Dedicated): یک سرور مجازی خصوصی (VPS) یا اختصاصی با سیستم عامل لینوکس (ترجیحاً اوبونتو 20.04 یا بالاتر) نیاز دارید. DigitalOcean, Linode, Vultr یا Hetzner گزینه‌های خوبی هستند.
  • دسترسی SSH: برای اتصال امن به سرور.
  • نام دامنه: یک نام دامنه ثبت شده که به آدرس IP سرور شما اشاره می‌کند (تنظیم رکوردهای A در DNS).
  • پایتون و Pip: نصب شده روی سرور.
  • محیط مجازی (Virtual Environment): برای جداسازی وابستگی‌های پروژه.
  • سرور WSGI (مثلاً Gunicorn یا uWSGI): برای اجرای اپلیکیشن Flask و مدیریت درخواست‌ها.
  • Reverse Proxy (مثلاً Nginx یا Apache): برای هدایت ترافیک، مدیریت SSL و لود بالانسینگ (در صورت نیاز).

گام‌های اساسی برای آماده‌سازی سرور

اولین قدم، آماده‌سازی سرور است. این مراحل را پس از دریافت اطلاعات سرور (IP و رمز عبور root) انجام دهید:

۱. اتصال به سرور از طریق SSH

از ترمینال خود (در لینوکس/مک) یا PuTTY (در ویندوز) استفاده کنید:

ssh root@your_server_ip

پس از وارد کردن رمز عبور، وارد سرور می‌شوید.

۲. به‌روزرسانی سیستم

همیشه اولین کار پس از ورود به سرور، به‌روزرسانی پکیج‌هاست:

sudo apt update
sudo apt upgrade -y

۳. ساخت یک کاربر جدید و تنظیم دسترسی Sudo

کار کردن با کاربر root توصیه نمی‌شود. یک کاربر جدید با دسترسی sudo بسازید:

adduser your_username
usermod -aG sudo your_username

سپس از root خارج شده و با کاربر جدید وارد شوید:

exit
ssh your_username@your_server_ip

۴. تنظیم فایروال (UFW)

فایروال را برای افزایش امنیت فعال کنید. پورت‌های SSH (22)، HTTP (80) و HTTPS (443) را باز کنید:

sudo ufw allow OpenSSH
sudo ufw allow 'Nginx Full' # یا 'Apache Full' اگر Apache استفاده می‌کنید.
sudo ufw enable

با تایپ sudo ufw status می‌توانید وضعیت فایروال را بررسی کنید.

۵. نصب پایتون و ابزارهای مرتبط

اگر پایتون و Pip از قبل نصب نیستند، آن‌ها را نصب کنید:

sudo apt install python3 python3-pip python3-venv -y

ساختار پروژه Flask و آماده‌سازی برای Deployment

فرض می‌کنیم پروژه Flask شما در حال حاضر روی سیستم محلی‌تان آماده است. یک ساختار مناسب برای Deployment شامل موارد زیر است:

  • فایل `app.py` یا `wsgi.py`: فایل اصلی که نمونه Flask را ایجاد می‌کند.
  • فولدر `venv`: محیط مجازی.
  • فایل `requirements.txt`: لیست تمام وابستگی‌های پروژه.
  • فولدر `static` و `templates`: برای فایل‌های استاتیک و قالب‌ها.
  • فایل `.env`: برای متغیرهای محیطی حساس (که نباید در Git قرار گیرد).

ابتدا پروژهتان را روی سرور کلون کنید یا کپی نمایید. معمولاً از Git برای این کار استفاده می‌شود:

# در دایرکتوری home کاربر جدید
cd ~
git clone your_repository_url flask_project

وارد دایرکتوری پروژه شوید:

cd flask_project

۱. ایجاد و فعال‌سازی محیط مجازی

در داخل پوشه پروژه، یک محیط مجازی ایجاد و فعال کنید:

python3 -m venv venv
source venv/bin/activate

۲. نصب وابستگی‌ها

با استفاده از فایل `requirements.txt`، تمام پکیج‌های مورد نیاز را نصب کنید. اگر این فایل را ندارید، در لوکال با pip freeze > requirements.txt آن را بسازید و به پروژه اضافه کنید.

pip install -r requirements.txt

۳. فایل WSGI

مطمئن شوید یک فایل `wsgi.py` (یا `app.py` که نمونه Flask را export می‌کند) در ریشه پروژه دارید. این فایل نقطه ورود WSGI سرور شماست. مثلاً:

# wsgi.py
from app import create_app # فرض کنید create_app در app/__init__.py است
application = create_app()

# اگر اپلیکیشن اصلی شما مستقیم در app.py است:
# from app import app as application # فرض کنید اپلیکیشن شما app نام دارد در app.py

انتخاب WSGI Server: Gunicorn در برابر uWSGI

Flask به تنهایی برای محیط production مناسب نیست. به یک WSGI سرور نیاز دارید که درخواست‌ها را از وب سرور (Nginx/Apache) دریافت کرده و به اپلیکیشن Flask شما ارسال کند. دو گزینه محبوب Gunicorn و uWSGI هستند.

جدول مقایسه Gunicorn و uWSGI

ویژگی Gunicorn
سادگی بسیار ساده در نصب و پیکربندی.
کارایی عملکرد خوب برای اکثر اپلیکیشن‌های Flask.
قابلیت اطمینان پایدار و مورد استفاده در پروژه‌های بزرگ.
مستندات مستندات واضح و جامعه کاربری فعال.
پیکربندی با استفاده از خط فرمان یا فایل پیکربندی پایتون.

برای سادگی و کارایی مناسب در اکثر موارد، Gunicorn انتخاب خوبی است و در ادامه بر روی آن تمرکز می‌کنیم. uWSGI قدرتمندتر اما پیچیده‌تر است.

راه‌اندازی Gunicorn برای اپلیکیشن Flask

۱. نصب Gunicorn

در محیط مجازی فعال شده پروژه، Gunicorn را نصب کنید:

pip install gunicorn

۲. تست Gunicorn

برای اطمینان از عملکرد صحیح Gunicorn، آن را به صورت دستی اجرا کنید. اگر فایل WSGI شما `wsgi.py` و اپلیکیشن شما `application` نام دارد:

gunicorn --bind 0.0.0.0:5000 wsgi:application

اگر اپلیکیشن شما مستقیم در `app.py` و نمونه Flask `app` نام دارد، از دستور زیر استفاده کنید:

gunicorn --bind 0.0.0.0:5000 app:app

با مراجعه به http://your_server_ip:5000 در مرورگر خود، باید اپلیکیشن Flask را ببینید.

۳. ایجاد سرویس Systemd برای Gunicorn

برای اینکه Gunicorn در پس‌زمینه اجرا شود و با راه‌اندازی مجدد سرور هم به صورت خودکار شروع به کار کند، یک فایل سرویس Systemd می‌سازیم:

sudo nano /etc/systemd/system/myflaskapp.service

محتوای زیر را با مشخصات پروژه خود جایگزین کنید (نام کاربری، مسیر پروژه، نام فایل WSGI و نام اپلیکیشن):

[Unit]
Description=Gunicorn instance to serve my flask app
After=network.target

[Service]
User=your_username
Group=www-data
WorkingDirectory=/home/your_username/flask_project
ExecStart=/home/your_username/flask_project/venv/bin/gunicorn --workers 3 --bind unix:/home/your_username/flask_project/myflaskapp.sock -m 007 wsgi:application
Restart=always

[Install]
WantedBy=multi-user.target

چند نکته:

  • --workers 3: تعداد workerها را بر اساس تعداد هسته‌های CPU سرور (معمولاً 2n+1 یا n*2+1) تنظیم کنید.
  • --bind unix:/.../myflaskapp.sock: Gunicorn را برای ارتباط با Nginx از طریق یک سوکت Unix (به جای پورت TCP) تنظیم می‌کند که امن‌تر و سریع‌تر است.
  • -m 007: پرمیشین‌ها سوکت را تنظیم می‌کند تا Nginx بتواند به آن دسترسی داشته باشد.
  • Restart=always: در صورت crash شدن اپلیکیشن، Gunicorn را به صورت خودکار دوباره راه‌اندازی می‌کند.

فایل را ذخیره (Ctrl+X, Y, Enter) کرده و سرویس را فعال و راه‌اندازی کنید:

sudo systemctl daemon-reload
sudo systemctl start myflaskapp
sudo systemctl enable myflaskapp

می‌توانید وضعیت سرویس را با sudo systemctl status myflaskapp بررسی کنید.

تنظیم Reverse Proxy با Nginx

Nginx به عنوان یک وب سرور بسیار کارآمد و سریع عمل می‌کند و مسئولیت‌های زیادی را بر عهده می‌گیرد:

  • Reverse Proxy: درخواست‌های HTTP از کاربران را دریافت و به Gunicorn ارسال می‌کند.
  • Static File Serving: فایل‌های استاتیک (CSS, JS, تصاویر) را مستقیماً سرو می‌کند که سرعت را افزایش می‌دهد.
  • SSL/TLS: مدیریت گواهی‌های امنیتی (HTTPS) را انجام می‌دهد.
  • Load Balancing: در صورت وجود چندین نمونه از Gunicorn، درخواست‌ها را بین آن‌ها تقسیم می‌کند.

۱. نصب Nginx

sudo apt install nginx -y

۲. ایجاد فایل پیکربندی Nginx

یک فایل پیکربندی جدید برای اپلیکیشن خود در /etc/nginx/sites-available/ ایجاد کنید:

sudo nano /etc/nginx/sites-available/myflaskapp

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

server {
    listen 80;
    server_name your_domain.com www.your_domain.com;

    location / {
        include proxy_params;
        proxy_pass http://unix:/home/your_username/flask_project/myflaskapp.sock;
    }

    location /static {
        alias /home/your_username/flask_project/static;
    }
}

این تنظیمات Nginx را روی پورت 80 (HTTP) گوش می‌دهد و درخواست‌ها را به سوکت Gunicorn شما هدایت می‌کند. همچنین، فایل‌های استاتیک را مستقیماً از پوشه `static` پروژه شما سرو می‌کند.

۳. فعال‌سازی پیکربندی Nginx

یک سیم‌لینک از فایل پیکربندی به پوشه sites-enabled ایجاد کنید:

sudo ln -s /etc/nginx/sites-available/myflaskapp /etc/nginx/sites-enabled/

فایل پیکربندی پیش‌فرض Nginx را حذف کنید تا تداخلی ایجاد نشود:

sudo rm /etc/nginx/sites-enabled/default

۴. تست و راه‌اندازی مجدد Nginx

پیکربندی Nginx را از نظر خطا بررسی کنید و سپس آن را راه‌اندازی مجدد نمایید:

sudo nginx -t
sudo systemctl restart nginx
sudo systemctl enable nginx

حالا با مراجعه به نام دامنه خود (مثلاً http://your_domain.com)، باید اپلیکیشن Flask خود را ببینید.

۵. افزودن SSL با Certbot (HTTPS)

برای امنیت و سئو بهتر، همیشه باید از HTTPS استفاده کنید. Certbot از Let’s Encrypt گواهی SSL رایگان ارائه می‌دهد:

sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d your_domain.com -d www.your_domain.com

دستورالعمل‌های Certbot را دنبال کنید. این ابزار به صورت خودکار Nginx را برای HTTPS پیکربندی می‌کند و یک cron job برای تمدید خودکار گواهی‌ها ایجاد می‌کند.

تنظیمات Apache به عنوان Reverse Proxy (جایگزین Nginx)

اگر ترجیح می‌دهید از Apache به جای Nginx استفاده کنید، مراحل کمی متفاوت خواهد بود:

۱. نصب Apache

sudo apt install apache2 -y

۲. فعال‌سازی ماژول‌های لازم

sudo a2enmod proxy proxy_http proxy_balancer headers rewrite
sudo systemctl restart apache2

۳. ایجاد Virtual Host

sudo nano /etc/apache2/sites-available/myflaskapp.conf
<VirtualHost *:80>
    ServerName your_domain.com
    ServerAlias www.your_domain.com

    DocumentRoot /home/your_username/flask_project

    <Directory /home/your_username/flask_project>
        Require all granted
    </Directory>

    # Static files
    Alias /static /home/your_username/flask_project/static

    <Location /static>
        Require all granted
    </Location>

    # Proxy requests to Gunicorn
    ProxyPreserveHost On
    ProxyRequests Off
    ProxyPass / unix:/home/your_username/flask_project/myflaskapp.sock|http://localhost/
    ProxyPassReverse / unix:/home/your_username/flask_project/myflaskapp.sock|http://localhost/

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

۴. فعال‌سازی Virtual Host و راه‌اندازی مجدد Apache

sudo a2ensite myflaskapp.conf
sudo a2dissite 000-default.conf
sudo systemctl restart apache2

فراموش نکنید که your_domain.com و your_username را با مقادیر واقعی جایگزین کنید.

مدیریت متغیرهای محیطی و امنیت

متغیرهای محیطی (Environment Variables) برای نگهداری اطلاعات حساس مانند کلیدهای API، رمزهای عبور دیتابیس و تنظیمات مختلف اپلیکیشن بسیار مهم هستند. هرگز این اطلاعات را مستقیماً در کد یا کنترل ورژن (Git) قرار ندهید.

۱. استفاده از فایل `.env`

می‌توانید در ریشه پروژه Flask خود یک فایل `.env` بسازید و متغیرها را در آن تعریف کنید:

# .env
SECRET_KEY=very_secret_key_here
DATABASE_URL=postgresql://user:password@host:port/database

سپس از پکیج python-dotenv برای بارگذاری این متغیرها در اپلیکیشن استفاده کنید:

pip install python-dotenv

در فایل `wsgi.py` یا `app.py`، قبل از ایجاد نمونه اپلیکیشن، این کد را اضافه کنید:

# wsgi.py
from dotenv import load_dotenv
load_dotenv() # بارگذاری متغیرها از .env

# بقیه کد اپلیکیشن شما
from app import create_app
application = create_app()

مطمئن شوید که فایل `.env` در فایل `.gitignore` پروژه شما قرار دارد تا به صورت ناخواسته در Git آپلود نشود.

۲. تنظیم مجوزهای فایل‌ها

مجوزهای فایل‌ها و پوشه‌ها را به درستی تنظیم کنید. Gunicorn به مجوز خواندن و نوشتن در سوکت و Nginx به مجوز خواندن فایل‌های استاتیک نیاز دارد. معمولاً کاربر اپلیکیشن (مثلاً `your_username`) مالکیت فایل‌ها را دارد و Nginx (که با کاربر `www-data` اجرا می‌شود) به گروه `www-data` دسترسی خواندن را می‌دهد. اگر در تنظیم پرمیشین‌ها مشکل داشتید، می‌توانید از دستورات زیر استفاده کنید:

sudo chown -R your_username:www-data /home/your_username/flask_project
sudo chmod -R 775 /home/your_username/flask_project
sudo chmod -R g+s /home/your_username/flask_project

این دستورات به گروه `www-data` اجازه دسترسی به فایل‌ها را می‌دهند. همچنین، دستور `chmod -R 775` به کاربر مالک و گروه اجازه خواندن، نوشتن و اجرا می‌دهد، در حالی که دیگران فقط اجازه خواندن و اجرا دارند.

مانیتورینگ و لاگ‌برداری

پس از deployment، نظارت بر عملکرد اپلیکیشن و بررسی لاگ‌ها برای شناسایی مشکلات احتمالی حیاتی است.

۱. بررسی لاگ‌های Gunicorn

لاگ‌های Gunicorn را از طریق Systemd Journal مشاهده کنید:

sudo journalctl -u myflaskapp.service -f

گزینه -f به شما امکان می‌دهد لاگ‌ها را به صورت Real-time دنبال کنید.

۲. بررسی لاگ‌های Nginx/Apache

لاگ‌های Nginx در /var/log/nginx/access.log (برای درخواست‌ها) و /var/log/nginx/error.log (برای خطاها) قرار دارند.

sudo tail -f /var/log/nginx/access.log
sudo tail -f /var/log/nginx/error.log

برای Apache، لاگ‌ها در /var/log/apache2/access.log و /var/log/apache2/error.log هستند.

نکات کلیدی برای بهینه‌سازی و مقیاس‌پذیری

برای اینکه اپلیکیشن Flask شما در ترافیک بالا عملکرد خوبی داشته باشد، این نکات را در نظر بگیرید:

  • کشینگ (Caching): از ابزارهایی مانند Redis یا Memcached برای ذخیره نتایج پرکاربرد استفاده کنید تا از درخواست‌های مکرر به دیتابیس جلوگیری شود.
  • بهینه‌سازی دیتابیس: ایندکس‌گذاری صحیح، بهینه‌سازی کوئری‌ها و استفاده از ORM به صورت کارآمد، سرعت دیتابیس را به شدت افزایش می‌دهد.
  • کاهش اندازه درخواست‌ها: فایل‌های CSS و JS را فشرده (minify) کنید و از CDN برای سرویس‌دهی فایل‌های استاتیک استفاده کنید.
  • افزایش Workers در Gunicorn: تعداد workerها را بر اساس منابع سرور خود تنظیم کنید. (--workers)
  • Load Balancing: در صورت نیاز به مقیاس‌پذیری بیشتر، می‌توانید چندین سرور Flask/Gunicorn را پشت یک Load Balancer (مانند Nginx یا سرویس‌های ابری) قرار دهید.

عیب‌یابی سریع و راه‌حل‌های رایج

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

مشکل ۱: Nginx خطای 502 Bad Gateway می‌دهد.

علت: Nginx نمی‌تواند با Gunicorn ارتباط برقرار کند.

راه‌حل:

  1. مطمئن شوید سرویس Gunicorn (myflaskapp.service) در حال اجراست: sudo systemctl status myflaskapp
  2. بررسی کنید مسیر سوکت Gunicorn در فایل سرویس Gunicorn و پیکربندی Nginx دقیقاً یکسان باشد.
  3. مجوزهای سوکت را بررسی کنید. کاربر `www-data` (کاربر Nginx) باید به سوکت دسترسی داشته باشد. اگر نیاز است: sudo chown your_username:www-data /home/your_username/flask_project/myflaskapp.sock و sudo chmod 660 /home/your_username/flask_project/myflaskapp.sock

مشکل ۲: اپلیکیشن Flask روی دامنه قابل دسترسی نیست.

علت: پیکربندی Nginx/Apache اشتباه است یا DNS به درستی تنظیم نشده.

راه‌حل:

  1. رکورد A دامنه خود را بررسی کنید که به IP سرور شما اشاره کند.
  2. فایل پیکربندی Nginx (/etc/nginx/sites-available/myflaskapp) را چک کنید که server_name درست باشد.
  3. مطمئن شوید که Nginx/Apache پس از تغییرات راه‌اندازی مجدد شده است.
  4. فایروال (UFW) را بررسی کنید که پورت‌های 80 و 443 باز باشند.

مشکل ۳: فایل‌های استاتیک (CSS/JS) نمایش داده نمی‌شوند.

علت: Nginx/Apache نمی‌تواند فایل‌های استاتیک را پیدا کند یا مجوز دسترسی ندارد.

راه‌حل:

  1. مسیر location /static در پیکربندی Nginx/Apache را بررسی کنید که به درستی به پوشه `static` پروژه شما اشاره کند.
  2. مطمئن شوید که پوشه `static` و فایل‌های آن دارای مجوز خواندن برای کاربر `www-data` (یا کاربر Apache) هستند.
  3. در کد Flask خود، از url_for('static', filename='css/style.css') برای آدرس‌دهی فایل‌های استاتیک استفاده کنید.

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

Q1: آیا می‌توانم Flask را بدون Gunicorn یا uWSGI مستقیم با Nginx راه‌اندازی کنم؟

A1: خیر، Flask به تنهایی یک وب سرور تولید (production-ready) نیست. برای مدیریت درخواست‌های همزمان، پایداری و امنیت در محیط production، به یک WSGI سرور مانند Gunicorn یا uWSGI نیاز دارید. Nginx یک وب سرور است و نقش Reverse Proxy را ایفا می‌کند، اما نمی‌تواند کد پایتون Flask را اجرا کند.

Q2: چگونه می‌توانم به‌روزرسانی‌های جدید کد را روی سرور اعمال کنم؟

A2: بهترین روش استفاده از Git است. پس از Push کردن تغییرات به مخزن Git خود، وارد سرور شده، به دایرکتوری پروژه بروید و دستور git pull را اجرا کنید. سپس، محیط مجازی را مجدداً فعال کرده، pip install -r requirements.txt را اجرا کنید (در صورت تغییر وابستگی‌ها) و در نهایت Gunicorn را راه‌اندازی مجدد کنید: sudo systemctl restart myflaskapp.

Q3: آیا لازم است برای هر اپلیکیشن Flask یک سرور جداگانه داشته باشم؟

A3: خیر، شما می‌توانید چندین اپلیکیشن Flask را روی یک سرور اجرا کنید. کافیست برای هر اپلیکیشن یک سرویس Gunicorn با سوکت جداگانه ایجاد کنید و سپس در تنظیمات Nginx/Apache، برای هر دامنه یا ساب‌دامین یک بلوک server/VirtualHost جداگانه تعریف کرده و آن را به سوکت Gunicorn مربوطه ارجاع دهید.

Q4: چگونه می‌توانم دیتابیس (مثلاً PostgreSQL) را روی سرور راه‌اندازی کنم؟

A4: برای نصب PostgreSQL روی اوبونتو می‌توانید از دستور sudo apt install postgresql postgresql-contrib -y استفاده کنید. سپس یک کاربر و دیتابیس جدید برای پروژه خود ایجاد کرده و مجوزهای لازم را تنظیم کنید. جزئیات این کار در مقاله جداگانه بخشی از این مبحث است که باید به طور مفصل به آن پرداخته شود.

امیدواریم این راهنمای جامع به شما کمک کرده باشد تا با اطمینان کامل، اپلیکیشن Flask خود را روی سرور مستقر کنید. با تمرین و استفاده از این کدها، فرآیند deployment برای شما بسیار ساده‌تر خواهد شد.

Table of Contents

آخرین نوشته‌ها