استقرار برای کار(Deploy to Production)

این قسمت از آموزش فرض می کند که شما سروری دارید که می خواهید برنامه خود را در آن مستقر کنید. این یک نمای کلی از نحوه ایجاد فایل توزیع و نصب آن را ارائه می دهد، اما به جزئیات در مورد سرور یا نرم افزار مورد استفاده نمی پردازد. می‌توانید یک محیط جدید در رایانه توسعه‌دهنده خود راه‌اندازی کنید تا دستورالعمل‌های زیر را امتحان کنید، اما احتمالاً نباید از آن برای میزبانی یک برنامه عمومی واقعی استفاده کنید. برای فهرستی از روش‌های مختلف میزبانی برنامه، به Deploying to Production مراجعه کنید.

ساخت و نصب

When you want to deploy your application elsewhere, you build a wheel (.whl) file. Install and use the build tool to do this.

$ pip install build
$ python -m build --wheel

می توانید فایل را در dist/flaskr-1.0.0-py3-none-any.whl پیدا کنید. نام فایل در قالب {project name}-{version}-{python tag} -{abi tag}-{platform tag} می باشد.

این فایل را در دستگاه دیگری کپی کنید، یک virualenv را راه‌اندازی کنید ، سپس فایل را با pip نصب کنید.

$ pip install flaskr-1.0.0-py3-none-any.whl

Pip پروژه شما را به همراه وابستگی های آن نصب می کند.

از آنجایی که این یک ماشین متفاوت است، برای ایجاد پایگاه داده در پوشه نمونه، باید init-db را دوباره اجرا کنید.

$ flask --app flaskr init-db

When Flask detects that it's installed (not in editable mode), it uses a different directory for the instance folder. You can find it at .venv/var/flaskr-instance instead.

پیکربندی کلید مخفی(Secret Key)

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

برای دریافت یک کلید مخفی تصادفی می توانید از دستور زیر استفاده کنید:

$ python -c 'import secrets; print(secrets.token_hex())'

'192b9bdd22ab9ed4d12e236c78afcb9a393ec15f71bbf5dc987d54727823bcbf'

فایل config.py را در پوشه نمونه ایجاد کنید که در صورت وجود، کارخانه از آن می خواند. مقدار تولید شده را در آن کپی کنید.

.venv/var/flaskr-instance/config.py
SECRET_KEY = '192b9bdd22ab9ed4d12e236c78afcb9a393ec15f71bbf5dc987d54727823bcbf'

همچنین می‌توانید هر پیکربندی ضروری دیگری را در اینجا تنظیم کنید، اگرچه SECRET_KEY تنها مورد نیاز برای Flaskr است.

اجرای یک سرور کار(Production)

هنگام اجرای عمومی به جای توسعه، نباید از سرور توسعه داخلی استفاده کنید ( flask run ). سرور توسعه توسط Werkzeug برای راحتی ارائه شده است، اما به گونه ای طراحی نشده است که کارآمد، پایدار یا ایمن باشد.

در عوض، از سرور WSGI تولیدی استفاده کنید. به عنوان مثال، برای استفاده از Waitress, ، ابتدا آن را در محیط مجازی نصب کنید:

$ pip install waitress

You need to tell Waitress about your application, but it doesn't use --app like flask run does. You need to tell it to import and call the application factory to get an application object.

$ waitress-serve --call 'flaskr:create_app'

Serving on http://0.0.0.0:8080

برای فهرستی از روش‌های مختلف میزبانی برنامه، به Deploying to Production مراجعه کنید. Waitress فقط یک مثال است که برای آموزش انتخاب شده است زیرا از ویندوز و لینوکس پشتیبانی می کند. سرورهای WSGI و گزینه های استقرار بیشتری وجود دارد که می توانید برای پروژه خود انتخاب کنید.

با به توسعه ادامه دهید! ادامه دهید.