วิธีใช้ Python เป็นภาษาเซิร์ฟเวอร์จากมุมมองของ PHP


11

ฉันรู้ว่าการเขียนโปรแกรมฝั่งเซิร์ฟเวอร์ด้วย PHP เท่านั้น สำหรับฉันฉันเขียนindex.phpและโทรเข้าhttp://localhost/index.phpและดูผลลัพธ์ของสคริปต์ PHP ฉันใช้ CakePHP และเข้าใจว่ามีบางสิ่งที่คุณสามารถทำได้ด้วยการเขียน URL ใหม่ แต่ในใจของฉันมีความสัมพันธ์แบบหนึ่งต่อหนึ่งระหว่าง URL และไฟล์ PHP บนเซิร์ฟเวอร์

ตอนนี้ฉันทำอะไรมากมายกับ Python แต่เพียงแค่ใช้บรรทัดคำสั่ง ฉันต้องการใช้ Python แทน PHP สำหรับโครงการต่อไปของฉัน จนถึงตอนนี้ฉันได้รับการบอกmod_pythonว่าฉันต้องใช้เฟรมเวิร์กเช่น Pylons หรือ Twisted หรือแม้แต่ Django เพื่อให้ได้ผลลัพธ์ใด ๆ เลย คนอื่นบอกว่าฉันแค่ต้องprint()ใช้ส่วนหัว HTTP จากนั้นสคริปต์ก็จะแสดงผลเหมือนที่ฉันใช้กับ PHP

ฉันต้องการเขียนบางสิ่งที่โดยทั่วไปใช้รายการไดเรกทอรีเท่านั้นและทำให้สวยเพื่อให้ฉันสามารถเข้าถึงไฟล์ PDF จำนวนมากจากเบราว์เซอร์มือถือ ฉันรู้วิธีการทำเช่นนี้กับ PHP ฉันรู้วิธีสร้างสคริปต์ Python ที่จะสร้าง HTML http://localhost/pdfcentral/ผมก็ไม่ทราบวิธีการรันสคริปต์ว่าเมื่อผมเปิด

ฉันจะต้องกำหนดค่าเซิร์ฟเวอร์ของฉันอย่างไร มันทำงานบน Ubuntu 10.04


มีหลายรูปแบบที่คุณสามารถทำได้ แต่วิธีที่ง่ายที่สุดคือการใส่สคริปต์ Python ในcgi-binไดเรกทอรีของคุณเพื่อให้เซิร์ฟเวอร์รู้ว่าจะดำเนินการและเลือกที่จะทำให้ไฟล์ PHP เปลี่ยนเส้นทางหากคุณต้องการใช้เส้นทางที่แตกต่างกัน เกี่ยวกับสคริปต์ Python คุณสามารถทำตามขั้นตอนนี้: forrestbao.blogspot.com/2009/08/…
ionFish

คำตอบ:


9

mod_pythonไม่ได้รับการพัฒนาอย่างแข็งขันอีกต่อไป ในขณะที่ Apache บอกว่าไม่ได้หมายความว่าโครงการจะตาย -

ปัจจุบัน mod_python ไม่ได้อยู่ระหว่างการพัฒนา นี่ไม่ได้หมายความว่ามัน "ตายแล้ว" ในขณะที่บางคนอ้างว่า มันหมายถึง smiply ว่าโค้ดและโปรเจ็กต์นั้นมีความเป็นผู้ใหญ่มากพอเมื่อจำเป็นต้องมีการบำรุงรักษาน้อยมาก

แต่แนะนำว่าควรใช้mod_wsgiแทน นั่นคือถ้าคุณต้องการสร้างทุกอย่างตั้งแต่เริ่มต้น ซึ่งฉันขอแนะนำคุณไม่ควรเว้นเสียแต่ว่าคุณจะใช้สิ่งนี้เป็นแบบฝึกหัดการเรียนรู้

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

รายการที่ครอบคลุมของ Python web-frameworks มีที่นี่แต่ที่นี่เป็นที่นิยม -

  • Django - ถือเป็น Python ที่เทียบเท่ากับ Ruby on Rails และเป็นงานที่ค่อนข้างหนักดังนั้นจึงไม่เหมาะกับสิ่งที่คุณต้องการ
  • Flask - มันเป็นงานไมโคร นั่นคือมันมีขนาดเล็กไม่สามารถเข้าถึงได้และเหมาะสำหรับโครงการขนาดเล็กที่ไม่ต้องใช้แบตเตอรี่จำนวนมาก
  • Pyramid - มันถูกสร้างโดยกลุ่มคนเดียวกันที่สร้าง Pylons ซึ่งไม่ตาย มันอยู่ที่ไหนสักแห่งระหว่าง Flask และ Django สามารถใช้แทนกันได้
  • ขวด - นี่คือการทำไมโครฟอร์แมตอื่นและยังน้อยกว่า Flask เป็นเพียงไฟล์เดียวและไม่มีการพึ่งพา (ถ้าคุณใช้เครื่องมือสร้างเทมเพลตในตัว) นอกเหนือจากไลบรารีมาตรฐานดังนั้นจะเหมาะสำหรับสิ่งที่คุณต้องการ
  • Web.py - เมื่อ Reddit ขับเคลื่อน (ซึ่งถูกเขียนใหม่ด้วยเครื่องมือใหม่หลังจากได้รับ)
  • webapp2 - เป็นกรอบมาตรฐานสำหรับ Google App Engine (แม้ว่าคุณจะสามารถใช้กรอบอื่น ๆ ได้)

ของเหล่านี้ฉันจะแนะนำ Flask ตามที่ฉันใช้และไม่มีข้อร้องเรียน นอกจากนี้ยังมีส่วนขยายจำนวนมากที่จะทำให้ชีวิตง่ายขึ้นมากถ้าคุณต้องการคุณสมบัติเพิ่มเติมในเว็บไซต์ของคุณ

นอกจากนี้คุณจะต้องใช้เครื่องมือเทมเพลต - เพื่อประกอบ HTML ของคุณ Jinja2สร้างโดยคนเดียวกับที่สร้าง Flask และใช้กันอย่างแพร่หลาย แต่มาจากphpการพัฒนาเว็บไซต์คุณอาจพบว่าการใช้Makoนั้นเป็นธรรมชาติมากขึ้นซึ่งก็ค่อนข้างเป็นที่นิยมเช่นกัน

นี่คือคำถามที่พบบ่อยที่ครอบคลุมมากขึ้นในการพัฒนาหลามเว็บ - งูหลามคำถามที่พบบ่อย: Webdev


1
ฉันได้รับโครงการ Flask เล็ก ๆ ตอนนี้ทำงานด้วย FastCGI und lighttpd บนเครื่องทดสอบมันควรทำงานบนเซิร์ฟเวอร์เช่นกัน ขอบคุณมาก!
Martin Ueding

1

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

ถ้ามันเป็นเรื่องจริงคุณก็ไม่จำเป็นต้องไปทำอะไรมากมาย

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

นอกจากนี้ยังมีชุดรูปแบบหลักที่พร้อมใช้งานออนไลน์มากมายเพียงแค่ค้นหารายชื่อชุดรูปแบบสำหรับ Apache2 ในไดเรกทอรีของ Google ทำให้การตอบสนองนั้นไม่ยาก

ต่อไปนี้เป็นข้อมูลวิธีการเปลี่ยนรูปลักษณ์เริ่มต้นของ Apache

และนี่คือเทมเพลตสำเร็จรูปที่เตรียมไว้ให้ตรวจสอบมีอีกมากมาย ...

สไตล์ Repos

Recurser

ดัชนี


ดูเหมือนว่าจะแก้ปัญหาเบื้องต้นได้ค่อนข้างดี ฉันคิดว่าฉันสามารถใช้สิ่งนี้เป็นโครงการแรกเพื่อย้ายจาก PHP ไปเป็น Python ถ้าโครงการ Python หยุดทำงานฉันจะดูที่นี่ ขอบคุณ!
Martin Ueding

การต้อนรับของคุณ;)
Simon Hayter
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.