การติดตั้งและกำหนดค่า 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 เพื่อเริ่มเขียนเว็บแอปพลิเคชันจริงแล้ว แต่ก็คุ้มค่าและควรคำนึงถึงไฟล์สำคัญที่จะพบได้ในไดเร็กทอรีคอนเทนเนอร์ของโปรเจ็กต์:
- myfirstdjangoproject/__init__.py: ไฟล์ว่างนี้บอก Python ว่าไดเร็กทอรีนี้ควรถือเป็นแพ็คเกจ Python
- myfirstdjangoproject/settings.py: การตั้งค่าเฉพาะสำหรับโครงการ Django นี้
- myfirstdjangoproject/urls.py: TOC (สารบัญ) ของไซต์ที่ขับเคลื่อนโดย Django ของคุณ
- 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
เช่นเคย อย่าลังเลที่จะส่งข้อความถึงเราหากคุณมีคำถามเกี่ยวกับบทความนี้หรือข้อเสนอแนะที่ต้องปรับปรุง เราหวังว่าจะได้ยินจากคุณ!