PDA

View Full Version : آموزش : Apache + Django نحوه نصب جانگو در آپاچی



Bahmany
چهارشنبه 04 تیر 1393, 18:20 عصر
با سلام به دوستان عزیز

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


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

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


1- ابتدا Django را از نصب میکنیم
2- سعی کنید همیشه به پیشنهاد خود دیجانگو مبنی بر استفاده از آخرین ورژن رسمی استفاده کنید ، ( همکنون 1.6.5 )
3- از آدرس روبر دانلود رو شروع می کنیم : https://pypi.python.org/pypi/Django/1.6.5 ... (https://pypi.python.org/packages/source/D/Django/Django-1.6.5.tar.gz#md5=e4c5b2d35ecb3807317713afa70a0c77)
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 را در آپاچی نصب کنیم - برای اینکار میبایست به این آدرس (http://www.lfd.uci.edu/~gohlke/pythonlibs/#mod_wsgi)مراجعه نمایید
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
یک شنبه 15 تیر 1393, 19:38 عصر
سلام
دست درد نکنه خیلی آلی بود :تشویق:
ولی مشکل من اینکه با ران شدن سرور php و htdocs رو از دست دادم و به htdocs اجازه دسترسی نمیده فایها م اجرا نمیشه نمیدونم مشکل از کجاس از تنظیمات الیاس باغیر فعال کردن تنظیمات این ماژول همه چی درست میشه راستی کنارش میشه بقیه زبونها رو داشته باشم یا هم رو از کار میندازه من از apache2.4.9 که خودم تنظیمش کردم استفاده میکنم نه از پکیج xammp و امثال هم:افسرده:
در ضمن قسمت
python manage.py MyApp1 جواب نداد برای ایجاد myapp1 توضیح واضح تری بدین این قسمت رو:متفکر:

Bahmany
دوشنبه 16 تیر 1393, 10:11 صبح
سلام دوست عزیز و ممنونم
تو مقاله ی بالا فقط نحوه راه اندازی آپاچی با 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
دوشنبه 16 تیر 1393, 10:17 صبح
python manage.py MyApp1 جواب نداد برای ایجاد myapp1 توضیح واضح تری بدین این قسمت رو

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

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


موفق باشید

debian@ubuntu
دوشنبه 16 تیر 1393, 10:45 صبح
سلام
و ممنون از جواب تون عزیز:تشویق: من کارم گیم نت:لبخند: اول وقت که خلوت یه نگاهی کردم به تنظیمات وضعیت بهتر شد این تنظیمات من هستش
من تو لاین 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
دوشنبه 16 تیر 1393, 11:15 صبح
سلام
در مورد
python manage.py MyApp1 من پایتونرو بامسیر دهی اجرا میکنم path/python/

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

به

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

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

debian@ubuntu
دوشنبه 16 تیر 1393, 11:30 صبح
سلام
در مورد
python manage.py MyApp1 خطای 'unknown command 'myapp1

debian@ubuntu
سه شنبه 17 تیر 1393, 10:05 صبح
سلام
دلیل نشناختن دستور python manage.py MyApp1 با توجه به هلپ manage.py برای ساختن app باید از دستور python manage.py startapp myapp1 باید استفاده بشه ​

Bahmany
سه شنبه 17 تیر 1393, 11:27 صبح
سلام
در مورد
python manage.py MyApp1 خطای 'unknown command 'myapp1


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

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

debian@ubuntu
چهارشنبه 18 تیر 1393, 11:50 صبح
سلام
میشه در مورد این موارد توضیحی بدید و منبع معرفی بکنید

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

Bahmany
چهارشنبه 18 تیر 1393, 12:43 عصر
با سلام


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
چهارشنبه 18 تیر 1393, 12:53 عصر
سلام
درست شد امروز صفحه سایت رودیدم
بلاخر ه متوجه شدم مشکل در اختلاف ورژن پیتون ران شده با ورژن پایتون کامپایل کننده ماژول بود دیگه نیازی به ویرچوال هاست هم نیست همچی تر تمیز در کنار هم کار میکنن عالی بود

Bahmany
چهارشنبه 18 تیر 1393, 12:56 عصر
سلام
درست شد امروز صفحه سایت رودیدم
بلاخر ه متوجه شدم مشکل در اختلاف ورژن پیتون ران شده با ورژن پایتون کامپایل کننده ماژول بود دیگه نیازی به ویرچوال هاست هم نیست همچی تر تمیز در کنار هم کار میکنن عالی بود

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

arman54
پنج شنبه 26 تیر 1393, 10:04 صبح
سلام...آقا ما هرچي مينويسيم و بعد ميخام كه اجراشون كنم اجرا نميشن يعني دقيقا نوشته هام نشون داده ميشن مثل notepad عمل ميكنه(opera 20 , mozilla 5.0)

Bahmany
جمعه 27 تیر 1393, 10:21 صبح
سلام...آقا ما هرچي مينويسيم و بعد ميخام كه اجراشون كنم اجرا نميشن يعني دقيقا نوشته هام نشون داده ميشن مثل notepad عمل ميكنه(opera 20 , mozilla 5.0)

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

LoadModule wsgi_module modules/mod_wsgi.so

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

hoda2020
چهارشنبه 16 مهر 1393, 07:42 صبح
سلام
مرسی از آموزش خیلی خوبتون
من اون یه اپ با جنگو ساختم و با سرور خودش ران کردم و اجرا شد. بعد 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
چهارشنبه 16 مهر 1393, 08:17 صبح
تنظیمات رو به حالت پیش فرض برگردون تا ببینی مشکل از تنظیماتته یا اون wsgi که نصب کردی.

n.nowroozi
چهارشنبه 16 مهر 1393, 08:21 صبح
توی لینوکس یه لاگی میندازه که چی مشکل داره احتمالا توی ویندوز هم به همین شکله اما من نمیدونم مسیرش کجاست دقیقا، اون رو پیدا کن توش به احتمال زیاد نوشته کجای کار داره میلنگه

hoda2020
چهارشنبه 16 مهر 1393, 09:12 صبح
توی لینوکس یه لاگی میندازه که چی مشکل داره احتمالا توی ویندوز هم به همین شکله اما من نمیدونم مسیرش کجاست دقیقا، اون رو پیدا کن توش به احتمال زیاد نوشته کجای کار داره میلنگه

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


[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
یک شنبه 18 آبان 1393, 10:31 صبح
برای داشتن 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
یک شنبه 17 خرداد 1394, 11:05 صبح
سلام
من همه این کارا رو که توی آموزش اول گفتید انجام دادم ولی دیگه آپاچی استارت نمیشه
خطای 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
دوشنبه 08 تیر 1394, 03:19 صبح
سلام دوستان عزیز من برنامع نویس C++ و java هستم خواستم بدونم Python ارزش یاد گرفتن داره؟ اخه خیلی تعریفشو شنیدم خواستم بدونم اگه واقعا خوبه اونم یاد بگیرم!

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

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

aminpy
دوشنبه 06 آذر 1396, 17:44 عصر
لینک زیر رو هم یه نگاهی بنداز

کتاب جنگو - شروع کار و نصب جنگو (https://amoozesh.org/django/start/)