แม้ว่าหลาย ๆ นักพัฒนา Django อาจมองว่าเป็นการดูหมิ่นศาสนาบางครั้งก็จำเป็นต้องปรับใช้จริง Django แอปพลิเคชันบน Windows / IIS โดยเฉพาะอย่างยิ่งเมื่อทำงานกับไคลเอนต์ที่ใช้โครงสร้างพื้นฐานรอบ ๆ ระบบนิเวศของ Windows ส่วน 'ดูหมิ่น' มาจาก Django ได้รับการกำหนดเป้าหมายที่สภาพแวดล้อม Unix โดยอาศัยคุณสมบัติเช่น WSGI , FastCGI และเครื่องมือบรรทัดคำสั่งซึ่งทั้งหมดนี้เป็นสิ่งแปลกปลอมสำหรับ Windows โชคดีที่ความเข้ากันได้ของ Django / IIS ได้รับการปรับปรุงให้ดีขึ้นด้วยการเพิ่มคุณสมบัติ (ซึ่งอาจจะเป็น kludge) ทั้งใน Windows และด้าน Python + Django ของสมการจึงช่วยแก้ไขปัญหาความเข้ากันได้ระหว่างสองโลกทางเทคนิคที่แตกต่างกัน
บทช่วยสอนสั้น ๆ ที่มุ่งเน้นจะนำคุณไปสู่การตั้งค่าพื้นฐานของโครงการ Django บน Windows ครอบคลุมการติดตั้ง Python, Django และเครื่องมือที่เกี่ยวข้องรวมถึงการรันโปรเจ็กต์ Django ทั้งแบบสแตนด์อโลนและแบบเซิร์ฟเวอร์ FastCGI ประการหลังมีความสำคัญมากขึ้นโดยบังเอิญตั้งแต่นั้นมา ตอนนี้ IIS รองรับ FastCGI อย่างเป็นทางการแล้ว (บน IIS 7+ เพียงติดตั้งคุณสมบัติ CGI)
บันทึก: บทช่วยสอนนี้จัดทำขึ้นสำหรับผู้ที่มีความเข้าใจในการใช้งาน Windows และผู้ที่คุ้นเคยกับคอนโซลการจัดการ IIS เวอร์ชันของ IIS ที่ใช้ในบทช่วยสอนนี้คือ 8.5 แต่คำอธิบายและเทคนิคจะคล้ายกันในเวอร์ชันก่อนหน้า บทช่วยสอนนี้ใช้ Python 2.7 และ Django 1.7 เนื่องจากเป็นเวอร์ชันที่ฉันใช้สำหรับโครงการของฉัน คุณสามารถหาอื่นได้ การสอน Django ที่นี่ .
เคล็ดลับสำหรับมือโปร: หากคุณกำลังจะปรับใช้โครงการ Django (หรือแม้แต่ Python ธรรมดา) หลายโครงการหรือถ้าคุณเป็นนักพัฒนาคุณควรดูที่ Virtualenv เครื่องมือสำหรับสร้างสภาพแวดล้อม Python ที่แยกได้
ประการแรก ดาวน์โหลด Python . มีตัวติดตั้ง MSI ทั้งแบบ 32 บิตและ 64 บิตและคุณควรเลือกตัวติดตั้งที่เหมาะสมกับเครื่องที่คุณกำลังติดตั้ง
วิธีการออกแบบกรณีศึกษาพื้นฐานของ PIP
สิ่งสำคัญคือคุณต้องติดตั้ง Python 2.7.9 ขึ้นไปเนื่องจากเวอร์ชัน Python ที่ขึ้นต้นด้วย 2.7.9 จะรวมอยู่ด้วย PIP ตัวจัดการไลบรารี / แพ็คเกจ / ซอฟต์แวร์ Python ซึ่งใช้เพื่อติดตั้งทุกอย่างในบทช่วยสอนนี้
ขั้นตอนการติดตั้งนั้นตรงไปตรงมาและเรียบง่าย จะเสนอให้ติดตั้ง Python ใน C:Python27
ไดเรกทอรีซึ่งคุณควรยอมรับเพราะทำให้ชีวิตง่ายขึ้นในภายหลัง พยายามอย่าให้นิสัยของ Windows ติดตั้งสิ่งต่างๆในไดเรกทอรีที่มีช่องว่างในชื่อ
ไดเร็กทอรีพื้นฐานหลังการติดตั้งจะมีไดเร็กทอรีย่อยประมาณ 8 ไดเร็กทอรีไฟล์เบ็ดเตล็ดบางไฟล์และไฟล์ปฏิบัติการสองตัวที่ชื่อ Python.exe
และ PythonW.exe
. เดิมเป็นล่ามบรรทัดคำสั่งเริ่มต้นและ Python shell ในขณะที่ตัวหลังเป็นเพียงตัวแปลซึ่งจะไม่ใช้ (หรือวางไข่) หน้าต่างคอนโซลหากมีการเรียกใช้และด้วยเหตุนี้จึงเหมาะสำหรับการเรียกใช้แอปพลิเคชัน GUI Python
จากนั้นควรเพิ่ม Python ในตัวแปรสภาพแวดล้อม PATH ของระบบ เสร็จแล้วใน การตั้งค่าระบบขั้นสูง (หรือ คุณสมบัติของระบบ ), ใน ขั้นสูง โดยคลิกที่แท็บ ตัวแปรสภาพแวดล้อม ปุ่ม. มีสองไดเรกทอรีที่จะถูกเพิ่ม: C:Python27
และ C:Python27Scripts
. สิ่งเหล่านี้ควรต่อท้ายรายการเส้นทางโดยคั่นด้วยอัฒภาค (;
) ตอนจบของตัวแปร PATH ของคุณควรมีลักษณะดังนี้ ;C:Python27;C:Python27Scripts
เคล็ดลับสำหรับมือโปร: คุณอาจต้องการติดตั้ง โกว ซึ่งเป็นชุดยูทิลิตี้บรรทัดคำสั่ง Unix ที่มีน้ำหนักเบาคล้ายกับ Cygwin มันจะให้เครื่องมือเช่น
ls
แต่ยังมีเครื่องมือที่น่าสนใจกว่าเช่นmake
,wget
,curl
,ssh
,scp
,gzip
และtar
.
สามารถติดตั้ง Django โดยใช้ PIP ด้วยคำสั่งเช่น pip install django
กระบวนการนี้อาจดึงการอ้างอิงเพิ่มเติมบางอย่างหากยังไม่มีอยู่ในระบบของคุณ มิฉะนั้นจะติดตั้งเฉพาะ Django โดยมีเอาต์พุตคล้ายกับสิ่งต่อไปนี้:
Downloading/unpacking django Installing collected packages: django Successfully installed django Cleaning up...
คุณสามารถตรวจสอบว่าทั้ง Python และ Django สำหรับ Windows ทำงานได้หรือไม่โดยเริ่มพรอมต์คำสั่งของ Windows ใหม่เรียกใช้ python
และป้อนคำสั่ง import django
คำสั่งที่พรอมต์ Python หากทำงานได้อย่างถูกต้องไม่ควรมีเอาต์พุตหรือข้อความต่อจาก import django
คำสั่ง; เช่น:
Python 2.7.9 (default, Dec 10 2014, 12:24:55) [MSC v.1500 32 bit (Intel)] on win32 Type 'help', 'copyright', 'credits' or 'license' for more information. >>> import django >>>
'โครงการ' ของ Django ประกอบด้วย 'แอป' อย่างน้อยหนึ่งรายการ ไดเรกทอรีระดับบนสุดของโปรเจ็กต์มักจะมีไดเร็กทอรีย่อยโปรเจ็กต์พิเศษ 1 รายการซึ่งมีการตั้งค่าและข้อมูลระดับโปรเจ็กต์ทั่วไปหนึ่งไดเร็กทอรีย่อยต่อแอพและสคริปต์บรรทัดคำสั่งที่เรียกว่า manage.py
ตัวอย่างเช่น:
C:Develdjangoprojectsrc>dir Volume in drive C is OS Volume Serial Number is 6A3D-C1B8 Directory of C:Develdjangoprojectsrc 22/12/2014 04:25 . 22/12/2014 04:25 .. 22/12/2014 04:19 project 22/12/2014 04:58 djangoapp 16/12/2014 03:30 templates 16/12/2014 00:50 250 manage.py 1 File(s) 250 bytes 5 Dir(s) 23,552,929,792 bytes free
สามารถแจกจ่ายโปรเจ็กต์ Django ได้ง่ายๆโดยการเก็บถาวรไดเร็กทอรีโปรเจ็กต์ทั้งหมดและคลายการบีบอัดลงในเครื่องอื่น ในตัวอย่างข้างต้นโครงการมี project
ไดเร็กทอรีย่อยไดเร็กทอรีแอ็พพลิเคชันชื่อ djangoapp
และอ็อพชันเสริม templates
ไดเร็กทอรีย่อย
manage.py
สคริปต์คือ 'มีดทหารสวิส' ของแอปพลิเคชัน Django มันทำทุกอย่างตั้งแต่การสร้างแอพใหม่ไปจนถึงการย้ายฐานข้อมูลไปจนถึงการรันเซิร์ฟเวอร์ HTTP ทดสอบ (ฝังตัว) หรือแม้แต่เซิร์ฟเวอร์ FastCGI
หากโปรเจ็กต์และแอพใช้งานได้คุณควรจะสามารถเริ่มต้นเซิร์ฟเวอร์ HTTP เฉพาะสำหรับการพัฒนา Django เริ่มต้นได้โดยรันคำสั่ง manage.py runserver
ซึ่งควรให้ผลลัพธ์คล้ายกับสิ่งต่อไปนี้:
C:Develdjangoprojectsrc>manage.py runserver Performing system checks... System check identified no issues (0 silenced). December 23, 2014 - 01:19:02 Django version 1.7.1, using settings 'project.settings' Starting development server at http://127.0.0.1:8000/ Quit the server with CTRL-BREAK.
ดังที่คุณเห็นจากข้อความนี้จะเริ่มเซิร์ฟเวอร์บน localhost พอร์ต 8000 คุณสามารถเข้าถึงได้ทันทีด้วยเว็บเบราว์เซอร์ของคุณ
ตัวเลือกที่น่าสนใจกว่าคือการเปิดใช้งานเซิร์ฟเวอร์ FastCGI ด้วย FastCGI คุณสามารถใช้ IIS, Apache หรือเว็บเซิร์ฟเวอร์อื่น ๆ เพื่อให้บริการแอปพลิเคชันในการตั้งค่าการใช้งานจริง เพื่อให้ใช้งานได้คุณต้องดาวน์โหลดไฟล์ fcgi.py (คำสั่งการจัดการ Django เพื่อเรียกใช้ Django บน Windows ด้วย IIS ผ่าน FastCGI) และใส่ลงใน management/commands
ไดเรกทอรีย่อยของไดเรกทอรีย่อยของแอป Django (ไม่ใช่ของโครงการ!) ทั้ง management
และ commands
ไดเรกทอรีย่อย ต้อง มีไฟล์ว่างชื่อ __init__.py
(ซึ่งเปลี่ยนไดเรกทอรีเหล่านั้นให้เป็นโมดูล Python)
fcgi.py
เป็นอะแดปเตอร์ WSGI to FastCGI ที่เรียบง่ายและเรียบง่ายที่ทำ ไม่ รองรับการฟังบนซ็อกเก็ต TCP หรือไปป์และทำการประมวลผลทั้งหมดโดยใช้ stdin
และ stdout` ดังนั้นจึงไม่สามารถใช้งานได้กับเว็บเซิร์ฟเวอร์ที่ทันสมัยเช่น nginx แต่ จะ ทำงานกับ IIS
หากโหลดโมดูล FastCGI ใน IIS (หรือเพียงแค่โมดูล CGI ใน IIS 7+) คอนโซลการจัดการ IIS จะมีไอคอน“ FastCGI Settings” Django เป็นเฟรมเวิร์กที่มีการกำหนดเส้นทาง URL ของตัวเองดังนั้นแอป Django จึงต้องติดตั้งเป็น 'ตัวจัดการ' ใน IIS สำหรับเส้นทางที่เฉพาะเจาะจง ในการติดตั้งแอป Django บน IIS’s เว็บไซต์เริ่มต้น เลือกในคอนโซลการจัดการและเปิดไฟล์ การแมปตัวจัดการ คุณสมบัติการกำหนดค่า ในนั้นคลิกที่ไฟล์ เพิ่มการแมปโมดูล ... การดำเนินการและป้อนข้อมูลต่อไปนี้:
*
เพื่อจัดการคำขอทั้งหมดด้วยการกำหนดเส้นทาง Django ภายในFastCgiModule
เพื่อใช้โมดูล FastCGI ของ IISpython.exe
ต้องตั้งค่าพา ธ และอาร์กิวเมนต์บรรทัดคำสั่งโดยใช้อักขระไปป์ (|
) เป็นตัวคั่น ค่าตัวอย่างสำหรับการตั้งค่านี้คือ: C:Python27python.exe|C:appsrcmanage.py fcgi --pythonpath C:appsrc --settings project.settings
โปรดทราบว่าคุณต้องระบุ fcgi
คำสั่งสำหรับ manage.py
สคริปต์และกำหนดเส้นทางการค้นหาของล่าม Python สำหรับโปรเจ็กต์ด้วยตนเองตลอดจนชื่อโมดูล Python สำหรับโมดูลการตั้งค่าของโปรเจ็กต์กล่องโต้ตอบการกำหนดค่าของคุณควรมีลักษณะดังนี้:
จากนั้นคลิกไฟล์ ขอข้อ จำกัด และแก้ไขไฟล์ การทำแผนที่ แท็บ ยกเลิกการเลือกช่องทำเครื่องหมาย“ Invoke handler ก็ต่อเมื่อมีการแมปคำขอกับ…” (มิฉะนั้น IIS จะมีปัญหาในการแมปสิ่งที่คิดว่าเป็นไดเร็กทอรีย่อยในคำขอ URL):
คลิกตกลงในกล่องโต้ตอบข้อมูลตัวจัดการ จากนั้น IIS จะขอให้คุณยืนยันการสร้างรายการแอปพลิเคชัน FastCGI ที่ตรงกันซึ่งคุณจะต้องยืนยัน รายการนี้จะปรากฏในไฟล์ การตั้งค่า FastCGI สามารถเข้าถึงได้ที่หน้าจอหลักของ IIS Management Console รายการเริ่มต้นที่สร้างโดย IIS เองนั้นเพียงพอ แต่มีการตั้งค่าเพิ่มเติมบางอย่างที่คุณอาจต้องการใช้ประโยชน์จาก:
เว็บแอปพลิเคชันสมัยใหม่ใช้ไฟล์ทรัพยากรหลายไฟล์เช่น CSS, JavaScript และอื่น ๆ และแอป Django ก็ไม่มีข้อยกเว้น Django มีคุณสมบัติที่สะดวกมากซึ่งช่วยให้นักพัฒนาสามารถรวมทรัพยากรที่จำเป็นลงในแผนผังไดเรกทอรีแอปพลิเคชัน แต่ Django สามารถแยกและคัดลอกไปยังไดเร็กทอรีแบบคงที่ที่เหมาะสมได้ โดยพื้นฐานแล้วนี่เป็นคุณสมบัติที่นักพัฒนาควบคุมและตำแหน่งที่ Django จะจัดเก็บไฟล์แบบคงที่จะถูกควบคุมใน settings.py
ของโปรเจ็กต์ โครงการที่ประพฤติดีจะใช้เส้นทางที่มีเหตุผลสำหรับสิ่งนี้ แต่ไม่ได้มาตรฐาน
แอปที่จัดการไฟล์ที่อัปโหลดจะเก็บไว้ในไดเร็กทอรีที่มีการจัดการในลักษณะเดียวกันซึ่งใน Django มีชื่อว่า media
static
และ media
จำเป็นต้องเพิ่มไดเรกทอรีในการกำหนดค่า IIS เป็นไดเรกทอรีเสมือน:
ขั้นตอนสำคัญคือการกำหนดค่าไฟล์ การแมปตัวจัดการ คุณลักษณะสำหรับแต่ละไดเร็กทอรีและลบตัวจัดการแอป Django ออกจาก StaticFile
ตัวจัดการเป็นสิ่งที่สำคัญที่สุด
โปรดทราบว่า static
IIS ต้องอ่านไดเร็กทอรี (เช่นเดียวกับไฟล์และไดเร็กทอรีอื่น ๆ ทั้งหมดในโครงการ Django) แต่ media
ไดเร็กทอรีต้องสามารถเขียนได้โดย IIS การกำหนดค่าไซต์สุดท้ายควรมีลักษณะดังต่อไปนี้:
วิธีเลี่ยงการตรวจสอบอายุด้วยบัตรเครดิต
SQLite ทำงานตามค่าเริ่มต้นบน Windows เช่นเดียวกับระบบที่เหมือน Unix ขณะนี้ฐานข้อมูลโอเพ่นซอร์สอื่น ๆ ส่วนใหญ่ทำงานบน Windows ได้แล้ว PostgreSQL ซึ่งฉันขอแนะนำ ในการติดตั้ง Windows ที่มีอยู่อาจมีข้อกำหนดในการปรับใช้ Django กับ MS SQL Server สิ่งนี้เป็นไปได้โดยใช้ไฟล์ ไดรเวอร์สะพาน ODBC หรือโดยใช้ไฟล์ ไดรเวอร์ MS SQL ดั้งเดิม . ตามทฤษฎีแล้วทั้งสองอย่างใช้ได้ผล แต่ฉันยังไม่ได้ทดสอบ อย่างน้อยพารามิเตอร์การเชื่อมต่อฐานข้อมูล (ในไฟล์ settings.py
ของโปรเจ็กต์) จะต้องมีการเปลี่ยนแปลงเพื่อเปลี่ยนไปใช้ฐานข้อมูลใหม่ ต้องทำการย้ายข้อมูลด้วยตนเอง
โปรดทราบว่าหากใช้ฐานข้อมูล SQLite ทั้งไฟล์ฐานข้อมูลและไดเร็กทอรีที่อยู่จะต้องเขียนได้โดย IIS
การกำหนดค่าที่อธิบายไว้ได้รับการทดสอบและพิสูจน์แล้วว่าใช้งานได้ แต่หากมีบางอย่างผิดพลาดต่อไปนี้เป็นขั้นตอนพื้นฐานสำหรับการแก้ไขปัญหาการติดตั้ง Django สำหรับ Windows ของคุณ:
C:inetpublogsFailedReqLogFiles
ไดเร็กทอรี (หรือที่คล้ายกันขึ้นอยู่กับการกำหนดค่าของคุณ) จากนั้นคุณต้องเปิดใช้งานการติดตามสำหรับเว็บไซต์นั้น ๆ (หรือไดเร็กทอรีเสมือน) ใน * Configure-> Failed request tracing … หนังบู๊.เพื่อให้แน่ใจว่า Django ได้รับการปรับแต่งให้เหมาะกับสภาพแวดล้อมแบบ Unix และวิธีการรัน Django ที่ครอบคลุมและกว้างขวางที่สุดคือบนระบบ Linux (เช่นด้วย uwsgi และ nginx)
แต่การทำให้ Django ทำงานบน Windows นั้นใช้เวลาไม่มากดังที่แสดงในบทช่วยสอนนี้ ขั้นตอนบางขั้นตอนที่อธิบายไว้อาจดูขัดจังหวะจากมุมมองของ Windows ล้วนๆ แต่จำเป็นและโชคดีที่ความพยายามในการกำหนดค่าเป็นเพียงครั้งเดียวเท่านั้น เมื่อกำหนดค่าแล้วแอปพลิเคชัน Django ควรทำงานในลักษณะเดียวกับที่ใช้กับแพลตฟอร์ม Linux