در این مقاله نحوه ی پیکربندی سرور Ubuntu 14.04 برای استفاده توسط اپلیکیشن های به زبان Python 3.x و بر روی وب سرور Apache توضیح داده شده است.

نرم افزارهای تحت وب به زبان پایتون همانند همه ی زبان های دیگر مانند پی اچ پی برای اجرا شدن روی سرور نیاز به نصب و پیکربندی نرم افزارهای مورد نیاز خود را دارند؛ اما اگر در بین سرویس های میزبانی وب اشتراکی ایران گشتی بزنید، متوجه خواهید شد که اغلب آن ها هاست مخصوص PHP یا ASP ارائه می کنند و یا اگر اسمی از Python هم در پلن هایشان درج شده باشد، مربوط به نصب بودن پیشفرض پایتون روی سرورهای لینوکس است و خبری از سایر بسته ها و فریم ورک های مورد نیاز برای اجرای یک وب سایت پایتونی نیست.

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

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

در این نوشته سعی کرده ام مراحل نصب و راه اندازی یک سرور مخصوص پایتون رو با موارد مورد نیاز ولی نامرتبط با خود پایتون رو هم تا حد امکان توضیح بدهم.

 

تهیه سرور مجازی

سرور مجازی را تقریبا همه ی سرویس های میزبانی ارائه می دهند و طبق نیاز خود و تعداد وب سایتی که می خواهید روی آن میزبانی کنید، پلن مورد نظرتان رو انتخاب کنید.

تنها مورد قابل ذکر در این مرحله انتخاب سیستم عامل سرورتان است که اغلب امکان انتخاب آن داده می شود. بر روی سرورهای لینوکس معمولا سیستم عامل CentOS 5 نصب می شود که از چندین سال پیش مورد استفاده قرار می گیرد ولی با توجه به قدیمی بودن پکیج های نرم افزاری موجود روی آن و گذشته از مشکلات امنیتی، در بیشتر موارد که نیاز به پکیج جدیدی دارید مجبور خواهید بود آن را دستی دانلود و نصب کنید که این هم علاوه بر داشتن مشکلاتی در نصب، گهگاه به علت نیاز به پکیج های دیگر که آنها هم قدیمی هستند، درست نصب نخواهند شد.

گزینه دیگر سیستم عامل Ubuntu است که معمولا در به روز رسانی بهتر از مورد قبلی عمل می کند ولی تقریبا مقدار Ram بیشتری به مقدار ۵۰ تا ۱۰۰ مگابایت اشغال می کند. در این آموزش هم به توضیح همین سیستم عامل و نسخه ی ۱۴.۰۴ آن خواهیم پرداخت.

 

به روزرسانی 

پس از ورود از طریق SSH به سرور، با دستورات زیر بسته های نرم افزاری رو به آخرین نسخه بروزسانی می کنیم:

sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade

و سپس سرور رو ریبوت می کنیم:

sudo reboot

 

نصب بسته ها

برای نصب پایتون ۳:

sudo apt-get install python3 python3-dev python3-setuptools

 

نصب وب سرور آپاچی و ماژول mod_wsqi برای ارتباط پایتون ۳ با آپاچی:

sudo apt-get install apache2 libapache2-mod-wsgi-py3

 

اگر می خواهید از سیستم پایگاه داده ی Postgresql اسفاده کنید:

sudo apt-get install postgresql postgresql-server-dev-9.3 libpq-dev

 

پکیج های متدوال دیگر که در صورت استفاده از کتابخانه PIL برای تولید تصاویر و ... مورد نیاز خواهند بود:

sudo apt-get install libfreetype6-dev libjpeg-dev

 

pip

برای نصب، به روزرسانی و حذف بسته های پایتون به جای دانلود و نصب دستی آن ها که زمان زیادی می برند و همچنین حذف و به روزرسانی آن ها هم مشکل خواهد بود از بسته ی pip استفاده می کنیم.

نسخه ی آخر آن را اگر در repository خود سیستم عامل برای پایتون ۳ موجود نبود، به شیوه زیر نصب می کنیم:

cd /tmp
wget https://pypi.python.org/packages/source/p/pip/pip-xxx.tar.gz
tar xzvf pip-xxx.tar.gz
cd pip-xxx
sudo python3 setup.py install

به جای xxx جدیدترین نسخه آن درج شود

 

فضاهای مجازی پایتون virtualenv

در این مرحله می توانیم نصب بسته های مورد نیاز پایتون و نصب سیستم وب سایت خودمون رو انجام بدیم ولی برای داشتن امکان استفاده از چندین وب سایت مستقل با پایتون های مستقل روی یک سرور استفاده از virtualenv به شدت توصیه می گردد. با نصب این بسته امکان داشتن محیط های پایتون ایزوله و نصب بسته ها و کتابخانه های خاص در محدوده ی یک محیط پایتون مجازی بدون تداخل با محیط پایتون دیگر داشته باشیم که علاوه بر افزایش امنیت و عدم دسترسی یک محیط به محیط دیگر، امکان استفاده از دو نسخه مختلف از یک بسته در دو محیط متفاوت رو میسر می کند.

برای نصب آخرین نسخه این بسته برای پایتون ۳ آن را به صورت زیر نصب می کنیم:

cd /tmp
wget https://pypi.python.org/packages/source/v/virtualenv/virtualenv-xxx.tar.gz
tar xvfz virtualenv-xxx.tar.gz
cd virtualenv-xxx
sudo python3 setup.py install

به جای xxx جدیدترین نسخه آن درج شود

 

پس از نصب برای ایجاد محیط ها به شکل زیر عمل می کنیم:

اگر از کاربر root استفاده نمی کنید و یا می خواهید محیطی مختص کاربری به جز root ایجاد کنید ابتدا با دستورات زیر به عنوان کاربر وارد شوید:

su jalil

پس از ورود رمز عبور و ظاهر شدن علامت $ برای تبدیل به حالت عادی دستور زیر را وارد کنید:

bash

برای ایجاد یک محیط مجازی پایتون جدید در مسیر دلخواهی مانند home/www/jalil:

virtualenv /home/www/jalil

سپس وارد دایرکتوری مورد نظر شده:

cd /home/www/jalil

و برای فعال کردن پایتون این محیط در خط فرمان:

source bin/activate

اکنون هر دستوری وارد کنیم مخصوص این محیط مجازی پایتون عمل خواهد کرد. برای مثال می خواهیم با دستور pip چند بسته ی پرکاربرد رو در این محیط نصب کنیم:

pip install psycopg2 mysql-python pytz Pillow

همچنین برای نصب سیستم فریم ورک مانند Savang یا Django:

pip install django

برای غیرفعال کردن پایتون محیط مجازی در خط فرمان و بازگشت به پایتون اصلی هم از دستور زیر استفاده می کنیم:

deactivate

 

تنظیمات Apache Virtual Hosts

اکنون سرور ما آماده است تا هر نوع اسکریپت و سیستم پایتونی رو در محیط های مجزا میزبانی کند.

برای اینکه Apache بتواند کدهای پایتون ۳ را اجرا کند قبلا mod_wsgi را نصب کرده ایم.

تنها تنظیمات مورد نیاز باقی مانده مربوط به virtualhost ها است که یک virtualhost آپاچی رو به یک اسکریپت پایتون متصل می کند تا با دسترسی کاربر به دامنه مرتبط، اپلیکیشن پایتون مورد نظر اجرا شود. برای این منظور در مستندات اکثر فریم ورک ها یا سیستم های مدیریت محتوا، تنظیمات مختص آن سیستم ذکر می شود ولی تنظیمات عمومی آن در آپاچی نسخه ۲.۳ به بالا به شکل زیر خواهد بود:

فایل conf یک virtualhost رو باز کرده و تنظیمات زیر را به انتهای آن اضافه می کنیم:


برای اجرای اپلیکیشن پایتون در حالت Daemon:

WSGIScriptAlias / /path/to/your/python/application/wsgi.py
WSGIDaemonProcess hamdollahi.ir python-path=/path/to/your/python/application:/path/to/python/enviroment/lib/python3.4/site-packages
WSGIProcessGroup hamdollahi.ir   

<Directory /path/to/your/application/root>
    <Files wsgi.py>
        Require all granted
    </Files>
</Directory>

و برای فایل های استاتیک:

Alias /static/ /path/to/your/static/files

<Directory /path/to/your/static/files/>
    Require all granted
</Directory>

برای تنظیمات دقیق تر یا تنظیمات مرتبط با وب سرورهای دیگر هم بایستی به مستندات اپلیکیشن پایتون خود مراجعه کنید.