Thứ ba, 14/01/2014 | 00:00 GMT+7

Cách triển khai các ứng dụng web Flask bằng uWSGI Behind Nginx trên CentOS 6.4

Armin Ronacher's Flask là một trong những điều tuyệt vời nhất từng xảy ra trong lĩnh vực khung ứng dụng web được tạo cho Python trong vài năm qua.


Flask là một framework tối giản nhưng cực kỳ chức năng - và mạnh mẽ - cực kỳ phổ biến và có thể mở rộng rất nhiều với sự lựa chọn tuyệt vời của các thư viện bên thứ ba (ví dụ như Flask-WTF hoặc Flask-SQLAlchemy). Khung công tác thân thiện với nhà phát triển này là một cách tốt để bắt đầu phát triển web bằng Python, đặc biệt nếu bạn đang cố gắng tìm hiểu cách giải quyết các thách thức kỹ thuật, nhờ cơ sở mã sạch và dễ đọc - đang chờ bạn khám phá.

Trong bài viết DigitalOcean này, ta sẽ cố gắng chỉ cho bạn cách triển khai ứng dụng của bạn và bắt đầu chạy ứng dụng theo cách tương tự. Ta sẽ bắt đầu với việc chuẩn bị server triển khai chạy CentOS 6.4 cho Python và xem cách hoạt động đúng cách với server ứng dụng uWSGI được đặt để hoạt động đằng sau Reverse Proxy Nginx.

Bảng chú giải


<h3> 1. Tóm tắt về bình </h3> <hr>

  1. Triển khai ứng dụng web
  2. WSGI Tóm tắt
  3. Sử dụng Nginx làm Reverse-Proxy
  4. Server ứng dụng web Python WSGI
  5. uWSGI Tóm tắt

<h3> 2. Chuẩn bị Hệ thống để Triển khai </h3> <hr>

  1. Cập nhật hệ thống
  2. Cài đặt Python, pip và virtualenv
  3. Chuẩn bị hệ thống để phát triển
  4. Download , biên dịch và cài đặt Python trên CentOS
  5. Cài đặt pip trên CentOS bằng cài đặt Python mới
  6. Cài đặt virtualenv trên CentOS bằng cài đặt Python mới

<h3> 3. Bắt đầu với việc triển khai ứng dụng </h3> <hr>

  1. Tạo folder ứng dụng để triển khai
  2. Tạo môi trường ảo
  3. Làm việc với môi trường ảo
  4. Download và cài đặt uWSGI bên trong môi trường ảo
  5. Download và cài đặt thư viện bình
  6. Tạo một ứng dụng flask mẫu

<h3> 4. Giai đoạn triển khai: Cài đặt và cài đặt Nginx </h3> <hr>

  1. Cài đặt Nginx
  2. Cấu hình Nginx

<h3> 5. Giai đoạn triển khai: Làm việc với uWSGI </h3> <hr>

  1. Chạy server

<h3> 6. Đọc thêm </h3> <hr>

Bình trong Tóm tắt


Với bản chất của Flask, không có gì khác để nói ngoài những gì ta đã đề cập trong phần giới thiệu. Nó là một thư viện phát triển ứng dụng web tối giản, được lập trình đẹp mắt, chỉ có hai phần phụ thuộc trực tiếp: công cụ mẫu Jinja2 và bộ công cụ Werkzeug WSGI.

Sử dụng Flask, cực kỳ dễ dàng để tạo các trang web có thể trải dài ở bất kỳ đâu từ một file đơn lẻ đến hàng chục module có thể tái sử dụng (tức là các thành phần) được cấu trúc bằng bản thiết kế.

Trong bài viết của ta , ta sẽ sử dụng một ứng dụng Flask mẫu rất cơ bản - được tạo nghiêm ngặt để chứng minh việc triển khai. Để tìm hiểu về cách đóng gói ứng dụng của bạn và tải lên, hãy xem bài viết Cách đóng gói và phân phối Ứng dụng Python của ta . Nếu bạn muốn tìm hiểu thêm về Flask và "trở nên lớn hơn", bạn có thể quan tâm đến Cách cấu trúc các ứng dụng Flask lớn của ta .

Triển khai ứng dụng web


Liên quan đến tất cả các ứng dụng web Python WSGI, việc triển khai bao gồm việc chuẩn bị một module WSGI có chứa tham chiếu đến đối tượng ứng dụng của bạn, sau đó được sử dụng làm điểm vào bởi web server để chuyển các yêu cầu sẽ được ứng dụng xử lý bộ điều khiển (hoặc khung nhìn).

Ở đây, ta sẽ sử dụng uWSGI hoạt động như một server ứng dụng WSGI sẽ chứa ứng dụng Flask để phục vụ nó đằng sau Nginx. Vì Nginx có hỗ trợ riêng cho giao thức dây nhanh hơn được ưa thích và (được hoan nghênh) của uWSGI, ta sẽ cài đặt nó hoạt động cho phù hợp.

WSGI Tóm tắt


Nói một cách đơn giản, WSGI là một giao diện giữa web server và chính ứng dụng. Nó tồn tại đảm bảo một cách tiêu chuẩn hóa giữa các server và ứng dụng (khuôn khổ) khác nhau hoạt động với nhau, cho phép swap cho nhau khi cần thiết (ví dụ: chuyển từ môi trường phát triển sang môi trường production ), một nhu cầu bắt buộc hiện nay.

Lưu ý: Nếu bạn quan tâm đến việc tìm hiểu thêm về web server WSGI và Python, hãy xem bài viết của ta : So sánh web server cho ứng dụng web dựa trên Python .

Trong trường hợp của Flask, các hoạt động WSGI được xử lý bởi thư viện trung gian Werkzeug bên dưới.

Sử dụng Nginx làm Reverse-Proxy


Nginx là một web server / (ngược) -proxy có hiệu suất rất cao. Nó đã trở nên phổ biến do trọng lượng nhẹ, tương đối dễ làm việc và dễ mở rộng (với các tiện ích bổ sung / trình cắm thêm). Nhờ kiến trúc của nó, nó có khả năng xử lý rất nhiều yêu cầu (hầu như không giới hạn), điều này - tùy thuộc vào tải ứng dụng hoặc trang web - có thể thực sự khó giải quyết bằng một số lựa chọn thay thế cũ hơn khác.

Hãy nhớ: "Xử lý" các kết nối về mặt kỹ thuật nghĩa là không làm rơi chúng và có thể phục vụ chúng bằng một thứ gì đó . Bạn vẫn cần ứng dụng và database của bạn hoạt động tốt để Nginx phục vụ các phản hồi của client không phải là thông báo lỗi.

Do sự phổ biến và thành công của nó, ta sẽ triển khai ứng dụng Flask chạy sau Nginx để hưởng lợi từ các tính năng mạnh mẽ của nó. Hỗ trợ root của nó cho server ứng dụng uWSGI cũng làm cho nó trở thành một cách ưu tiên để truy cập trực tuyến.

Server ứng dụng web Python WSGI


Server ứng dụng web Python [thường] là các giải pháp dựa trên C độc lập hoặc hoàn toàn (hoặc một phần) dựa trên Python (tức là Python thuần túy).

Chúng hoạt động bằng cách chấp nhận một module Python chứa - như đã giải thích trước đây - một ứng dụng có thể gọi để chứa ứng dụng web và phân phát nó trên mạng.

Mặc dù một số trong số chúng là những server có khả năng cao được dùng trực tiếp, nhưng bạn nên sử dụng Nginx phía trước vì những lý do đã đề cập ở trên (ví dụ: hiệu suất cao hơn). Tương tự như vậy, các server phát triển thường được vận chuyển với các khuôn khổ ứng dụng web không được khuyến khích sử dụng trong production do thiếu chức năng của chúng - tất nhiên là có một vài ngoại lệ !

Một số web server Python WSGI phổ biến là:

  • CherryPy

  • Gunicorn

  • uWSGI

  • nữ phục vụ

uWSGI Tóm tắt


Bất chấp các quy ước đặt tên rất khó hiểu, bản thân uWSGI là một dự án rộng lớn với nhiều thành phần, nhằm cung cấp một phần mềm đầy đủ để xây dựng các dịch vụ lưu trữ. Một trong những thành phần này, server uWSGI, chạy các ứng dụng Python WSGI. Nó có khả năng sử dụng nhiều giao thức khác nhau, bao gồm cả giao thức dây uwsgi của riêng nó, gần giống với SCGI. Để đáp ứng nhu cầu dễ hiểu về việc sử dụng các server HTTP độc lập trước server ứng dụng, các web server NGINX và Cherokee được điều chỉnh để hỗ trợ giao thức uwsgi hoạt động tốt nhất [của riêng] uWSGI để có quyền kiểm soát trực tiếp các quy trình của nó.

Điểm nổi bật của uWSGI

  • uWSGI đi kèm với bộ điều hợp WSGI và nó hỗ trợ đầy đủ các ứng dụng Python chạy trên WSGI.

  • Nó liên kết với libpython. Nó tải mã ứng dụng khi khởi động và hoạt động giống như một trình thông dịch Python. Nó phân tích cú pháp các yêu cầu đến và gọi Python có thể gọi được.

  • Nó đi kèm với hỗ trợ trực tiếp cho web server NGINX phổ biến (cùng với Cherokee và lighttpd).

  • Nó được viết bằng C.

  • Các thành phần khác nhau của nó có thể làm được nhiều việc hơn là chạy một ứng dụng, điều này có thể hữu ích cho việc mở rộng.

  • Hiện tại (cuối năm 2013), nó đang được phát triển tích cực và có chu kỳ phát hành nhanh chóng.

  • Nó có nhiều động cơ khác nhau để chạy các ứng dụng (không đồng bộ và đồng bộ).

  • Nó có thể nghĩa là bộ nhớ thấp hơn để chạy.

Chuẩn bị Hệ thống để Triển khai


Cập nhật hệ thống


Để có một server triển khai ổn định, điều quan trọng là phải cập nhật mọi thứ và duy trì tốt.

Để đảm bảo ta có version mới nhất của các ứng dụng mặc định, ta cần cập nhật hệ thống của bạn .

Chạy các bước sau để cập nhật hệ thống CentOS của bạn:

yum -y update 

Cài đặt Python, pip và virtualenv


Lưu ý: Hướng dẫn này phải hợp lệ cho CentOS version 6.5 cũng như 5.8 và 6.4.

CentOS / RHEL, theo mặc định, là một server rất gọn nhẹ. Bộ công cụ của nó, có thể đã được cập nhật theo yêu cầu của bạn, không phải ở đó để chạy các ứng dụng của bạn mà để cung cấp năng lượng cho các công cụ hệ thống của server (ví dụ: YUM).

Để chuẩn bị một hệ thống CentOS, Python cần được cài đặt (nghĩa là được biên dịch từ nguồn) và pip / virtualenv cần được cài đặt bằng cách sử dụng trình thông dịch cụ thể đó.

Nói chung, ta sẽ làm việc với các gói Python sau:

  • python-dev - công cụ phát triển

  • pip - để quản lý các gói

  • virtualenv - để tạo môi trường ảo, cô lập

Lưu ý: Sau đây là bản tóm tắt (mặc dù là một bản tường tận) về Cách cài đặt Python 2.7.6 và 3.3.3 trên bài viết CentOs 6.4 của ta . Nếu bạn muốn tìm hiểu thêm, bạn nên kiểm tra nó. Trong trường hợp bạn có thể cần tìm hiểu thêm về pip và virtualenv, hãy xem các Công cụ Python phổ biến của ta : Sử dụng virtualenv và hướng dẫn pip .

Chuẩn bị hệ thống để phát triển


Các bản phân phối của CentOS không đi kèm với nhiều ứng dụng và công cụ phổ biến mà bạn có thể cần - và đây là một lựa chọn thiết kế có chủ đích .

Đối với các cài đặt của ta , ta cần một số thư viện và công cụ (tức là các công cụ phát triển [liên quan] ) không được vận chuyển theo mặc định.

Do đó, ta cần download và cài đặt chúng trước khi tiếp tục.

Group phần mềm YUM bao gồm một loạt các công cụ (ứng dụng) thường được sử dụng cùng nhau, sẵn sàng để download tất cả cùng một lúc thông qua thực hiện một lệnh duy nhất và nêu rõ tên group .

Lưu ý: Sử dụng YUM, bạn thậm chí có thể download nhiều group cùng nhau.

Để có được các công cụ phát triển cần thiết, hãy chạy như sau:

yum groupinstall -y development 

hoặc là;

yum groupinstall -y 'development tools' 

Lưu ý: Phiên bản cũ (ngắn hơn) có thể không hoạt động trên các bản phân phối cũ hơn của CentOS .

Để download một số gói bổ sung hữu ích:

yum install -y zlib-devel openssl-devel sqlite-devel bzip2-devel 

Download , biên dịch và cài đặt Python trên CentOS


Lưu ý: Bạn có thể sử dụng các hướng dẫn ở đây để download bất kỳ version Python nào. Bạn sẽ chỉ cần thay thế version đã nêu (là 2.7.6 trong ví dụ bên dưới) bằng version bạn yêu cầu (ví dụ: 3.3.3). Bạn có thể cài đặt và sử dụng nhiều version cùng một lúc. Tuy nhiên, bạn cần chỉ định version của chúng trong quá trình thực thi (tức là thay vì python, bạn cần sử dụng python2.7 hoặc python3.3)

Hãy bắt đầu với việc truy xuất repository (nén) có chứa mã nguồn Python. Ta sẽ nhắm đến - --version 2.7.6 .

wget http://www.python.org/ftp/python/2.7.6/Python-2.7.6.tar.xz 

Tệp này được nén bằng thư viện XZ . Hệ thống của bạn, tùy thuộc vào version , có thể không có. Nếu đúng như vậy, hãy chạy phần sau để cài đặt thư viện XZ:

 yum install xz-libs 

Giải mã repository XZ và extract nội dung của repository tar:

# Let's decode (-d) the XZ encoded tar archive: xz -d Python-2.7.6.tar.xz   # Now we can perform the extraction: tar -xvf Python-2.7.6.tar 

Xác minh cơ sở mã bằng cách sử dụng ./configure :

# Enter the file directory: cd Python-2.7.6  # Start the configuration (setting the installation directory) # By default files are installed in /usr/local. # You can modify the --prefix to modify it (e.g. for $HOME). ./configure --prefix=/usr/local     

Xây dựng và cài đặt Python 2.7.6:

# Let's build (compile) the source # This procedure can take awhile (~a few minutes) make && make altinstall 

[Bước tùy chọn] Thêm vị trí cài đặt Python mới vào PATH:

Lưu ý: Nếu bạn đã làm theo hướng dẫn sử dụng cài đặt mặc định, bạn không cần phải xem qua phần này. Tuy nhiên, nếu bạn đã chọn một đường dẫn khác với / usr / local để cài đặt Python, bạn cần thực hiện những điều sau để có thể chạy nó mà không cần nêu rõ ràng đường dẫn [cài đặt] đầy đủ của nó mỗi lần .

# Example: export PATH="[/path/to/installation]:$PATH" export PATH="/usr/local/bin:$PATH" 

Để tìm hiểu thêm về PATH, hãy xem xét định nghĩa PATH tại Dự án Thông tin Linux.

Cài đặt pip và virtualenv công cụ Python phổ biến


Sau khi cài đặt Python, bây giờ ta có thể hoàn thành việc hoàn thành các kiến thức cơ bản để production và triển khai ứng dụng. Đối với điều này, ta sẽ cài đặt hai trong số các công cụ được sử dụng phổ biến nhất: trình quản lý gói pip và trình quản lý môi trường virtualenv .

Nếu bạn quan tâm đến việc tìm hiểu thêm về hai công cụ này hoặc chỉ cần nhanh chóng làm mới kiến thức của bạn , hãy xem xét đọc 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 .

Cài đặt pip trên CentOS bằng cài đặt Python mới


Trước khi cài đặt pip, ta cần lấy phần phụ thuộc bên ngoài duy nhất của nó - setuptools .

Thực hiện các lệnh sau để cài đặt các công cụ cài đặt :

Điều này sẽ cài đặt nó cho [Python] version 2.7.6

# Let's download the installation file using wget: wget --no-check-certificate https://pypi.python.org/packages/source/s/setuptools/setuptools-1.4.2.tar.gz  # Extract the files from the archive: tar -xvf setuptools-1.4.2.tar.gz  # Enter the extracted directory: cd setuptools-1.4.2  # Install setuptools using the Python we've installed (2.7.6) python2.7 setup.py install 

Cài đặt pip chính nó là một quá trình rất đơn giản sau đó. Ta sẽ sử dụng các hướng dẫn từ bài viết được đề cập ở trên để download và cài đặt tự động và an toàn bằng thư viện cURL .

Hãy download các file cài đặt cho pip và cài đặt Python (2.7):

Điều này sẽ cài đặt nó cho [Python] version 2.7.6

curl https://raw.github.com/pypa/pip/master/contrib/get-pip.py | python2.7 - 

Cài đặt virtualenv trên CentOS bằng cài đặt Python mới


Chạy lệnh sau để download và cài đặt virtualenv bằng pip:

pip install virtualenv 

Bắt đầu triển khai ứng dụng


Trước khi bắt đầu tạo một ứng dụng mẫu và thực sự download (và cài đặt) server của bạn , ta cần (không phải nhưng cần) tạo một môi trường ảo để chứa các thư viện và dữ liệu liên quan đến ứng dụng.

Tạo folder ứng dụng để triển khai


Hãy bắt đầu với việc xây dựng một folder ứng dụng để chứa:

  • Mô-đun ứng dụng của ta

  • Thư mục môi trường ảo

  • Tệp WSGI mà server cần

# Folders / Directories mkdir ~/MyApplication     # Replace the name to suit your needs mkdir ~/MyApplication/app # Application (module) directory  # Application Files  touch ~/MyApplication/WSGI.py          # Server entry-point touch ~/MyApplication/app/__init__.py  # Application file 

Tạo môi trường ảo


Bắt đầu sử dụng môi trường ảo rất dễ dàng.

Chạy phần sau để bắt đầu một môi trường mới bên trong folder MyApplication :

cd ~/MyApplication virtualenv env 

Lệnh này sẽ tạo một folder mới - được gọi là env - bên cạnh ứng dụng module app .

Làm việc với môi trường ảo


Có một số cách để làm việc với môi trường ảo:

  • Kích hoạt môi trường

  • Nêu rõ vị trí của trình thông dịch Python bên trong môi trường.

Để giữ cho mọi thứ đơn giản, ta sẽ làm theo tùy chọn thứ hai và nêu rõ vị trí của trình thông dịch Python và pip.

Download và cài đặt uWSGI bên trong môi trường ảo


Để cài đặt uWSGI bằng pip, hãy chạy như sau:

~/MyApplication/env/bin/pip install uwsgi 

Lệnh này sẽ cài đặt uWSGI bên trong môi trường ảo của ta .

Download và cài đặt thư viện bình


Để cài đặt Flask bằng pip, hãy chạy như sau:

~/MyApplication/env/bin/pip install flask 

Lệnh này sẽ cài đặt Flask bên trong môi trường ảo của ta

Tạo một ứng dụng flask mẫu


Để tiếp tục với ví dụ triển khai của ta , ta cần cài đặt một ứng dụng mẫu để chạy.

Hãy tạo (chỉnh sửa) một ứng dụng Flask trang đơn:

nano ~/MyApplication/app/__init__.py 

Đặt các nội dung dưới đây để xác định một ứng dụng Flask đơn giản:

from flask import Flask app = Flask(__name__)  @app.route("/") def hello():     return "Hello!"  if __name__ == "__main__":     app.run() 

Lưu và thoát bằng cách nhấn CTRL + X và xác nhận với Y.

Tạo một file WSGI mẫu để nhập ứng dụng


Trong trường hợp bình thường, folder ứng dụng ta đã tạo sẽ chứa module ứng dụng chính - mà ta đã tóm tắt trong một file duy nhất. Mô-đun ứng dụng này, cùng với đối tượng ứng dụng, sẽ được nhập bằng file WSGI để được phục vụ. Trong bước này, ta sẽ tạo file WSGI đó, file này sẽ nhập ứng dụng và cung cấp cho server ứng dụng uWSGI trong bước tiếp theo.

Hãy tạo (chỉnh sửa) file WSGI.py:

nano ~/MyApplication/WSGI.py 

Đặt các nội dung dưới đây:

from app import app  if __name__ == "__main__":     app.run() 

Giai đoạn triển khai: Cài đặt và cài đặt Nginx


Dù lựa chọn server nào, ứng dụng CherryPy của ta sẽ trực tuyến sau Nginx vì những lý do mà ta đã đề cập trong các phần trước. Vì vậy, trước tiên ta hãy download và cấu hình Nginx và tiếp tục với các server ứng dụng đang hoạt động.

Ví dụ về Kiến trúc server cơ bản:

Client Request ----> Nginx (Reverse-Proxy)                         |                        /|\                                                  | | `-> App. Server I.   127.0.0.1:8080 # Our example                       |  `--> App. Server II.  127.0.0.1:8082                        `----> App. Server III. 127.0.0.1:8083 

Cài đặt Nginx


Lưu ý cho user CentOS / RHEL:

Các hướng dẫn dưới đây sẽ không hoạt động trên hệ thống CentOS. Vui lòng xem hướng dẫntại đây cho CentOS.

Chạy lệnh sau để cài đặt Nginx bằng aptitude:

# Enable EPEL Repository sudo su -c 'rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm'  # Download and install Nginx sudo yum install -y nginx 

Để chạy Nginx, hãy sử dụng như sau:

sudo service nginx start 

Để dừng Nginx, hãy sử dụng cách sau:

sudo service nginx stop 

Để khởi động lại Nginx, hãy sử dụng như sau:

# After each time you reconfigure Nginx, a restart # or reload is needed for the new settings to come # into effect.   sudo service nginx restart 

Cấu hình Nginx


Sau khi chọn và cài đặt web server để chạy ứng dụng của bạn , ta có thể tiếp tục thực hiện tương tự với Nginx và chuẩn bị cho nó để nói chuyện với (các) server back-end [đang chạy ứng dụng WSGI].

Để làm điều này, ta cần sửa đổi file cấu hình của Nginx: “nginx.conf”

Chạy lệnh sau để mở nginx.conf và chỉnh sửa nó bằng editor nano:

sudo nano /etc/nginx/nginx.conf 

Bạn có thể thay thế file bằng cấu hình ví dụ sau để Nginx hoạt động như một Reverse Proxy , nói chuyện với ứng dụng của bạn.

Copy paste cấu hình ví dụ dưới đây:

Lưu ý: Để tìm hiểu về cách kết hợp hỗ trợ SSL, trước tiên hãy đọc bài viết này: Tạo certificate SSL trên Nginx .

Trong ví dụ dưới đây, ta đang tận dụng khả năng tích hợp root của Nginx với server ứng dụng uWSGI thông qua giao thức dây uwsgi của nó.

Cấu hình ví dụ cho các ứng dụng web:

worker_processes 1;  events {      worker_connections 1024;  }  http {      sendfile on;      gzip              on;     gzip_http_version 1.0;     gzip_proxied      any;     gzip_min_length   500;     gzip_disable      "MSIE [1-6]\.";     gzip_types        text/plain text/xml text/css                       text/comma-separated-values                       text/javascript                       application/x-javascript                       application/atom+xml;      # Configuration containing list of application servers     upstream uwsgicluster {          server 127.0.0.1:8080;         # server 127.0.0.1:8081;         # ..         # .      }      # Configuration for Nginx     server {          # Running port         listen 80;          # Settings to by-pass for static files          location ^~ /static/  {              # Example:             # root /full/path/to/application/static/file/dir;             root /app/static/;          }          # Serve a static file (ex. favico) outside static dir.         location = /favico.ico  {              root /app/favico.ico;          }          # Proxying connections to application servers         location / {              include            uwsgi_params;             uwsgi_pass         uwsgicluster;              proxy_redirect     off;             proxy_set_header   Host $host;             proxy_set_header   X-Real-IP $remote_addr;             proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;             proxy_set_header   X-Forwarded-Host $server_name;          }     } } 

Khi bạn hoàn tất việc sửa đổi cấu hình, hãy nhấn CTRL + X và xác nhận với Y để lưu và thoát. Bạn cần khởi động lại Nginx để các thay đổi có hiệu lực.

Chạy phần sau để khởi động lại Nginx:

sudo service nginx stop sudo service nginx start 

Lưu ý: Để tìm hiểu thêm về Nginx, vui lòng tham khảo bài viết của ta : Cách cấu hình web server Nginx trên VPS .

Cài đặt server ứng dụng web Python WSGI


Lưu ý: Để tìm hiểu thêm về cách triển khai ứng dụng web Python bằng uWSGI, hãy xem bài viết của ta : Cách triển khai bằng web server uWSGI .

Cung cấp ứng dụng bằng uWSGI


Trong phần này, ta sẽ xem cách một ứng dụng Python WSGI hoạt động với web server uWSGI. Những gì uWSGI cần, cũng giống như các server khác, là để ứng dụng của bạn cung cấp cho nó một điểm nhập (tức là một đối tượng app ). Trong khi chạy , có thể gọi này, cùng với các biến cấu hình, được chuyển cho uWSGI và nó bắt đầu thực hiện công việc của bạn . Khi một yêu cầu đến, nó sẽ xử lý và chuyển nó đến bộ điều khiển ứng dụng của bạn để xử lý.

Chạy server


uWSGI có rất nhiều tùy chọn và cấu hình với nhiều cách khả thi để sử dụng chúng nhờ tính linh hoạt của nó. Không làm phức tạp thêm ngay từ đầu, ta sẽ bắt đầu làm việc với nó đơn giản nhất có thể và tiếp tục với những phương pháp tiên tiến hơn.

Lưu ý: Đảm bảo ở trong folder “my_app” trước khi thực hiện các lệnh bên dưới vì nếu không uwsgi sẽ không thể tìm thấy wsgi.py cũng như nhập ứng dụng đối tượng ứng dụng .

Ví dụ sử dụng đơn giản:

# Enter the application directory cd ~/MyApplication  # Run uWSGI Installed inside the virtual environment env/bin/uwsgi [option] [option 2] .. -w [wsgi file with app. callable] 

Để chạy uWSGI để bắt đầu cung cấp ứng dụng từ wsgi.py , hãy chạy như sau:

cd ~/MyApplication env/bin/uwsgi --socket 127.0.0.1:8080 -w WSGI:app  # To get uWSGI communicate with Nginx using HTTP: # env/bin/uwsgi --socket 127.0.0.1:8080 --protocol=http -w WSGI:app 

Thao tác này sẽ chạy server trên nền trước. Nếu bạn muốn dừng nó, hãy nhấn CTRL + C.

Để chạy server trong nền, hãy chạy như sau:

env/bin/uwsgi --socket 127.0.0.1:8080 -w WSGI:app & 

Khi bạn chạy một ứng dụng trong nền, bạn cần sử dụng trình quản lý tiến trình (ví dụ: htop) để giết (hoặc dừng) ứng dụng đó. Xem phần bên dưới để biết thêm chi tiết.

Và đó là nó! Sau khi kết nối server ứng dụng của bạn với Nginx, bây giờ bạn có thể truy cập nó bằng cách truy cập địa chỉ IP của server bằng trình duyệt yêu thích của bạn.

http://[your server's IP adde.]/  # Hello, world! 

Đọc thêm


Nếu bạn muốn tìm hiểu thêm về triển khai ứng dụng web Python, bạn nên xem các bài viết sau của ta về chủ đề này để hiểu rõ hơn:

<div class = “author”> Gửi bởi: <a
href = “https://twitter.com/ostezer”> Hệ điều hành Tezer </a> </div>


Tags:

Các tin liên quan

Cách triển khai ứng dụng web CherryPy đằng sau Nginx Reverse-Proxy
2014-01-14
Cách tạo ứng dụng web với HMVC PHP5 Framework Kohana
2013-12-30
Hướng dẫn đơn giản về cách cài đặt ứng dụng trực diện web trên VPS
2013-12-09
So sánh web server (Rack) cho Ứng dụng Web Ruby
2013-11-25
So sánh các web server cho các ứng dụng web dựa trên Python
2013-10-28
Cách sử dụng node.js, request và cheerio để thiết lập Web-Scraping đơn giản
2013-09-16
Cách tạo một ứng dụng web nhỏ với CakePHP trên VPS (Phần 1)
2013-08-23
Cách mở rộng ứng dụng web trên Ubuntu 12.10
2013-04-11