ค้นหาเว็บไซต์

การติดตั้งและกำหนดค่า Django Web Framework ด้วยสภาพแวดล้อมเสมือนใน CentOS/Debian - ตอนที่ 1


“บทความนี้ได้รับการแก้ไขและอัปเดตด้วย Django เวอร์ชันล่าสุด – พฤษภาคม 2559”

เมื่อประมาณ 20 ปีที่แล้ว เมื่อ เวิลด์ไวด์เว็บ ยังอยู่ในช่วงเริ่มต้น การมีเว็บไซต์ส่วนตัวหรือเว็บไซต์ธุรกิจแทบจะเป็นความหรูหราที่หาได้ยาก ด้วยการพัฒนาเทคโนโลยีเว็บหลายอย่างในเวลาต่อมาและการแนะนำเนื้อหาแบบไดนามิกที่มาจากการรวมกันของโปรแกรมฝั่งเซิร์ฟเวอร์และฐานข้อมูล บริษัทต่างๆ จึงไม่พอใจกับการมีเว็บไซต์แบบคงที่อีกต่อไป

ดังนั้นเว็บแอปพลิเคชันจึงกลายเป็นความจริง – โปรแกรมในความหมายที่สมบูรณ์ของคำว่าทำงานบนเว็บเซิร์ฟเวอร์และเข้าถึงได้ผ่านเว็บเบราว์เซอร์

เพื่อให้การพัฒนาง่ายขึ้นและมีประสิทธิภาพมากขึ้น กรอบงานเว็บได้รับการออกแบบมาเพื่อช่วยโปรแกรมเมอร์ในการสร้างแอปพลิเคชัน กล่าวโดยสรุป เว็บเฟรมเวิร์กจะดูแลฟังก์ชันหลักทั่วไปในกระบวนการพัฒนา เช่น การจัดการกับการจัดการเซสชันผู้ใช้ การโต้ตอบกับฐานข้อมูล และแนวปฏิบัติที่ดีในการแยกตรรกะทางธุรกิจออกจากตรรกะการแสดงผล เป็นต้น

ใน ซีรีส์ Django 3 บทความ นี้ เราจะแนะนำให้คุณรู้จักกับ Django ซึ่งเป็นเฟรมเวิร์กเว็บยอดนิยมที่ใช้ Python ด้วยเหตุผลดังกล่าว จึงแนะนำให้มีความคุ้นเคยเล็กน้อยกับภาษาการเขียนโปรแกรมนี้ แต่หากคุณมีประสบการณ์เพียงเล็กน้อยหรือไม่มีเลย เราก็จะแนะนำคุณผ่านพื้นฐานต่างๆ ด้วยเช่นกัน

การติดตั้ง Django ในเซิร์ฟเวอร์ CentOS และ Debian

แม้ว่าคุณจะสามารถติดตั้ง Django จากทั้ง Debian (v1.7.7: การสนับสนุนเพิ่มเติมจะยุติลงใน ธันวาคม 2015) และ Fedora EPEL (v1.6.11: การสนับสนุนแบบขยายเวลาถูกยกเลิกในที่เก็บ เมษายน 2015) เวอร์ชันที่มีอยู่ไม่ใช่เวอร์ชัน LTS (การสนับสนุนระยะยาว) ที่เสถียรล่าสุด (v1.8.13พฤษภาคม 2016)

ในบทช่วยสอนนี้ เราจะแสดงวิธีการติดตั้ง Django v1.8.13 เนื่องจากรับประกันการขยายเวลาการสนับสนุนจนถึงอย่างน้อยในเดือนเมษายนปี 2018

วิธีการที่แนะนำในการติดตั้ง Django คือผ่าน pip ซึ่งเป็นเครื่องมือยอดนิยมสำหรับจัดการแพ็คเกจ Python นอกจากนี้ เพื่อสร้างสภาพแวดล้อม Python ที่แยกออกมา และหลีกเลี่ยงความขัดแย้งระหว่างโปรเจ็กต์ที่อาจต้องใช้ซอฟต์แวร์เวอร์ชันที่แตกต่างกัน เราขอแนะนำให้ใช้สภาพแวดล้อมเสมือน

เครื่องมือที่ใช้ในการสร้างและจัดการสภาพแวดล้อม Python เสมือนเรียกว่า virtualenv

ทำตามขั้นตอนเหล่านี้เพื่อทำการติดตั้ง:

1. สำหรับการกระจาย แบบ Fedora (ยกเว้นใน Fedora เอง) ให้เปิดใช้งานพื้นที่เก็บข้อมูล EPEL ก่อน:

yum update && yum install epel-release

2. ติดตั้ง pip และ virtualenv:

Distro ที่ใช้ Fedora:

yum install python-pip python-virtualenv
OR 
dnf install python-pip python-virtualenv
เดเบียนและอนุพันธ์:
aptitude update && aptitude install python-pip virtualenv

3. สร้างไดเรกทอรีเพื่อจัดเก็บโครงการเริ่มต้นของคุณ

mkdir ~/myfirstdjangoenv
cd ~/myfirstdjangoenv

4. สร้างและเปิดใช้งานสภาพแวดล้อมเสมือน:

virtualenv myfirstdjangoenv

คำสั่งด้านบนจะสร้างไฟล์และไดเร็กทอรีย่อยจำนวนมากลงใน ~/myfirstdjangoenv และโดยทั่วไปจะติดตั้งสำเนา Python และ pip ในเครื่องภายในไดเร็กทอรีการทำงานปัจจุบัน . ต่อไป เราต้องเปิดใช้งานสภาพแวดล้อมเสมือนที่เราเพิ่งสร้างขึ้น:

source myfirstdjangoenv/bin/activate

5. สังเกตว่าพรอมต์คำสั่งเปลี่ยนแปลงไปอย่างไรหลังจากคำสั่งสุดท้าย ถึงเวลาติดตั้ง Django แล้ว:

โปรดทราบว่า ภาพหน้าจอด้านล่างนี้ถ่ายระหว่างเวอร์ชันก่อนหน้าของบทช่วยสอนนี้ แต่ผลลัพธ์ที่คาดหวังจะเหมือนกันเมื่อติดตั้ง Django 1.8.13 ):


pip install Django==1.8.13

คุณสามารถตรวจสอบเวอร์ชัน Django ได้โดยเรียกใช้เชลล์ Python จากไดเร็กทอรีการทำงานปัจจุบันของคุณ:

python
>>> import django
>>> print(django.get_version())

(ขอย้ำอีกครั้งว่าคำสั่งข้างต้นควรส่งคืน 1.8.13 เมื่อตรวจสอบเวอร์ชัน Django ปัจจุบัน)

หากต้องการออกจากพรอมต์ Python ให้พิมพ์:

>>> exit() 

และกด Enter ถัดไป ปิดสภาพแวดล้อมเสมือน:

deactivate

โปรดทราบว่าในขณะที่สภาพแวดล้อมเสมือนยังคงปิดใช้งานอยู่ แต่ Django ไม่สามารถใช้งานได้:

วิธีสร้างโปรเจ็กต์แรกใน Django

หากต้องการสร้างโปรเจ็กต์ภายในสภาพแวดล้อมเสมือนที่เราสร้างไว้ก่อนหน้านี้ จะต้องเปิดใช้งาน:

source myfirstdjangoenv/bin/activate

ถัดไป เฟรมเวิร์กจะสร้างโครงสร้างไดเร็กทอรีทั้งหมดเพื่อจัดเก็บโปรเจ็กต์ของคุณ เมื่อต้องการทำเช่นนี้ คุณจะต้องเรียกใช้

django-admin startproject myfirstdjangoproject

คำสั่งด้านบนจะสร้างไดเร็กทอรีชื่อ myfirstdjangoproject ภายในไดเร็กทอรีการทำงานปัจจุบันของคุณ

โดยคุณจะพบไฟล์ชื่อ manage.py (ยูทิลิตี้ที่จะช่วยคุณจัดการโครงการของคุณในภายหลัง) และไดเร็กทอรีย่อยอื่น (~/myfirstdjangoenv/myfirstdjangoproject/myfirstdjangoproject) ไดเรกทอรีย่อยสุดท้ายนี้จะทำหน้าที่เป็นคอนเทนเนอร์สำหรับไฟล์โครงการ

แม้ว่าไฟล์ที่เหลือจะดูสมเหตุสมผลหลังจากที่เราได้ตรวจสอบ Python เพื่อเริ่มเขียนเว็บแอปพลิเคชันจริงแล้ว แต่ก็คุ้มค่าและควรคำนึงถึงไฟล์สำคัญที่จะพบได้ในไดเร็กทอรีคอนเทนเนอร์ของโปรเจ็กต์:

  1. myfirstdjangoproject/__init__.py: ไฟล์ว่างนี้บอก Python ว่าไดเร็กทอรีนี้ควรถือเป็นแพ็คเกจ Python
  2. myfirstdjangoproject/settings.py: การตั้งค่าเฉพาะสำหรับโครงการ Django นี้
  3. myfirstdjangoproject/urls.py: TOC (สารบัญ) ของไซต์ที่ขับเคลื่อนโดย Django ของคุณ
  4. myfirstdjangoproject/wsgi.py: จุดเริ่มต้นสำหรับเว็บเซิร์ฟเวอร์ที่เข้ากันได้กับ WSGI เพื่อให้บริการโครงการของคุณ
ls 
ls -l myfirstdjangoproject
ls -l myfirstdjangoproject/myfirstdjangoproject

นอกจากนี้ Django ยังมีเว็บเซิร์ฟเวอร์ในตัวน้ำหนักเบา (เขียนด้วยภาษา Python คล้ายกับ Python SimpleHTTP มีอะไรอีกบ้าง) ที่สามารถใช้เพื่อทดสอบแอปพลิเคชันของคุณในระหว่างการพัฒนา โดยไม่ต้องจัดการกับงานตั้งค่าเว็บเซิร์ฟเวอร์ในขั้นตอนนี้

อย่างไรก็ตาม คุณจำเป็นต้องรู้ว่าสิ่งนี้ไม่เหมาะกับสภาพแวดล้อมการผลิต – เพียงเพื่อการพัฒนาเท่านั้น หากต้องการเปิดตัวโปรเจ็กต์ที่สร้างขึ้นใหม่ ให้เปลี่ยนไดเร็กทอรีการทำงานปัจจุบันของคุณเป็นไดเร็กทอรีคอนเทนเนอร์สำหรับโปรเจ็กต์ของคุณ (~/myfirstdjangoenv/myfirstdjangoproject) และเรียกใช้:

python manage.py runserver 0.0.0.0:8000

หากคุณพบข้อผิดพลาดต่อไปนี้:

You have unapplied migrations; your app may not work properly until they are applied.
Run 'python manage.py migrate' to apply them.

ทำตามที่กล่าวไว้:

python manage.py migrate

จากนั้นเริ่มเซิร์ฟเวอร์อีกครั้ง:

python manage.py runserver 0.0.0.0:8000

เราจะพูดถึงแนวคิดเรื่องการย้ายข้อมูลในบทความถัดไปของชุดข้อมูลนี้ ดังนั้นคุณไม่ต้องสนใจข้อความแสดงข้อผิดพลาดในขณะนี้

ไม่ว่าในกรณีใด คุณสามารถเปลี่ยนพอร์ตเริ่มต้นที่เว็บเซิร์ฟเวอร์ในตัวจะรับฟังได้ ด้วยการใช้ 0.0.0.0 เป็นอินเทอร์เฟซเครือข่ายในการฟัง เราอนุญาตให้คอมพิวเตอร์เครื่องอื่นในเครือข่ายเดียวกันเข้าถึงอินเทอร์เฟซผู้ใช้ของโครงการ (หากคุณใช้ 127.0.0.1 แทน คุณจะสามารถเข้าถึง UI ได้จาก localhost เท่านั้น)

คุณยังสามารถเปลี่ยนพอร์ตเป็นพอร์ตอื่นที่คุณเลือกได้ แต่คุณจะต้องตรวจสอบให้แน่ใจด้วยว่าการรับส่งข้อมูลผ่านพอร์ตดังกล่าวได้รับอนุญาตผ่านไฟร์วอลล์ของคุณ:

firewall-cmd --add-port=8000/tcp
firewall-cmd --permanent --add-port=8000/tcp

แน่นอนว่าเป็นไปโดยไม่ได้บอกว่าคุณจะต้องอัปเดตพอร์ตที่อนุญาตหากคุณเลือกใช้พอร์ตอื่นในขณะที่เปิดตัวเว็บเซิร์ฟเวอร์แบบไลท์เวท

คุณควรเห็นผลลัพธ์ต่อไปนี้ในเทอร์มินัลของคุณ:

python manage.py runserver 0.0.0.0:8000

ณ จุดนี้ คุณสามารถเปิดเว็บเบราว์เซอร์ที่คุณชื่นชอบและนำทางไปยังที่อยู่ IP ของเครื่องที่คุณติดตั้ง Django ตามด้วยหมายเลขพอร์ต ในกรณีของฉัน มันเป็นกล่อง Debian Jessie ที่มี IP 192.168.0.25 และกำลังฟังบนพอร์ต 8000:

http://192.168.0.25:8000

แม้ว่าเราจะสามารถตั้งค่าเริ่มต้นของโปรเจ็กต์ให้เสร็จสิ้นได้จะเป็นสิ่งที่ดี แต่ก็ยังมีงานอีกมากที่ต้องทำ ดังที่ระบุไว้ในข้อความด้านบน

สรุป

ในคู่มือนี้ เราได้อธิบายวิธีการติดตั้งและกำหนดค่าสภาพแวดล้อมเสมือนสำหรับ Django ซึ่งเป็นเฟรมเวิร์กเว็บโอเพ่นซอร์สอเนกประสงค์ที่ใช้ Python

ไม่ว่าคุณจะเป็นนักพัฒนาแอปพลิเคชันหรือผู้ดูแลระบบ คุณจะต้องบุ๊กมาร์กบทความนี้และส่วนที่เหลือของซีรีส์นี้ เนื่องจากมีโอกาสที่คุณจะต้องพิจารณาถึงความจำเป็นของเครื่องมือดังกล่าวสำหรับงานประจำวันของคุณ

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

เช่นเคย อย่าลังเลที่จะส่งข้อความถึงเราหากคุณมีคำถามเกี่ยวกับบทความนี้หรือข้อเสนอแนะที่ต้องปรับปรุง เราหวังว่าจะได้ยินจากคุณ!