# زبان های اسکریپتی > Python >  آموزش : Apache + Django   نحوه نصب جانگو در آپاچی

## Bahmany

با سلام به دوستان عزیز

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


*نیازمندی ها :*
1- Python 2.7
2- Xampp
3- سیستم عامل ویندوز ، هر ورژنی

*پیش فرض ها :
*اینگونه در نظر میگیریم که دو برنامه ی بالا نصب شده و کار میکنند


1- ابتدا Django را از نصب میکنیم
2- سعی کنید همیشه به پیشنهاد خود دیجانگو مبنی بر استفاده از آخرین ورژن رسمی استفاده کنید ، ( همکنون 1.6.5 )
3- از آدرس روبر دانلود رو شروع می کنیم : https://pypi.python.org/pypi/Django/1.6.5 ... 
4- بعد از دانلود پکیج رو از حالت فشرده خارج و نصب رو شروع کنید
cmd.exe
cd Django-1.6.5
python setup.py install

1-4- بعد از نصب به آدرس زیر مراجعه میکنیم و دیگر نیازی به پوشه دانلود شده نداریم و می توانیم آنرا حذف کنیم
1-5- توجه داشته باشید با cmd وارد پوشه ی مدیریت پکیج های پایتون رفته و اقدام به ایجاد یک سایت نماییم ، به شرح زیر 

cmd.exe

cd C:\Python27\Lib\site-packages\django\bin
python django-admin.py startproject mysite

همکنون صاحب یک سایت شدید و نوبت به ساخت یک اپلیکیشن میره

cd mysite

python manage.py startapp MyApp1






5- همکنون دیجانگو نصب شد و یک سایت نیز آماده شد
6- می رویم سراغ آپاچی
7- در ابتدای کار باید کتابخانه mod_wsgi.so را در آپاچی نصب کنیم - برای اینکار میبایست به این آدرس مراجعه نمایید
8- اگر  آپاچی 32بیتی دارید پیشنهاد میکنم پکیج mod_wsgi‑3.5.ap24.win32‑py2.7.zip را استفاده نمایید ولی در صورتی که در مراحل بعدی دچار عدم استارت آپاچی شدید می تونید سایر بیست پیکیج ارائه شده در سایت رو امتحان کنید و ببینید کدومش با آپاچی اجرا میشه
9- بعد از دانلود و unzip فایل mod_wsgi-3.5.ap22.win-amd64-py2.7.so را به mod_wsgi.so تغییر نام دهید
10- وارد پوشه xampp شوید و سپس وارد پوشه apache و سپس وارد پوشه modules و فایل اغییرنام یافته را در آنجا کپی نمایید
11- حالا یه back بزنید و وارد پوشه conf شوید
12- و سپس فایل httpd.conf رو باز کرده و متن های زیر را وارد نمایید


LoadModule wsgi_module modules/mod_wsgi.so
WSGIPythonHome C:/Python27/
WSGIPythonPath C:/Python27/python.exe
WSGIScriptAlias / "C:/xampp/htdocs/mysite/mod.wsgi"
Alias /ms "C:/xampp/htdocs/mysite"



13- در بالا ما به آپاچی می فهمانیم که ماژول دانلود شده را لود کرده و سپس پوشه پایتون و همچنین فایل اجرایی پایتون را در مخش داشته باشد و سپس اسکریپت اصلی سایتی که با دیجانگو ساختیم رو بهش معرفی نموده و سپس یک Alias که کار رو راحتتر میکنه بهش معرفی میکنیم
14- حالا از قسمت مدیریت پکیج های پایتون و همونجایی که سایتمون ساخته شده بود پوشه رو کات می کنیم تو داکیومنت های آپاجی یعنی
cut C:\Python27\Lib\site-packages\django\bin\mysite
paste C:\xampp\htdocs
15- در مسیر که پیست کردیم وارد شده و یک فایل به نام mod.wsgi می سازمیم یعنی :
D:\xampp\htdocs\mysite\mod.wsgi
16- فایل مورد نظر را باز کرده و محتوای زیر را وارد نماییم :
import os, sys


path = 'D:/xampp/htdocs/mysite'
if path not in sys.path:
    sys.path.append(path)



os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings'

import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
17- سپس سرویس آپاجی رو یک بار ریست میکنیم
18- معمولا به ندرت پیش میاد همه چی خوب کار کنه و سرویس با خوبی لود بشه  :اشتباه:  ولی اگه مشکلی بود حتما بگید پیگیری می کنیم باهم
19- بعد از شروع سرویس وارد browser شده و بنویسید :
localhost/ms
20- و سپس سایتتون با دیجانگو به راحتی بالا میاد

مشکلی بود اعلام بفرمایید

----------


## debian@ubuntu

سلام 
دست درد نکنه خیلی آلی بود  :تشویق: 
ولی مشکل من اینکه با ران شدن سرور php و htdocs  رو از دست دادم و به htdocs  اجازه دسترسی نمیده فایها م اجرا نمیشه نمیدونم مشکل از کجاس از تنظیمات الیاس باغیر فعال کردن تنظیمات  این ماژول همه چی درست میشه راستی کنارش میشه بقیه زبونها رو داشته باشم یا هم رو از کار میندازه من از apache2.4.9 که خودم تنظیمش کردم استفاده میکنم نه از پکیج xammp و امثال هم :افسرده: 
 در ضمن قسمت
python manage.py MyApp1   جواب نداد برای ایجاد myapp1 توضیح واضح تری بدین این قسمت رو :متفکر:

----------


## Bahmany

سلام دوست عزیز و ممنونم
تو مقاله ی بالا فقط نحوه راه اندازی آپاچی با Django رو نوشته بودم و صحبت شما هم کاملا درسته
برای راه اندازی یه سایت جدید با دی جانگو و پشتیبای از بقیه زبون ها می تونی از یه Virtual Host با یک پورت متفرقه استفاده کنی و برای صدا زدن اسکریپت مورد نظر از Alias سایتت استفاده کنی تا همیشه فراخونی نشه :


NameVirtualHost *:YOUR_PORT

# Virtual Hosts

<VirtualHost *:YOUR_PORT>
    ServerName ServerName
    ServerAlias YOUR_DOMAIN.com
    KeepAlive Off
    # The first "YOUR_DOMAIN.com" is just a process group.  The name is arbitrary.
    # The "display-name" shows up when running "ps -u YOUR_USERNAME -o pid,rss,command" to list processes.  Otherwise you can't tell which process belongs to which django app.
    WSGIDaemonProcess YOUR_DOMAIN.com processes=1 threads=20 inactivity-timeout=60 display-name=[wsgi-YOUR_APP_NAME]httpd
    WSGIProcessGroup YOUR_DOMAIN.com
    WSGIScriptAlias / /home/YOUR_USERNAME/webapps/django/wsgi/YOUR_APP_NAME.wsgi
</VirtualHost>

اینطوری هیچ لطمه ای به بقیه ی زبون ها نمی خوره

----------


## Bahmany

> python manage.py MyApp1   جواب نداد برای ایجاد myapp1 توضیح واضح تری بدین این قسمت رو


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

لطفا پیام خطای مورد نظر را ذکر بفرمایید


موفق باشید

----------


## debian@ubuntu

سلام
 و ممنون از جواب تون عزیز :تشویق:  من کارم گیم نت :لبخند گشاده!:  اول وقت که خلوت  یه نگاهی کردم به تنظیمات وضعیت بهتر شد این تنظیمات من هستش
من تو لاین 3 مشکل دارم الان چون تا فعالش میکنم دسترسی به php از دست میره وerror 500 میده 
قبلان با تنظیم اعلام محل  مفسر توی فایل اسکریپت  perl درستش کرده بودم 
راستی  من فایل mod.wsgi رو mod.wsgi.py گذاشتم   درست هست چون فایل پایتون هستش 
WSGIPythonHome C:/Python27/
WSGIPythonPath C:/Python27/python.exe
WSGIScriptAlias / "M:/Server/server-web/www/gnsina/mod.wsgi.py"
Alias /ms "M:/Server/server-web/www/gnsina"
<Directory M:/Server/server-web/www/gnsina>
<Files mod.wsgi.py>
Require all granted
</Files>
</Directory>

----------


## debian@ubuntu

_سلام 
در مورد_ _python manage.py MyApp1 من پایتونرو بامسیر دهی اجرا میکنم path/python/_

----------


## Bahmany

البته خیلی نیازی نیست حتما پسوند پایتونی داشته باشه حالا همین که راه افتاد خوبه
شما این خطت عوض کن
WSGIScriptAlias / "M:/Server/server-web/www/gnsina/mod.wsgi.py"

به 

WSGIScriptAlias /ms "M:/Server/server-web/www/gnsina/mod.wsgi.py"

ایشالله درست میشه

----------


## debian@ubuntu

_سلام 
در مورد__python manage.py MyApp1 خطای 'unknown command 'myapp1_

----------


## debian@ubuntu

سلام 
دلیل نشناختن دستور _python manage.py MyApp1  با توجه به هلپ manage.py برای ساختن app باید از دستور python manage.py startapp myapp1  باید استفاده بشه_ ​

----------


## Bahmany

> _سلام 
> در مورد__python manage.py MyApp1 خطای 'unknown command 'myapp1_


با سلام
می بایست از startapp استفاده بشه یعنی :
python manage.py startapp MyApp1

متاسفانه در نوشته های بالا فراموش شده بود و همچنین متشکرم که گفتید این مسئله رو

----------


## debian@ubuntu

سلام 
میشه در مورد این  موارد توضیحی بدید  و منبع معرفی بکنید
WSGIPythonHome C:/Python27/
WSGIPythonPath C:/Python27/python.exe
"WSGIScriptAlias / "C:/xampp/htdocs/mysite/mod.wsgiچون جاهای دیگه آدرس های مختلفی دیدم یکم سردر گم شدم

----------


## Bahmany

با سلام




> WSGIPythonHome C:/Python27/


همونطور که در مثال بالا گفته شد ما یک Library File بنام mod_wsgi.so رو داخل فایل تنظیمات اپاچی لود کردیم

LoadModule wsgi_module modules/mod_wsgi.so

این فراخوونی باعث میشه یه سری تنظیمات همراه با یه سری Configuration Directives به فایل کانفیگ آپاچی اضافه بشه ، این Configuration Directives ها به شرح زیر هستند :

WSGIScriptAlias
WSGIScriptAliasMatch
WSGIApplicationGroup
WSGIDaemonProcess
WSGISocketPrefix
WSGIProcessGroup
WSGIRestrictProcess
WSGIImportScript
WSGICallableObject
WSGIPassAuthorization
WSGIAuthUserScript
WSGIAuthGroupScript
WSGIAccessScript
WSGIScriptReloading
WSGIReloadMechanism
WSGIOutputBuffering
WSGICaseSensitivity
WSGIPythonOptimize
WSGIPythonExecutable
WSGIPythonHome
WSGIPythonPath
WSGIPythonEggs
WSGIRestrictEmbedded
WSGIRestrictStdin
WSGIRestrictStdout
WSGIRestrictSignal
WSGIAcceptMutex
WSGILazyInitialization

از این ها شما پرسیدید WSGIPythonHome چیست :
در اصل این Configuration Directives به فایل mod_wsgi.so میگه مسیر موجودیت کمپایلر کجاست و فایل mod_wsgi.so هم فایل های پایتون رو با استفاده از این مسیر دهی کمپایل میکنه

WSGIPythonPath :
این Configuration Directives به فایل mod_wsgi.so میگه که مسیر نصب پایتون کجاست

WSGIScriptAlias 
این Configuration Directive که خیلی هم مهم هست و ممکنه با اشتباه در پارامترگذاری در این قسمت کل وب سرور دچار مشکل بشه وظیفش انتقال urlها به یک فایلی هست که بعنوان مبدا در همین آیتم تعریف میشه :
WSGIScriptAlias *URL-path**file-path|directory-path*
اگر URL-path برابر باشد با / آنگاه تمام مراجعات به وب سرورتون به فایلی که در *file-path|directory-path* نوشته شده map میشه و در نتیجه وب سرورتون یک محصوله میشه ، بهتره بجای / از ms/ که ذکر کرده بودم استفاده بشه یعنی یه Alias حتما بکار برده بشه ( البته اگر از یک پورت همیشه استفاده میکنید )

----------


## debian@ubuntu

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

----------


## Bahmany

> سلام
> درست شد امروز صفحه سایت رودیدم 
>  بلاخر ه متوجه شدم مشکل در اختلاف ورژن پیتون  ران شده با ورژن پایتون کامپایل کننده ماژول بود دیگه نیازی به ویرچوال هاست هم نیست همچی تر تمیز در کنار هم کار میکنن عالی بود


تبریک عرض میکنم  :)))))))
من هم وقتی بعد مدتها تمرین با دی جانگو تونسته بودم روی آپاچی بیارمش بالا احساس خوبی داشتم

----------


## arman54

سلام...آقا ما هرچي مينويسيم و بعد ميخام كه اجراشون كنم  اجرا نميشن يعني دقيقا نوشته هام نشون داده ميشن مثل notepad عمل ميكنه(opera 20 , mozilla 5.0)

----------


## Bahmany

> سلام...آقا ما هرچي مينويسيم و بعد ميخام كه اجراشون كنم  اجرا نميشن يعني دقيقا نوشته هام نشون داده ميشن مثل notepad عمل ميكنه(opera 20 , mozilla 5.0)


با سلام
وقتی این اتفاق میوفته که هنوز Apache آماده ی اجرای فایل های پایتون نیست ، این اتفاق برای همه ی زبون ها درصورتی که آپاچی ندونه چطوری اجراشون کنه پیش میاد و بجای اجرای آنها سورس رو نشون میده

 LoadModule wsgi_module modules/mod_wsgi.so

لطفا ببینید این خط رو درست فراخونی کرده باشید

----------


## hoda2020

سلام 
مرسی از آموزش خیلی خوبتون
من اون یه اپ با جنگو ساختم و با سرور خودش ران کردم و اجرا شد. بعد wampserver 2.5 رو نصب کردم که آپاچی 2.4.9 رو داره. با توجه به اینکه پایتون 3.4 رو نصب کردم و از ویندوز 64 بیتی استفاده می کنم ، این نسخه از wsgi رو دانلود کردم :
mod_wsgi‑3.5.ap24.win‑amd64‑py3.4.zip
بعد توی پوشه modules آپاچی گذاشتمش و این کد رو به httpd.conf اضافه کردم:

LoadModule wsgi_module modules/mod_wsgi.so
WSGIPythonHome E:/software/Python34
WSGIPythonPath E:/software/Python34/python.exe
WSGIScriptAlias /ms "E:/software/wamp/bin/apache/apache2.4.9/htdocs/mysite/mod.wsgi.py"
Alias /ms "E:/software/wamp/bin/apache/apache2.4.9/htdocs/mysite"


بعد هم اپ جنگو رو توی پوشه mysite ریختم.حالا دیگه wampserver اکتیو نمیشه و زرد رنگ میمونه :(
محتویات mod.wsgi.py هم به این شکل تغییر دادم:
import os, sys


path = r'E:\software\wamp\bin\apache\apache2.4.9\htdocs\m  ysite'
if path not in sys.path:
    sys.path.append(path)


os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings' 


import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()


لطفا راهنمایی کنید که کجای کارم ایراد داره خیلی خیلی واسم مهمه و کارم لنگشه.ممنون از کمکتون

----------


## n.nowroozi

تنظیمات رو به حالت پیش فرض برگردون تا ببینی مشکل از تنظیماتته یا اون wsgi که نصب کردی.

----------


## n.nowroozi

توی لینوکس یه لاگی میندازه که چی مشکل داره احتمالا توی ویندوز هم به همین شکله اما من نمیدونم مسیرش کجاست دقیقا، اون رو پیدا کن توش به احتمال زیاد نوشته کجای کار داره میلنگه

----------


## hoda2020

> توی لینوکس یه لاگی میندازه که چی مشکل داره احتمالا توی ویندوز هم به همین شکله اما من نمیدونم مسیرش کجاست دقیقا، اون رو پیدا کن توش به احتمال زیاد نوشته کجای کار داره میلنگه


متاسفانه لاگش خیلی احمقانست من الان تست کردم اما نوتیفیکشن های اجرای صحیح دیروز رو داره :(

[Tue Oct 07 13:12:57.120613 2014] [mpm_winnt:notice] [pid 3780:tid 380] AH00455: Apache/2.4.9 (Win64) PHP/5.5.12 configured -- resuming normal operations[Tue Oct 07 13:12:57.120613 2014] [mpm_winnt:notice] [pid 3780:tid 380] AH00456: Apache Lounge VC11 Server built: Mar 16 2014 12:42:59[Tue Oct 07 13:12:57.120613 2014] [core:notice] [pid 3780:tid 380] AH00094: Command line: 'E:\\software\\wamp\\bin\\apache\\apache2.4.9\\bin  \\httpd.exe -d E:/software/wamp/bin/apache/apache2.4.9'[Tue Oct 07 13:12:57.121613 2014] [mpm_winnt:notice] [pid 3780:tid 380] AH00418: Parent: Created child process 1484[Tue Oct 07 13:12:57.389613 2014] [mpm_winnt:notice] [pid 1484:tid 304] AH00354: Child: Starting 64 worker threads.[Tue Oct 07 13:42:45.723613 2014] [mpm_winnt:notice] [pid 3780:tid 380] AH00422: Parent: Received shutdown signal -- Shutting down the server.[Tue Oct 07 13:42:47.724613 2014] [mpm_winnt:notice] [pid 1484:tid 304] AH00364: Child: All worker threads have exited.[Tue Oct 07 13:42:47.747613 2014] [mpm_winnt:notice] [pid 3780:tid 380] AH00430: Parent: Child process 1484 exited successfully.

----------


## debian@ubuntu

برای داشتن php و python برروی apacheدو فایل include  در مسیر C:\Apache24\conf\extra با نام های httpd-php و httpd-python ایجاد کنید وتنظیمات هر زبان را برای Apache در آن ها قرار دهید و در فایل تنظیمات اصلی آپاچی include کنید
مثال برای php در فایل httpd-php 
# PHP-Module setup
#
 configure the path to php.ini#
"PHPInIDir "c:/php
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps


"LoadFile "c:/php/php5ts.dll
"LoadFile "c:/php/libpq.dll
"LoadModule php5_module "c:/php/php5apache2_4.dll


<"FilesMatch "\.php$>
    SetHandler application/x-httpd-php
</FilesMatch>
<"FilesMatch "\.phps$>
    SetHandler application/x-httpd-php-source
</FilesMatch>برای python در فایل httpd-python




python load for apache# 


LoadModule wsgi_module modules/mod_wsgi.so


WSGIPythonHome C:/Python27/
WSGIPythonPath C:/Python27/python.exe


WSGIScriptAlias / "C:/Apache24/htdocs/mysite/mod.wsgi

----------


## malihehshajari

سلام
من همه این کارا رو که توی آموزش اول گفتید انجام دادم ولی دیگه آپاچی استارت نمیشه 
خطای    the specified procedure could not be found  میده 

و من نتونستم نسخه mod_wsgi-3.5.ap22.win-amd64-py2.7.so رو پیدا کنم 
نسخه mod_wsgi-4.4.12+ap22vc10-cp33-none-win32.whl_FILES رو دانلود کردم

میشه راهنمایی کنید 
با تشکر

----------


## danyalbursin

سلام دوستان عزیز من برنامع نویس C++‎  و java هستم خواستم بدونم Python ارزش یاد گرفتن داره؟ اخه خیلی تعریفشو شنیدم خواستم بدونم اگه واقعا خوبه اونم یاد بگیرم!

اگه منبع خوبی سراغ دارید معرفی کنید ممنون میشم و لطفا یه توضیح کلی راجبعه کتابخانه هاش بدین و بگین واسه چه کاری بدرد میخوره هر کدوم ممنون میشم. 

و البته اینم بگین که کدوم کتابخانه هاش بهتره که زود سویچ کنم روش 
ممنون میشم کمکم کنید و اگه سوالی داشته باشید درباره ++C و #C و Java  میتونم با اندوخته های ناچیزم کمک کوچکی کنم

----------


## aminpy

لینک زیر رو هم یه نگاهی بنداز

کتاب جنگو - شروع کار و نصب جنگو

----------

