نوشته های من !

راجع به تجربه های شخصی از دنیای برنامه نویسی می نویسم، یا از روزمرگی هام …
انتقال نرم‌افزار نوشته شده با Flask به سرور اوبونتو
نویسنده:
۲۹ خرداد ۹۵
flask
مقدمه:

Flask یک چهارچوب کوچک (Micro-framework) جهت توسعه سریع نرم‌افزارهای تحت وب به زبان پایتون هست. برای آموزش مقدماتی این چهارچوب می‌تونین آموزش هفت قسمتی این لینک رو دنبال کنید.

توضیح مقدماتی:

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

نکته: هر بخش از دستورات که شما می‌توانید با سلیقه خود نام و یا محل ذخیره سازی را انجام دهد، با رنگ قرمز مشخص خواهد شد. (سایر دستورات نیازی به تغییر ندارند.)

مرحله اول: ( نصب آپاچی و فعالسازی mod_wsgi)

با استفاده از دستور زیر می‌توانید آپاچی را نصب نمایید:

sudo apt-get install apache2

پس از نصب آپاچی، اگر آی‌پی و یا آدرس سرور خود را وارد نمایید باید متنی با عنوان «It works!» برای شما نمایش داده شود. پس از نصب آپاچی بر روی سرور، با استفاده از دستور زیر می‌توانید mod_wsgi را نصب نمایید:

sudo apt-get install libapache2-mod-wsgi python-dev

و جهت فعالسازی mod_wsgi بر روی سرور از دستور زیر استفاده می‌نماییم:

sudo a2enmod wsgi

تا به اینجا موفق شدیم بر روی سرور اوبونتوی خود آپاچی را نصب کرده و تنظیمات فعالسازی mod_wsgi را انجام دهیم.

مرحله دوم: (نصب Flask)

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

برای نصب این مدیر بسته‌ها ابتدا به سایت Anaconda مراجعه کنید. [صفحه دریافت]

با توجه به نیاز خود می‌توانید از بین بسته‌های پایتون ۳.۵ و ۲.۷ با معماری‌های ۶۴ و ۳۲ بیت انتخاب نمایید، در این آموزش ما بسته پایتون ۳.۵ با معماری ۶۴ بیت را دریافت میکنیم. [لینک دریافت پایتون ۳.۵ با معماری ۶۴ بیت]

در صورتی که از محیط ترمینال استفاده می‌کنید، برای دریافت دستور مقابل را وارد نمایید:

wget http://repo.continuum.io/archive/Anaconda3-4.0.0-Linux-x86_64.sh

بعد از دریافت با استفاده از دستور bash می‌توانید مراحل نصب را شروع نمایید:

bash Anaconda3-4.0.0-Linux-x86_64.sh

نکته: در جواب آخرین سؤال در زمان نصب بسته، جواب yes را وارد نمایید. (این سؤال جهت مشخص نمودن نسخه پیش‌فرض پایتون سیستم می‌باشد.)

بعد از اتمام مراحل نصب، با اجرای دستور python در ترمینال می‌بایست وارد محیط پایتون شده و پیغامی مبنی بر استفاده کردن از پایتون ۳.۵ و نسخه Anaconda خود مانند شکل زیر مشاهده نمایید. (جهت مشاهده تصویر با سایز بزرگ بر روی آن کلیک کنید.)

مشاهده مشخصات پایتون و Anaconda

سپس با استفاده از کلیدهای ترکیبی Ctrl+D و یا نوستن دستور exit() از محیط پایتون خارج شده و مراحل بعد را انجام دهید.

مرحله سوم: (ایجاد ساختار مناسب چهارچوب Flask)

جهت ایجاد ساختار پوشه‌های مناسب برای ایجاد یک نرم‌افزار Flask، ابتدا به دایرکتوری /var/www رفته و چهارچوب مورد نظر را ایجاد می‌کنیم.

از دستور ذکر شده جهت رفتن به دایرکتوری مورد نظر استفاده نمایید:

cd /var/www

با استفاده از دستور mkdir می‌توانید پوشه نرم‌افزار خود را با نام مورد نظر خود بسازید. (در دستور زیر با جایگزین کردن نام Flask به نام مورد نظر خود، می‌توانید نام نرم‌افزار خود را مشخص نمایید.)

sudo mkdir Flask

سپس با استفاده از دستور زیر به داخل پوشه ساخته شده بروید:

cd Flask

با استفاده از دستور زیر یک پوشه دیگر با نام public_html بسازید:

sudo mkdir public_html

سپس با وارد کردن دستور زیر وارد دایرکتوری public_html شوید و دو پوشه با نام‌های static و templates بسازید. (جهت توسعه نرم‌افزار تحت چهارچوب Flask وجود این پوشه‌ها الزامی است.)

cd public_html
sudo mkdir static templates

پس از اتمام مراحل گفته شده، ساختار پوشه‌های شما میبایست مشابه زیر باشد:

|—-Flask
|——–public_html
|————–static
|————–templates

سپس یک فایل با نام __init__.py ساخته (داخل پوشه public_html) که این فایل حاوی کدهای برنامه شما می‌باشد:

sudo nano __init__.py

کدهای زیر را داخل فایل وارد نمایید:

from flask import Flask
app = Flask(__name__)
@app.route(“/”)
def hello():
return “Hello, I’m a Flask application!”
if __name__ == “__main__”:
app.run()

تغییرات را ذخیره کنید و ویرایشگر را ببندید و با اجرا کردن دستور مقابل از صحت تنظیمات اطمینان حاصل کنید:

sudo python __init__.py

پیغام مورد انتظار در زمان اجرای این دستور «Running on http://localhost:5000/” یا “Running on http://127.0.0.1:5000/”» هست.

مرحله چهارم: (تنظیم و فعالسازی یک هاست مجازی)

دستور زیر (برای اوبونتوهای نسخه بالاتر از ۱۳.۱۰) وارد نمایید: (اگر از نسخه پایینتر استفاده می‌کنید پسوند .conf را از انتهای دستور حذف نمایید.)

sudo nano /etc/apache2/sites-available/Flask.conf

سپس دستورات زیر را داخل فایل درج نمایید: (اگر نام‌های استفاده شده را با توجه به همین آموزش وارد کرده‌اید تنها بایستی بخش ServerName را به نام دامنه خود و یا آی‌پی سرور تغییر دهید.)

<VirtualHost *:80>
ServerName mywebsite.com
ServerAdmin admin@mywebsite.com
WSGIScriptAlias / /var/www/Flask/flask.wsgi
<Directory /var/www/Flask/public_html/>
Order allow,deny
Allow from all
</Directory>
Alias /static /var/www/Flask/public_html/static
<Directory /var/www/Flask/public_html/static/>
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

دستورات وارد شده را ذخیره نمایید و هاست مجازی را با استفاده از دستور زیر فعال نمایید:

sudo a2ensite Flask

مرحله پنجم: (ایجاد فایل wsgi)

وب سرور آپاچی جهت اجرای نرم‌افزار نوشته شده با Flask از یک فایل با پسوند wsgi استفاده می‌کند. جهت ایجاد این فایل ابتدا به مسیر نرم‌افزار خود به آدرس /var/www/Flask رفته و فایلی با نام flask.wsgi ایجاد نمایید:

cd /var/www/Flask
sudo nano flask.wsgi

و کدهای زیر را وارد نمایید:

#!/usr/bin/python
import sys
import logging
logging.basicConfig(stream=sys.stderr)
sys.path.insert(0,”/var/www/Flask/”)

from public_html import app as application
application.secret_key = ‘Add your secret key’

با تغییرات انجام داده شده، ساختار پوشه‌های شما باید به صورت زیر به‌روزرسانی شده باشد

|——–Flask
|—————-public_html
|———————–static
|———————–templates
|———————–__init__.py
|—————-flask.wsgi

مرحله ششم و آخر: (بارگذاری مجدد آپاچی)

با استفاده از دستور زیر می‌توانید آپاچی را به‌روزرسانی نماید تا تغییرات شما بر روی سرور اعمال شوند:

sudo service apache2 restart

با باز کردن آدرس سایت خود می‌بایست پیغام «Hello, I’m a Flask application!» مشاهده نمایید.

پی‌نوشت۱: در صورت مشاهده پیغام خطا و باز نشدن سایت بعد از وارد کردن کدهای مورد نظر خود در فایل __init__، می‌توانید با اجرای مستقیم فایل مورد نظر و مشاهده پیام ذکر شده در مرحله سوم از سالم بودن کدهای خود اطمینان حاصل نمایید.

cd /var/www/Flask/public_html
python __init__.py

پی‌نوشت۲: در صورت مشاهده پیغام خطا و باز نشدن سایت در هر مرحله می‌توانید با وارد کردن کد زیر سابقه خطاهای ضبط شده در آپاچی را مشاهده نمایید و نسبت به رفع مشکل اقدام نمایید:

sudo nano /var/log/apache2/error.log

پی‌نوشت۳: توجه داشته باشید جهت به‌روزرسانی هرگونه تغییرات بر روی وب‌سایت ابتدا باید عملیات بارگذاری مجدد آپاچی (ذکر شده در مرحله ششم) را انجام دهید. در غیر این صورت تغییرات شما قابل مشاهده نخواهند بود.

پی‌نوشت ۴: جهت نصب هر بسته‌ای که در مدیر بسته Anaconda موجود نبود، می‌توانید از دستور زیر استفاده نمایید: [مشاهده بسته‌های موجود]

conda install <package_name>

و همچنین جهت نصب بسته‌های مورد نظر از صفحه گیت‌هاب از دستور زیر استفاده نمایید:

conda install git+<git address( starts with https and ends with .git)>

و با اجرا کردن دستور زیر از بسته‌های موجود در سرور (نصب شده) و همچنین نسخه آنها مطلع شوید:

conda list

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *