Vậy là bạn vừa hoàn thành một trang web portfolio đơn giản với Python và bạn muốn đưa nó lên bằng cách sử dụng dịch vụ lưu trữ miễn phí. Bạn đã nghe nói về dịch vụ lưu trữ miễn phí của Heroku, nhưng bạn không hiểu rõ về các kỹ thuật liên quan.
Hướng dẫn này sẽ giúp bạn thực hiện toàn bộ quá trình lưu trữ trang web Python miễn phí trên Heroku theo cách đơn giản hơn nhiều. Chúng tôi giả định rằng bạn có kiến thức cơ bản về Python và ít nhất một trong các khuôn khổ của nó --- tốt nhất là Django.
Tại sao chọn Heroku?
Heroku là một nhà cung cấp dịch vụ lưu trữ web Platform as a Service (PaaS) chạy cơ sở hạ tầng của mình trên thứ mà nó gọi là Dynos. Nó giúp bạn tập trung vào việc triển khai, trong khi nó giải quyết những khó khăn trong việc duy trì và xây dựng cơ sở hạ tầng web của bạn.
Trong trường hợp bạn không đủ khả năng mua dịch vụ lưu trữ trả phí nhưng muốn thiết lập danh mục đầu tư trực tuyến nhanh chóng, thì bạn có thể cân nhắc việc lưu trữ nó trên Heroku. Ngoài việc không mất phí, việc đưa trang web của bạn lên Heroku cũng khá nhanh.
Tất nhiên, có những nền tảng khác mà bạn có thể lưu trữ trang web Python của mình miễn phí, chẳng hạn như Amazon Web Services và PythonAnywhere. Nhưng quá trình lưu trữ trên Heroku rất dễ dàng --- đặc biệt đối với những người không có kiến thức trước về việc triển khai.
Khi bạn lưu trữ một trang web miễn phí trên Heroku, bạn không nhất thiết phải có tên miền. Tất cả những gì bạn cần là chỉ định tên ứng dụng của bạn trên nền tảng lưu trữ. Heroku sau đó tạo một công cụ định vị app.herokuapp.com cho bạn. Khi bạn sử dụng dịch vụ miễn phí này, trang web của bạn sẽ chạy trên Heroku Dynos.
Nếu sau đó bạn quyết định mở rộng quy mô và có được một tên miền, điều đó cũng dễ dàng và nhanh chóng như nhau, nhưng bạn phải trả tiền cho nó. Chi phí duy trì nâng cấp quá lớn có thể khiến bạn phải suy nghĩ lại, nhưng nó xứng đáng với số tiền bỏ ra nếu bạn quyết tâm đầu tư nhiều hơn vào dự án.
Bây giờ chúng ta hãy kiểm tra cách lưu trữ trang web Python của bạn miễn phí trên Heroku. Lưu ý rằng điều này dựa trên phiên bản Python 3.7 và Django phiên bản 2.1.7.
Thiết lập Git và Heroku
Để bắt đầu, hãy tải xuống Git từ trang web git-scm . Các lệnh và nút vặn khác nhau để cài đặt Git trên tất cả các hệ điều hành được giải thích ở đây.
Sau khi cài đặt Git, bạn cũng cần thiết lập tài khoản với Heroku tại trang đăng ký Heroku nếu bạn chưa có.
Tiếp theo, tải xuống và cài đặt Heroku CLI từ trang web Heroku. Heroku CLI cho phép bạn giao tiếp với kho lưu trữ của mình mỗi khi bạn cần thực hiện các thay đổi đối với ứng dụng của mình.
Nếu bạn chưa quen với các lệnh Git, bạn nên xem phần giới thiệu của chúng tôi về điều khiển phiên bản với Git .
Thiết lập dự án Django
Nếu bạn chưa thiết lập dự án Django và muốn dùng thử với hướng dẫn này, hãy mở dòng lệnh và tạo môi trường ảo nếu bạn chưa có. Khi môi trường ảo đã sẵn sàng, hãy sử dụng lệnh này để cài đặt khuôn khổ Django:
pip install django==2.1.7
Sau khi Django được cài đặt trong môi trường ảo, hãy chạy lệnh sau để bắt đầu một dự án Django mới:
django-admin.py startproject project_name
Tiếp theo, tạo một ứng dụng Python mới. Để làm điều đó, hãy di chuyển vào thư mục gốc của dự án của bạn trên CMD và chạy:
python manage.py startapp app_name
Hãy nhớ thay thế project_name và app_name bằng tên bạn muốn.
Bạn cần mô-đun gunicorn cho việc này, vì vậy bạn cũng nên chạy pip install gunicorn . Sau đó, thêm gunicorn vào danh sách các ứng dụng đã cài đặt trong settings.py , như được hiển thị bên dưới:
Đây chỉ là phần giới thiệu bề mặt về cách xây dựng ứng dụng Django. Tuy nhiên, cho dù ứng dụng của bạn đã sẵn sàng hay bạn chỉ đang tạo một ứng dụng, hãy đảm bảo rằng ứng dụng đang chạy python management.py sẽ di chuyển để tạo cơ sở dữ liệu của bạn.
Bây giờ bạn sẽ có một ứng dụng Python chạy trong khuôn khổ Django của bạn. Bây giờ chúng ta sẽ đi sâu vào mục tiêu chính của mình.
Triển khai ứng dụng của bạn cho Heroku
Để có một triển khai thành công ứng dụng của bạn để Heroku, bạn cần phải thiết lập một requirements.txt tập tin. Để thiết lập nó, hãy chạy như sau trên CMD của bạn:
pip freeze > requirements.txt
Dòng đó tạo một tệp .txt chứa tất cả các gói được sử dụng để phục vụ dự án của bạn. Heroku xem xét tệp đó trong quá trình triển khai và cài đặt các gói đó tự động.
Một tệp quan trọng khác mà bạn cần chỉ định là Procfile . Điều này cho Heroku biết các lệnh để chạy khi khởi chạy ứng dụng. Tuy nhiên, bạn phải tạo tệp này bằng cách tạo tệp văn bản mới có tên Procfile trong thư mục gốc của bạn. Đảm bảo rằng tệp này không có phần mở rộng tệp; nếu không, nó sẽ không hoạt động.
Để xóa phần mở rộng tệp khỏi Procfile trong Windows, hãy mở thư mục trong File Explorer, nhấp vào Xem trên thanh công cụ trên cùng và chọn hộp Phần mở rộng tên tệp . Sau đó, bạn sẽ thấy các phần mở rộng cho tất cả các tệp, bao gồm phần mở rộng .txt cho Procfile . Nhấp chuột phải vào Procfile và chọn Đổi tên , sau đó chỉ cần xóa phần mở rộng .txt và nhấn Enter .
Tiếp theo, mở Procfile và thêm dòng sau, thay thế project_name bằng tên áp dụng cho dự án của bạn:
web: gunicorn project_name.wsgi
Theo tùy chọn, bạn cũng có thể tạo tệp runtime.txt . Mở tệp và chỉ định phiên bản Python như sau:
python-3.7.6
Đó là cách bạn cho Heroku biết phiên bản Python mà ứng dụng của bạn đang chạy. Nếu bạn không chỉ định tệp này, Heroku chỉ sử dụng phiên bản Python mới nhất theo mặc định.
Tiếp theo, trong dấu nhắc lệnh, đăng nhập vào tài khoản Heroku của bạn bằng cách chạy lệnh sau:
heroku login
Lệnh đó sẽ mở trình duyệt mặc định của bạn đến trang đăng nhập Heroku, nơi bạn có thể cung cấp thông tin đăng nhập của mình.
Để tạo một ứng dụng trên Heroku, hãy nhập dòng sau:
heroku create ademosapp2
Thay thế ademosapp2 bằng tên ứng dụng ưa thích của bạn. Nếu tên ứng dụng đã chọn của bạn đang được sử dụng, bạn sẽ thấy thông báo nhắc bạn chọn một tên mới.
Trên trang đăng nhập, nhấp vào biểu tượng Heroku để đăng nhập vào bảng điều khiển Heroku của bạn. Bây giờ bạn sẽ thấy ứng dụng bạn vừa tạo.
Tiếp theo, mở trình soạn thảo văn bản ưa thích của bạn đến vị trí dự án của bạn và đi vào cài đặt của dự án của bạn . Trong tệp settings.py , thay đổi Máy chủ được phép thành [*] --- điều này làm cho ứng dụng của bạn có thể truy cập được đối với bất kỳ máy chủ toàn cầu nào.
Bây giờ, hãy vào trang tổng quan Heroku của bạn và nhấp vào ứng dụng mới được tạo, sau đó là cài đặt . Trong cài đặt, cuộn xuống và nhấp vào Thêm gói xây dựng . Sau đó chọn Python làm gói xây dựng của bạn và nhấp vào Lưu thay đổi .
Tiếp theo, quay lại CMD của bạn và chạy mã sau để cài đặt Heroku trong dự án của bạn:
pip install django-heroku
Bây giờ, thêm gói mới được cài đặt vào requirements.txt tập tin bằng cách chạy:
pip freeze > requirements.txt
Sau đó, mở tệp settings.py trong dự án của bạn và nhập:
import django_heroku
Ngoài ra, trên dòng cuối cùng của settings.py , hãy kích hoạt django-heroku bằng cách thêm:
django_heroku.settings(locals()) #ensure that you comment this line out after deployment
Sau khi hoàn tất, hãy bắt đầu một kho lưu trữ từ xa bằng cách nhập nội dung sau vào dòng lệnh của bạn:
heroku init
Tiếp theo, tạo kho ứng dụng Heroku bằng cách chạy:
heroku git:remote -a ademosapp2 #replace ademosapp2 with your app's name
Để kiểm tra các tệp cần được cam kết, hãy chạy:
git status
Tiếp theo, nhập lệnh sau để thêm tất cả các thay đổi vào kho lưu trữ của bạn:
git add --all
Sau khi các thay đổi được thêm vào, hãy cam kết các thay đổi của bạn với Heroku bằng cách chạy lệnh:
git commit -m "initial-commit"
Lưu ý rằng "initial-commit" có thể sử dụng bất kỳ tên nào bạn thích.
Tiếp theo, bạn nên tắt tính năng thu thập bằng cách sử dụng các thao tác sau:
heroku config:set DISABLE_COLLECTSTATIC=1
Nếu không, bạn có thể gặp sự cố trong quá trình triển khai.
Để cuối cùng đẩy các tệp của bạn vào kho lưu trữ Heroku, hãy sử dụng lệnh:
git push heroku master
Điều này đẩy tất cả các tệp của bạn sang Heroku và giúp ứng dụng có thể truy cập từ mọi nơi. Để xem ứng dụng mới được triển khai của bạn, hãy truy cập https://app_name.herokuapp.com trong trình duyệt của bạn, thay thế app_name bằng tên ứng dụng của bạn.
Heroku có thể lưu trữ một ứng dụng không chạy trên Python không?
Bạn có thể lưu trữ nhiều bản dựng ứng dụng khác nhau trên Heroku; các quy trình Git tương tự mà chúng tôi đề cập ở đây hoạt động cho các ngôn ngữ khác ngoài Python. Bạn chỉ cần thực hiện một số thay đổi nhỏ, chẳng hạn như đặt lại gói bản dựng của mình.
Mặc dù Heroku cung cấp cho bạn dịch vụ lưu trữ miễn phí, nhưng tất cả chúng ta đều biết rằng nội dung miễn phí có một số hạn chế. Tuy nhiên, nếu bạn không mong đợi trang web của mình nhận được nhiều lưu lượng truy cập, lưu trữ Heroku miễn phí có thể là một lựa chọn tốt.