با اینکه ویندوز محیط مناسبی برای نصب پایتون نیست، گاهی مجبور به انجام اینکار هستیم. تو این مطلب تلاش میکنم، وب اپلیکیشن پایتون رو با استفاده از IIS تو محیط ویندوز سرور راه اندازی کنم.
مسلما راه اندازی این پروژه تو محیط لینوکس با nginx یا apache ساده تره، اما وقتی تمام وب اپلیکیشن های شرکت تو محیط ویندوز سرور هست و شما برای ایجاد یک داشبورد دیتا نیاز به ساخت وب اپلیشن پایتون دارین، منطقی نیست که بخواهین اون رو تو سرور جدا گانه ای پیاده سازی کنین.
تو محیط ویندوز سرور به مسیر زیر میریم
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 به سایت 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="1.0" encoding="UTF-8"?> <configuration> <system.webServer> <handlers> <add name="FlaskHandler" path="*" verb="*" modules="FastCgiModule" scriptProcessor="C:\Python\Python.exe|C:\PySite\wfastcgi.py" resourceType="Unspecified" /> </handlers> </system.webServer> </configuration>
کد استفاده شده تو فایل app.py :
from flask import Flask app = Flask(__name__) @app.route("/") def hello(): return "Hello from FastCGI via IIS!" if __name__ == "__main__": app.run()
اگه تمام مراحل بالا رو درست انجام داده باشین، میتونین خروجی سایت رو روی IIS ببینین و با کمک Binding port و URL دلخواهتون رو برای سایت تنظیم کنین.
منابع :