نیما جمشیدی
نیما جمشیدی
خواندن ۳ دقیقه·۴ سال پیش

پیاده سازی وب اپلیکیشن پایتون (Flask) در IIS ویندوز سرور

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

مسلما راه اندازی این پروژه تو محیط لینوکس با nginx یا apache ساده تره، اما وقتی تمام وب اپلیکیشن های شرکت تو محیط ویندوز سرور هست و شما برای ایجاد یک داشبورد دیتا نیاز به ساخت وب اپلیشن پایتون دارین، منطقی نیست که بخواهین اون رو تو سرور جدا گانه ای پیاده سازی کنین.

نصب IIS به همراه FastCGI و پایتون

تو محیط ویندوز سرور به مسیر زیر می‌ریم

Server Manager -> Manage -> Add Role and Features:

گزینه Role-based or feature-based installation انتخاب می‌کنیم

سرور رو انتخاب می کنیم

گزینه Web Server (IIS) انتخاب می‌کنیم

روی Add Features کلیک می کنیم

بجز موارد مورد نیاز معمول برای نصب IIS ، ویژگی CGI رو هم انتخاب می‌کنیم

انتخاب Next و Install برای شروع فرآیند نصب

حالا IIS رو اجرا می‌کنیم

اگه پیغام زیر نمایش داده شد کلید YES رو بزنین_ در غیر اینصورت نیاز هست که Web Platform Installer رو نصب کنین

و حالا Web Platform Installer رو اجرا کنین

کلمه WFastCGI رو جستجو کنین و این فیچر رو برای IIS و پایتون نصب کنین

نسخه مناسب پایتون رو انتخاب کنین (نسخه 3.4 ) و کلیک Add و Install رو بزنین

در آخر پیغام زیر می‌بینیم

نکته خیلی مهم :

متاسفانه من با این روش نتونستم WfastCGI رو نصب کنم. بخاطر نبودن اینترنت در سرور عملیاتی و احتمالا تحریم بودن IP ایران تو مراحل نصب خطا داد(با وجود دسترسی به اینترنت) لذا برای رفع این مشکل مجبور شدم فایل رو بصورت آفلاین دانلود و نصب کنم.

نصب WFastCGI به صورت آفلاین

برای دانلود WFastCGI به سایت pypi رفته و فایل رو دانلود می‌کنیم

https://pypi.org/project/wfastcgi/

و اقدام به نصب پکیج می‌کنیم

pip install wfastcgi

به جای wfastcgi ، دایکتوری فایل دانلود شده رو به همراه اسم اون رو میزاریم و بعد این قابلیت رو فعال می‌کنیم

wfastcgi-enable


ایجاد سایت جدید

یک سایت جدید در IIS ایجاد می‌کنیم و فایل پروژه فلسک رو که قبلا نوشتیم ،توی پوشه سایت کپی می‌کنیم و بعد به سراغ دایکتوری پایتون میریم و فایل wfastcgi.py رو هم کپی می‌کنیم

توجه داشته باشین که فایل wfastcgi.py ممکنه تو مسیر روت C:\Python34 یا C:\Python34_x86 و یا حتی تو پوشه site-packages باشه

همونطور که می‌بینین تو پوشه mysite حتما باید دو فایل وجود داشته باشه. فایل app.py که کد پایتون وب اپلیکیشن فلسک هست و فایل wfastcgi.py مربوط یه فیجر نصب شده

بین ماژول های سایت، روی “Handler Mappings” کلیک می‌کنیم

و “Add Module Mapping” رو انتخاب می‌کنیم

تنظیمات رو دقیقا مثل تصویر انجام می‌دیم .دقت کنید که ممکنه مسیر پایتون و مسیر سایتمون متفاوت باشه، اما حتما باید Python.exe و wfastcgi.py رو داشته باشیم. برای مثال : C:\Python34\Python.exe|C:\inetpub\wwwroot\mysite\wfastcgi.py

روی “Request Restrictions” کلیک کنین و مطمئن بشین که تیک زده نشده

تو مرحله بعد Yes رو انتخاب کنین

حالا توی IIS به تنظیمات روت میریم و روی FastCGI Settings کلیک می‌کنیم

روی “…” جلو Environment Variables بزنین تا بتونیم مقادیر مورد نیاز رو ست کنیم

اینجا دو مقدار باید ست بشه، اول PYTHONPATH ،که مسیر پوشه سایت ایجاد شده هست

و دوم WSGI_HANDLER ، با مقدار app.app (دقت کنین که وقتی اسم اپلیکیشن app.py باشه اسم انتخابی میشه app.app )

حالا OK رو کلیک کنین و سایت رو browse کنین

درنهایت باید وب کانفیگ شبیه به زیر برای اپلیکیشن ایجاد شده باشه:

<?xml version=&quot1.0&quot encoding=&quotUTF-8&quot?> <configuration> <system.webServer> <handlers> <add name=&quotFlaskHandler&quot path=&quot*&quot verb=&quot*&quot modules=&quotFastCgiModule&quot scriptProcessor=&quotC:\Python\Python.exe|C:\PySite\wfastcgi.py&quot resourceType=&quotUnspecified&quot /> </handlers> </system.webServer> </configuration>

کد استفاده شده تو فایل app.py :

from flask import Flask app = Flask(__name__) @app.route(&quot/&quot) def hello(): return &quotHello from FastCGI via IIS!&quot if __name__ == &quot__main__&quot: app.run()

اگه تمام مراحل بالا رو درست انجام داده باشین، می‌تونین خروجی سایت رو روی IIS ببینین و با کمک Binding port و URL دلخواهتون رو برای سایت تنظیم کنین.


منابع :

medium.com

pypi.org

pythonflaskiiswindowsFastCGI
مدیر پایگاه داده در ایپاد
شاید از این پست‌ها خوشتان بیاید