Thứ ba, 10/12/2013 | 00:00 GMT+7

Cách sử dụng khung kim tự tháp để xây dựng ứng dụng web Python của bạn trên Ubuntu

Các khuôn khổ web cung cấp một cách nhanh chóng và dễ dàng để bắt đầu một ứng dụng web. Hầu hết mọi khung công tác web đều tuân theo mẫu phần mềm MVC. MVC là viết tắt của model, view và controller. Nó là một cách để phân biệt và tách biệt các chức năng khác nhau của một ứng dụng để đơn giản hóa thiết kế của nó và cho phép thay đổi từng phần một cách độc lập với các thành phần khác.


Pyramid là một khung công tác web nhẹ cho các ứng dụng Python. Nó cho phép bạn cài đặt và chạy một ứng dụng web cơ bản một cách nhanh chóng. Trên thực tế, nó có thể tạo toàn bộ bố cục khung trong một file duy nhất nếu bạn muốn.

Trong hướng dẫn này, ta sẽ giới thiệu cho bạn cách cài đặt Pyramid trên hệ thống Ubuntu của bạn. Sau đó, ta sẽ hướng dẫn bạn các lệnh và quy trình cơ bản cho phép bạn chạy thành công một ứng dụng với khuôn khổ này.

Cài đặt các công cụ tiên quyết


Trước khi bắt đầu, bạn phải cài đặt một số gói yêu cầu . Vì Pyramid là một khuôn khổ Python, bạn cần version Python mà ứng dụng của bạn đang chạy.

Ta sẽ sử dụng Python 3 trong hướng dẫn này. Tùy thuộc vào version Ubuntu bạn đã cài đặt, điều này có thể được bao gồm theo mặc định.

Dù bằng cách nào, bạn nên chạy lệnh sau để cài đặt các file tiêu đề phát triển cần thiết cho một số tiện ích mở rộng Pyramid. Nếu bạn chưa cài đặt Python 3, điều này sẽ được đưa vào dưới dạng phụ thuộc. Ngoài ra, ta sẽ download gói setuptools :

sudo apt-get update sudo apt-get install python3-dev python3-setuptools 

Ta cũng cần gói virtualenv . Bạn có thể thực hiện việc này thông qua lệnh easy_install :

sudo easy_install virtualenv 

Đến đây bạn sẽ có các thành phần cơ bản cần thiết để bắt đầu làm việc với Pyramid.

Cấu hình môi trường ứng dụng


Bây giờ ta có version Python mà ta cần và các công cụ khởi động cần thiết để xây dựng ứng dụng của ta , ta có thể cấu hình môi trường ứng dụng của bạn .

Gói virtualenv cho phép ta cài đặt một môi trường Python cô lập. Ta sẽ cài đặt điều này trước tiên, và sau đó cài đặt các file Pyramid trong môi trường này.

Bắt đầu bằng cách chuyển đến folder chính của bạn. Từ đây, ta sẽ tạo một folder để chứa các file dự án của ta :

cd ~ mkdir pyramid_sites cd pyramid_sites 

Trong folder này, ta sẽ tạo môi trường ảo của bạn . Điều này sẽ tạo ra một bong bóng cô lập, nơi ta có thể cài đặt các công cụ và thư viện Python mà không ảnh hưởng đến các công cụ của hệ thống của ta .

virtualenv --no-site-packages env 

Điều này tạo ra một folder có tên là “env” trong folder hiện tại của ta . Đây là nơi các file môi trường được cài đặt.

Ta có thể kích hoạt môi trường ảo của bạn , thay đổi bối cảnh cài đặt bằng lệnh này:

source env/bin/activate 

Điều này sẽ thay đổi dấu nhắc bao gồm môi trường ảo. Điều này giúp bạn dễ dàng biết liệu bạn có đang ở trong môi trường ảo hay không. Nếu bạn cần hủy kích hoạt môi trường sau này, có thể chạy lệnh:

deactivate 

Tuy nhiên, đừng hủy kích hoạt môi trường. Ta có thể cài đặt Pyramid trong môi trường ảo bằng lệnh :

easy_install pyramid 

Điều này sẽ cài đặt tất cả các file cần thiết cho khuôn khổ của ta .

Cài đặt một ứng dụng mẫu


Một trong những lợi ích của khung Kim tự tháp là nó có thể cực kỳ nhẹ. Khuôn khổ web có thể được triển khai trong một file duy nhất.

Phá vỡ cấu hình một file


Ta có thể tạo cấu hình một file bằng cách sử dụng ví dụ từ dự án Pyramid . Đây sẽ là một ứng dụng 'xin chào thế giới' đơn giản. Ta chủ yếu sẽ sử dụng nó để hiển thị một số phần khác nhau của file cấu hình chung:

Đầu tiên, tạo một folder cho ứng dụng của bạn.

mkdir ~/pyramid_sites/hello_world cd ~/pyramid_sites/hello_world 

Bên trong, ta có thể tạo một file application.py và điền vào nó các nội dung sau:

nano application.py 

from wsgiref.simple_server import make_server from pyramid.config import Configurator from pyramid.response import Response  def hello_world(request):     return Response('<h1>Hello world!</h1>')  if __name__ == '__main__':     config = Configurator()     config.add_view(hello_world)     app = config.make_wsgi_app()     server = make_server('0.0.0.0', 8080, app)     server.serve_forever() 

Hãy xem xét file này theo từng phần để ta có thể thấy cách hoạt động của Kim tự tháp.

Ở đầu file , ta có các câu lệnh nhập:

from wsgiref.simple_server import make_server from pyramid.config import Configurator from pyramid.response import Response 

Dòng đầu tiên nhập hàm make_server , hàm này có thể tạo một web server đơn giản khi nó được chuyển qua một ứng dụng. Dòng thứ hai và thứ ba nhập các chức năng của Trình ConfiguratorResponse từ Pyramid.

Các chức năng này được sử dụng để cấu hình chi tiết và cài đặt các thông số cho ứng dụng và phản hồi các yêu cầu tương ứng.

Tiếp theo, ta có một định nghĩa hàm được gọi là hello_world :

def hello_world(request):     return Response('<h1>Hello world!</h1>') 

Chức năng này đại diện cho một "chế độ xem" cho ứng dụng của ta . Lưu ý , hầu hết các khung công tác web đều triển khai mô hình MVC (mô hình, chế độ xem, bộ điều khiển). Một hàm đáp ứng các yêu cầu của một dạng xem có trách nhiệm hiển thị văn bản sẽ được chuyển trở lại thực thể yêu cầu.

Trong trường hợp này, hàm, khi được gọi, sử dụng hàm Response mà ta đã nhập trước đó. Điều này trả lại một giá trị sẽ được cấp cho client . Trong ứng dụng đơn giản của ta , đây là một triển khai chế độ xem rất đơn giản.

Phần chính của chương trình sẽ diễn ra tiếp theo. Nó bắt đầu với một quy ước Python phổ biến để gọi phần thực thi chính của một chương trình:

if __name__ == '__main__': 

Dòng này chỉ định rằng nếu file là file “chính” đang được chạy ( nghĩa là nó không được nhập và gọi bởi file khác), các lệnh sau sẽ được chạy.

    config = Configurator()     config.add_view(hello_world)     app = config.make_wsgi_app()     server = make_server('0.0.0.0', 8080, app)     server.serve_forever() 

Dòng đầu tiên ở đây tạo một biến được gọi là config từ đối tượng được tạo bởi hàm Configurator mà ta đã nhập ở đầu chương trình.

Dòng tiếp theo gọi phương thức add_view của đối tượng này. Phương thức này được sử dụng để xác định một dạng xem được dùng bởi ứng dụng. Như bạn thấy , ta truyền vào hàm hello_world mà ta đã xác định trước đó. Đây là nơi chức năng đó thực sự được kết hợp như một khung nhìn.

Dòng sau tạo ứng dụng WSGI bằng cách gọi phương thức make_wsgi_app của đối tượng cấu hình. Điều này sử dụng các thuộc tính của đối tượng, chẳng hạn như chế độ xem ta đã thêm, để tạo ứng dụng.

Ứng dụng này sau đó được chuyển đến hàm make_server mà ta đã nhập để tạo một đối tượng có thể chạy web server để phục vụ ứng dụng của ta . Dòng cuối cùng chạy server này.

Lưu file khi bạn hoàn tất.

Để chạy ứng dụng, bạn chỉ cần trỏ Python vào nó:

python application.py 

Bây giờ, nếu bạn chuyển đến cổng bạn đã xác định trong cấu hình ('8080'), bạn sẽ thấy văn bản bạn đặt trong chức năng xem của bạn :

<pre>
http: // <span class = “highlight”> địa chỉ ip của bạn </span>: 8080
</pre>

Kim tự tháp DigitalOcean xin chào thế giới

Tạo một ứng dụng kim tự tháp mẫu với giàn giáo


Trong ví dụ trước, ta đã làm mọi thứ thông qua một file duy nhất. Mặc dù đây là một cách hay để cho thấy quy trình tạo ứng dụng MVC với Pyramid đơn giản và gọn nhẹ như thế nào, nhưng nó không phải lúc nào cũng là cách dễ dàng nhất để thực hiện mọi thứ.

Giống như hầu hết các khung công tác phổ biến, Pyramid có thể sử dụng “giàn giáo” để nhanh chóng tạo cấu trúc folder dự án phức tạp. Ta có thể sử dụng giàn giáo thông qua một công cụ gọi là pcreate .

Quay lại folder Pyramid và kiểm tra xem ta có sẵn giàn giáo nào:

cd ~/pyramid_sites pcreate -l 

Available scaffolds:   alchemy:  Pyramid SQLAlchemy project using url dispatch   starter:  Pyramid starter project   zodb:     Pyramid ZODB project using traversal 

Tùy chọn đầu tiên tạo một dự án có tích hợp SQL. Thứ hai tạo ra một dự án cơ bản không có sự ổn định giữa các version ứng dụng. Thứ ba có thể tạo một ứng dụng để chạy với ZODB nếu bạn đang sử dụng Python 2.

Ta có thể tạo một dự án có khung bằng cách chọn mẫu và đặt tên cho dự án:

pcreate -s starter first_project 

Thao tác này sẽ tạo một folder được đặt tên theo dự án, hãy vào bên trong để xem các file đã được tạo:

cd first_project ls 

CHANGES.txt  development.ini  first_project  MANIFEST.in  production.ini  README.txt  setup.cfg  setup.py 

Đây là một tập hợp các file lớn hơn nhiều so với ví dụ cuối cùng của ta . Các file trực tiếp trong folder này chủ yếu được sử dụng để cấu hình. Bản thân chương trình chủ yếu được chứa trong folder con có tên của dự án.

Để xem giàn giáo đã hoàn thành những gì, hãy chạy tập lệnh cài đặt để cấu hình ứng dụng cho môi trường phát triển.

python setup.py develop 

Điều này sẽ đọc cấu hình ứng dụng của bạn bằng các tham số có sẵn trong file development.ini .

Sau đó, ta có thể phục vụ dự án bằng lệnh :

pserve development.ini 

Nếu bạn truy cập địa chỉ IP của bạn theo sau là số cổng được chỉ định trên dòng lệnh (nó phải là “6543”), bạn sẽ thấy ứng dụng mặc định:

Trang web giàn giáo Kim tự tháp DigitalOcean

Nhấn “Ctrl-C” trong terminal để dừng web server .

Ta có thể bật bảng gỡ lỗi trong file cấu hình để cho phép ta nhận được thông tin có giá trị về ứng dụng của bạn .

Chỉnh sửa file development.ini :

nano development.ini 

Bên trong, ở cuối phần [app:main] , hãy thêm dòng này để cho phép mọi server kết nối xem thanh công cụ gỡ lỗi:

<pre>
[ứng dụng: main]


kim tự tháp.includes =
Kim tự tháp_debugtoolbar
<span class = “highlight”> debugtoolbar.hosts = 0.0.0.0/0 </span>
</pre>

Lưu và đóng file . Bây giờ, nếu bạn khởi động lại server và reload trang web, bạn sẽ thấy thanh công cụ gỡ lỗi ở phía bên phải:

pserve development.ini 

Thanh công cụ gỡ lỗi DigitalOcean Pyramid

Trong cấu trúc của dự án này, bạn có thể cấu hình các tương tác MVC phức tạp.

Kết luận


Ta chỉ mới sơ bộ bề mặt của những gì Kim tự tháp có thể làm. Hy vọng rằng đến thời điểm này, bạn có thể thấy rằng nó có cấu trúc đơn giản được xây dựng dựa trên các quy ước của Python và nó đủ linh hoạt để mở rộng từ các trang cực kỳ dễ dàng đến các thiết kế hoàn chỉnh hơn yêu cầu các tương tác phức tạp.

Khám phá tài liệu cho Pyramid để hiểu rõ hơn về cách triển khai các ứng dụng lớn hơn. Khuôn khổ cung cấp nhiều công cụ để đưa ứng dụng của bạn qua chu trình phát triển (bao gồm cả thử nghiệm kết hợp) và đi vào production .

<div class = “author”> Bởi Justin Ellingwood </div>


Tags:

Các tin liên quan

Cách triển khai ứng dụng WSGI Python bằng web server CherryPy đằng sau Nginx
2013-12-10
Cách thiết lập Python 2.7.6 và 3.3.3 trên CentOS 6.4
2013-12-04
Các công cụ Python phổ biến: Sử dụng virtualenv, Cài đặt bằng Pip và Quản lý Gói
2013-12-03
Cách tạo plugin Nagios bằng Python trên Ubuntu 12.10
2013-04-29
Cách tạo plugin Nagios bằng Python trên CentOS 6
2013-04-29