15 กันยายน 2557

Published กันยายน 15, 2557 by with 0 comment

ติดตั้ง Django กับ Apache โดยใช้ mod_wsgi

สวัสดีครับทุกท่าน ก่อนที่เราจะไปเริ่มเขียน Django กันต่อ ผมขอแนะนำวิธีการนำ Django ไปใช้งานกับ Apache โดยให้ผู้อ่านทำการติดตั้ง Python กับ Apache ก่อนนะครับ ขั้นตอนนี้ผมไม่ขอพูดถึงครับ



Windows

1.ให้โหลด http://www.lfd.uci.edu/~gohlke/pythonlibs/#mod_wsgi โดยเลือกไฟล์ตามนี้ครับ
ถ้าคอมเป็น 32 บิต เลือก mod_wsgi-3.5.ap24.win32-py*.*.zip
ถ้าคอมเป็น 64 บิต เลือก mod_wsgi‑3.5.ap24.win‑amd64‑py*.*.zip
*.* คือเวชั่นของ Python เช่น 3.4
2.ให้แตกไฟล์ออกมา ภายในจะมีไฟล์ mod_wsgi.so ให้เอาไฟล์นั้นคัดลอกไปวางที่โฟลเดอร์ apache modules เช่น C:\Program Files\Apache Software Foundation\Apache2.4\modules ครับ
3.เข้าไปตั้งค่าไฟล์ http.conf โดยไฟล์จะอยู่ที่ Apache2.4\conf ครับ ให้เพิ่มโค้ดนี้ลงไปเพื่อโหลด  mod_wsgi เข้ามาครับ
LoadModule wsgi_module modules/mod_wsgi.so
4.ตอนนี้ คุณต้องเชื่อมโยงกับโครงการของ Django
5.ให้โฟลเดอร์ apache ในโฟลเดอร์หน้า project ของ django และสร้างไฟล์ django.wsgi และ apache_mydjango.conf ไว้ในโฟลเดอร์apache (ห้ามเปลี่ยนชื่อไฟล์ django.wsgi)
6.ให้ไปเพิ่มโค้ดด้านล่างที่ไฟล์ http.conf
Include "c:/projects/mysite/apache_django_wsgi.conf"
7.ไปแก้ไขโค้ดที่ไฟล์ django.wsgi
import os, sys

sys.path.append('c:/projects/mysite')
os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings'

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

แก้ไขโค้ดที่ไฟล์ apache_djang_wsgi.conf

Alias /images/ "c:/projects/mysite/templates/images/"
<Directory "d:/projects/mysite/images>
Order allow,deny
Allow from all
</Directory>

WSGIScriptAlias / "c:/projects/mysite/apache/django.wsgi"

<Directory "c:/projects/mysite/apache">
Allow from all
</Directory>

<VirtualHost *:80>
    DocumentRoot d:/projects/mysite
    ServerName 127.0.0.1

</VirtualHost>

8.จะได้ลักษณะแบบนี้
mysite/
        mysite/
                 settings.py
                 urls.py, wsgi.py.
        manage.py
        apache /
        apache_django_wsgi.conf, django.wsgi

Linux

1.ติดตั้ง mod_wsgi ของ apache2 (sudo apt-get install libapache2-mod-wsgi ใน Debian)
2.เพิ่มโค้ดด้านล่างลงในไฟล์ httpd.conf (/etc/apache2/httpd.conf):
Alias /media/ /var/www/media/
<Directory /var/www/media>
Order deny,allow
Allow from all
</Directory>
WSGIScriptAlias / /var/www/apache/django.wsgi
<Directory /var/www/apache>
Order deny,allow
Allow from all
</Directory>

3. สร้างไฟล์ใหม่ใน /var/www/apache/django.wsgi แล้วคัดลอกนี้ไปวาง:
import os, sys
root = os.path.join(os.path.dirname(__file__), 'ที่ตั้งของ  project django ตัวอย่างเช่น /usr/local/src')
sys.path.insert(0, root)
sys.path.append('/var/www')
sys.path.append('/usr/local/src/myproject')
os.environ['DJANGO_SETTINGS_MODULE'] = 'myproject.settings'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()

4.ใช้คำสั่ง chmod o+r /var/www/apache/django.wsgi

5.ใช้คำสั่ง chmod o+rx /var/www/apache

6.ใช้คำสั่ง chmod o+rx /usr/local/src

7. วางโค้ดด้านล่างในบรรทัดสุดท้าขฃยของ /etc/profile และ /etc/bash.bashrc
export PYTHONPATH=/usr/local/src/myproject:$PYTHONPATH
export PYTHONPATH=/usr/local/src:$PYTHONPATH

8. เริ่ม apache ใหม่
sudo /etc/init.d/apache2 restart

ติดตามบทความต่อไปนะครับ
ขอบคุณครับ

0 ความคิดเห็น:

แสดงความคิดเห็น

แสดงความคิดเห็นได้ครับ :)