ดังนั้น คุณเพิ่งสร้างเว็บไซต์พอร์ตโฟลิโอง่ายๆ ด้วย Python และต้องการสร้างมันขึ้นมาโดยใช้โฮสติ้งฟรี คุณเคยได้ยินเกี่ยวกับโฮสติ้งฟรีของ Heroku แล้ว แต่คุณไม่ค่อยเข้าใจเทคนิคที่เกี่ยวข้อง
คู่มือนี้จะช่วยให้คุณทำงานตลอดกระบวนการโฮสต์เว็บไซต์ Python ของคุณได้ฟรีบน Heroku ด้วยวิธีที่ง่ายกว่ามาก เราคิดว่าคุณมีความรู้พื้นฐานเกี่ยวกับ Python และอย่างน้อยหนึ่งในเฟรมเวิร์กของมัน — เด่นกว่า Django
ทำไมถึงเลือก Heroku?
Heroku เป็นผู้ให้บริการเว็บโฮสติ้ง Platform as a Service (PaaS) ที่เรียกใช้โครงสร้างพื้นฐานในสิ่งที่เรียกว่า Dynos ช่วยให้คุณจดจ่อกับการปรับใช้ ในขณะที่ดูแลความยากลำบากในการบำรุงรักษาและสร้างโครงสร้างพื้นฐานเว็บของคุณ
ในกรณีที่คุณไม่สามารถจ่ายโฮสติ้งแบบเสียเงินได้ แต่ต้องการสร้างพอร์ตโฟลิโอออนไลน์อย่างรวดเร็ว คุณอาจต้องการพิจารณาโฮสต์บน Heroku นอกจากจะมาฟรีแล้ว การวางเว็บไซต์ของคุณบน Heroku ยังค่อนข้างเร็วอีกด้วย
แน่นอนว่ายังมีแพลตฟอร์มอื่นๆ ที่คุณสามารถโฮสต์เว็บไซต์ Python ของคุณได้ฟรี เช่น Amazon Web Services และ PythonAnywhere แต่กระบวนการโฮสต์บน Heroku นั้นง่าย—โดยเฉพาะอย่างยิ่งสำหรับผู้ที่ไม่มีความรู้เรื่องการปรับใช้มาก่อน
เมื่อคุณโฮสต์เว็บไซต์ฟรีบน Heroku คุณไม่จำเป็นต้องมีชื่อโดเมน เพียงคุณระบุชื่อแอปของคุณบนแพลตฟอร์มโฮสติ้ง จากนั้น Heroku จะสร้างตัวระบุตำแหน่งapp.herokuapp.comสำหรับคุณ เมื่อคุณใช้บริการฟรีนี้ เว็บไซต์ของคุณจะทำงานบน Heroku Dynos
หากคุณตัดสินใจที่จะขยายขนาดและรับชื่อโดเมนในภายหลัง ก็ทำได้ง่ายและรวดเร็วไม่แพ้กัน แต่คุณต้องจ่ายสำหรับชื่อโดเมนนั้น ค่าใช้จ่ายในการบำรุงรักษาการอัพเกรดอาจทำให้คุณต้องคิดใหม่ แต่ก็คุ้มค่าหากคุณตั้งใจที่จะลงทุนในโครงการมากขึ้น
มาดูวิธีการโฮสต์เว็บไซต์ Python ของคุณได้ฟรีบน Heroku กัน โปรดทราบว่าสิ่งนี้ใช้ Python เวอร์ชัน 3.7 และ Django เวอร์ชัน 2.1.7
ตั้งค่า Git และ Heroku
การเริ่มต้นการดาวน์โหลด Git จากเว็บไซต์ Git-SCM มีการอธิบายคำสั่งต่างๆ และการบิดสำหรับการติดตั้ง Git บนระบบปฏิบัติการทั้งหมด
หลังจากติดตั้ง Git แล้ว คุณต้องตั้งค่าบัญชีกับ Heroku ที่หน้าลงทะเบียนของ Herokuหากคุณยังไม่มี
ถัดไป ดาวน์โหลดและติดตั้งHeroku CLIจากเว็บไซต์ Heroku Heroku CLI ให้คุณสื่อสารกับที่เก็บของคุณทุกครั้งที่คุณจำเป็นต้องทำการเปลี่ยนแปลงแอพของคุณ
หากคุณไม่คุ้นเคยกับคำสั่ง Git แล้วคุณควรจะดูที่เรารู้เบื้องต้นเกี่ยวกับการควบคุมเวอร์ชันกับ Git
ตั้งโครงการจังโก้
หากคุณไม่ได้ตั้งค่าโปรเจ็กต์ Django และต้องการลองใช้บทช่วยสอนนี้ ให้เปิดบรรทัดคำสั่งและสร้างสภาพแวดล้อมเสมือนหากคุณยังไม่มี เมื่อสภาพแวดล้อมเสมือนพร้อมแล้ว ให้ใช้คำสั่งนี้เพื่อติดตั้งเฟรมเวิร์ก Django:
pip install django==2.1.7
หลังจากติดตั้ง Django ในสภาพแวดล้อมเสมือนแล้ว ให้รันคำสั่งต่อไปนี้เพื่อเริ่มโครงการ Django ใหม่:
django-admin.py startproject project_name
ถัดไป สร้างแอป Python ใหม่ ในการดำเนินการดังกล่าว ให้ย้ายไปยังโฟลเดอร์รูทของโปรเจ็กต์ของคุณบน CMD และเรียกใช้:
python manage.py startapp app_name
อย่าลืมแทนที่project_nameและapp_nameด้วยชื่อที่คุณต้องการ
คุณต้องมีโมดูลgunicornสำหรับสิ่งนี้ ดังนั้นคุณควรเรียกใช้pip install gunicornด้วย จากนั้นเพิ่มgunicornในรายการแอพที่ติดตั้งในsettings.pyดังที่แสดงด้านล่าง:
นี่เป็นเพียงการแนะนำเบื้องต้นเกี่ยวกับการสร้างแอป Django อย่างไรก็ตาม ไม่ว่าแอปของคุณจะพร้อมหรือคุณเพิ่งสร้างแอปขึ้นมา ตรวจสอบให้แน่ใจว่า run python Manage.py โยกย้ายเพื่อสร้างฐานข้อมูลของคุณ
ตอนนี้คุณควรมีแอป Python ที่ทำงานอยู่ในกรอบงาน Django ของคุณ ตอนนี้เราจะดำดิ่งสู่เป้าหมายหลักของเรา
การปรับใช้แอพของคุณกับ Heroku
หากต้องการปรับใช้แอปของคุณกับ Heroku ได้สำเร็จ คุณต้องตั้งค่าไฟล์requirements.txt ในการตั้งค่า ให้รันสิ่งต่อไปนี้บน CMD ของคุณ:
pip freeze > requirements.txt
บรรทัดนั้นสร้างไฟล์.txtที่มีแพ็คเกจทั้งหมดที่ใช้เพื่อให้บริการโครงการของคุณ Heroku จะตรวจสอบไฟล์นั้นในระหว่างการปรับใช้และติดตั้งแพ็คเกจเหล่านั้นโดยอัตโนมัติ
อีกไฟล์ที่สำคัญคุณจะต้องระบุเป็นProcfile สิ่งนี้จะบอก Heroku คำสั่งให้รันในการเริ่มต้นของแอพ อย่างไรก็ตาม คุณต้องสร้างไฟล์นี้โดยสร้างไฟล์ข้อความใหม่ที่ชื่อProcfileในรูทโปรเจ็กต์ของคุณ ตรวจสอบให้แน่ใจว่าไฟล์นี้ไม่มีนามสกุลไฟล์ ไม่เช่นนั้นจะไม่ทำงาน
ในการลบนามสกุลไฟล์จาก Procfile ใน Windows เปิดโฟลเดอร์ใน File Explorer คลิกดูบนแถบเครื่องมือด้านบนและตรวจสอบนามสกุลของชื่อแฟ้มกล่อง จากนั้นคุณจะเห็นส่วนขยายสำหรับไฟล์ทั้งหมดรวมทั้ง.txtส่วนขยายสำหรับProcfile คลิกขวาที่Procfileและเลือกเปลี่ยนชื่อแล้วก็เอา.txtขยายและกดEnter
ถัดไป เปิด Procfile และเพิ่มบรรทัดต่อไปนี้ แทนที่project_nameด้วยชื่อที่ใช้กับโครงการของคุณ:
web: gunicorn project_name.wsgi
คุณยังสามารถสร้างไฟล์runtime.txtได้อีกด้วย เปิดไฟล์และระบุเวอร์ชัน Python ดังต่อไปนี้:
python-3.7.6
นั่นคือวิธีที่คุณบอก Heroku เกี่ยวกับเวอร์ชัน Python ที่แอปของคุณทำงาน หากคุณไม่ระบุไฟล์นี้ Heroku จะใช้ Python เวอร์ชันล่าสุดโดยค่าเริ่มต้น
ถัดไป ในพรอมต์คำสั่ง ให้ลงชื่อเข้าใช้บัญชี Heroku ของคุณโดยเรียกใช้คำสั่งนี้:
heroku login
คำสั่งดังกล่าวจะเปิดเบราว์เซอร์เริ่มต้นของคุณไปที่หน้าเข้าสู่ระบบ Heroku ซึ่งคุณจะได้รับข้อมูลรับรองการเข้าสู่ระบบของคุณ
ในการสร้างแอพบน Heroku ให้พิมพ์บรรทัดต่อไปนี้:
heroku create ademosapp2
แทนที่ademosapp2ด้วยชื่อแอปที่คุณต้องการ หากมีการใช้ชื่อแอปที่คุณเลือก คุณจะเห็นข้อความแจ้งให้คุณเลือกชื่อใหม่
ในหน้าเข้าสู่ระบบ ให้คลิกที่โลโก้ Heroku เพื่อเข้าสู่แดชบอร์ด Heroku ของคุณ ตอนนี้คุณควรเห็นแอปที่คุณเพิ่งสร้างขึ้น
ถัดไปเปิดโปรแกรมแก้ไขข้อความที่คุณต้องการไปยังที่ตั้งของโครงการและไปในโครงการของคุณsettings.py ในไฟล์settings.pyให้เปลี่ยนAllowed Hostเป็น[*] --- ซึ่งจะทำให้แอปของคุณสามารถเข้าถึงได้จากโฮสต์ทั่วโลก
ตอนนี้ไปลงในแผงควบคุม Heroku ของคุณและคลิกบนแอปที่สร้างขึ้นใหม่ตามด้วยการตั้งค่า ในการตั้งค่าให้เลื่อนลงและคลิกที่เพิ่ม buildpack จากนั้นเลือกหลามเป็น buildpack ของคุณและคลิกบันทึกการเปลี่ยนแปลง
ถัดไป ย้ายกลับไปที่ CMD ของคุณและเรียกใช้โค้ดต่อไปนี้เพื่อติดตั้ง Heroku ในโครงการของคุณ:
pip install django-heroku
ตอนนี้ เพิ่มแพ็คเกจที่ติดตั้งใหม่ลงในไฟล์requirements.txtโดยเรียกใช้:
pip freeze > requirements.txt
จากนั้นเปิดไฟล์settings.pyของโปรเจ็กต์แล้วพิมพ์:
import django_heroku
นอกจากนี้ ในบรรทัดสุดท้ายของsettings.pyให้เปิดใช้งานdjango-herokuโดยเพิ่ม:
django_heroku.settings(locals()) #ensure that you comment this line out after deployment
เมื่อเสร็จแล้ว ให้เริ่มต้นที่เก็บระยะไกลโดยพิมพ์คำสั่งต่อไปนี้ในบรรทัดคำสั่งของคุณ:
heroku init
ถัดไป สร้างที่เก็บแอป Heroku โดยเรียกใช้:
heroku git:remote -a ademosapp2 #replace ademosapp2 with your app's name
ในการตรวจสอบไฟล์ที่จำเป็นต้องคอมมิต ให้รัน:
git status
ถัดไป พิมพ์คำสั่งต่อไปนี้เพื่อเพิ่มการเปลี่ยนแปลงทั้งหมดในที่เก็บของคุณ:
git add --all
เมื่อเพิ่มการเปลี่ยนแปลงแล้ว ให้คอมมิตการเปลี่ยนแปลงของคุณกับ Heroku โดยเรียกใช้คำสั่ง:
git commit -m "initial-commit"
โปรดทราบว่า"initial-commit"สามารถใช้ชื่อใดก็ได้ที่คุณต้องการ
ถัดไป คุณควรปิดใช้งานcollectstaticโดยใช้สิ่งต่อไปนี้:
heroku config:set DISABLE_COLLECTSTATIC=1
มิฉะนั้น คุณอาจประสบปัญหาระหว่างกระบวนการปรับใช้
ในการส่งไฟล์ของคุณไปยังที่เก็บ Heroku ในที่สุด ให้ใช้คำสั่ง:
git push heroku master
สิ่งนี้จะผลักไฟล์ทั้งหมดของคุณไปที่ Heroku และทำให้แอปสามารถเข้าถึงได้จากทุกที่ หากต้องการดูแอปที่เพิ่งปรับใช้ใหม่ ให้ไปที่https://app_name.herokuapp.comในเบราว์เซอร์ของคุณ โดยแทนที่app_nameด้วยชื่อแอปของคุณ
Heroku สามารถโฮสต์แอปที่ไม่ทำงานบน Python ได้หรือไม่
คุณสามารถโฮสต์การสร้างแอพที่หลากหลายบน Heroku; กระบวนการ Git เดียวกันกับที่เรากล่าวถึงในที่นี้ใช้ได้กับภาษาอื่นนอกเหนือจาก Python คุณต้องทำการเปลี่ยนแปลงเพียงเล็กน้อยเท่านั้น เช่น การรีเซ็ตชุดบิลด์ของคุณ
แม้ว่า Heroku จะให้บริการโฮสติ้งฟรีแก่คุณ แต่เราทุกคนทราบดีว่าเนื้อหาฟรีนั้นมีข้อจำกัดบางประการ อย่างไรก็ตาม หากคุณไม่คิดว่าเว็บไซต์ของคุณจะได้รับการเข้าชมมากนัก โฮสติ้ง Heroku ฟรีอาจเป็นตัวเลือกที่ดี