Cách triển khai ứng dụng web CherryPy đằng sau Nginx Reverse-Proxy
CherryPy là một khung công tác tuyệt vời để tạo các ứng dụng web và API ở mọi quy mô - Từ một “người mới bắt đầu với Python” Xin chào các bạn! để những gì có thể trở thành một trong những trang web bận rộn nhất thế giới!Nếu bạn đến từ một ngôn ngữ khác, quá trình đưa ứng dụng mới của bạn lên mạng có thể hơi lạ lẫm khi bạn bắt đầu phát triển lần đầu bằng CherryPy.
Trong bài viết DigitalOcean này, ta sẽ đi qua hai cách tốt để triển khai một ứng dụng web dựa trên CherryPy hoàn toàn vững chắc cùng với việc quản lý các phụ thuộc của nó bằng cách sử dụng pip.
Bảng chú giải
1. Sơ lược về triển khai ứng dụng web và CherryPy
- Triển khai ứng dụng web
- WSGI
- Sử dụng Nginx làm Reverse-Proxy
- Server ứng dụng web Python (WSGI)
- Sơ lược về server ứng dụng (HTTP) của CherryPy
- uWSGI
2. Chuẩn bị một ứng dụng CherryPy đơn giản với đối tượng “ứng dụng” được phơi bày
- Tạo cấu trúc ứng dụng
- Chỉnh sửa “app / init .py” bằng nano
- Chỉnh sửa “wsgi.py” bằng nano
3. Chuẩn bị Hệ thống Triển khai CherryPy
- Cập nhật hệ thống
- Cài đặt Python, pip và virtualenv
- python-dev
- pip
- virtualenv
- Download và cài đặt CherryPy
- Download và cài đặt uWSGI
4. Cách xử lý dependencies của ứng dụng bằng pip
- Tạo danh sách phụ thuộc ứng dụng
- Download từ danh sách phụ thuộc ứng dụng
5. Bắt đầu triển khai: Download , cài đặt và cài đặt Nginx
- Cài đặt Nginx
- Cấu hình Nginx
6. Cài đặt server ứng dụng web Python WSGI
- Cung cấp ứng dụng bằng web server riêng của CherryPy [*]
- Chạy và Quản lý Server Ứng dụng CherryPy
- Cung cấp ứng dụng bằng uWSGI [*]
- Chạy server
Sơ lược về triển khai ứng dụng web và CherryPy
Nhìn chung CherryPy là một khung phát triển ứng dụng web Python tối giản, không được vận chuyển với quá nhiều thành phần bên ngoài, dù bạn có muốn chúng hay không. Framework tất cả các nhu cầu cốt lõi mà bạn có thể cần (ví dụ: phiên, bộ nhớ đệm, tải file lên, v.v.) và để phần còn lại - và sự lựa chọn - sử dụng cái gì và sử dụng như thế nào do bạn quyết định. Nó tự tách biệt khỏi các khuôn khổ Python khác bằng sự đơn giản của nó để truy cập trực tuyến bằng cách sử dụng được vận chuyển, sẵn sàng triển khai Server Web gộp stream WSGI, tuân theo HTTP / 1.1 .
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 như một điểm truy cập bởi web server để chuyển các yêu cầu.
Lưu ý: Tuy nhiên, trong trường hợp sử dụng server của CherryPy, quy trình trở nên đơn giản hơn và bạn không cần phải lo lắng về điều đó.
Trong bài viết của ta , ta sẽ thấy hai cách triển khai ứng dụng khác nhau:
Sử dụng web server mặc định của CherryPy, tuyệt vời cho hầu hết các ứng dụng và;
Sử dụng một server ứng dụng thay thế khác (uWSGI) cho các ứng dụng yêu cầu khả năng cấu hình chuyên sâu.
WSGI
Tóm lại, 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 (tức là chuyển từ môi trường phát triển sang môi trường production ), đây là 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 .
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.
Lưu ý : "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.
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ụ
Sơ lược về server ứng dụng (HTTP) của CherryPy
Web server Python thuần túy của CherryPy là một giải pháp nhỏ gọn đi kèm với khuôn khổ trùng tên. Được dự án [CherryPy] xác định là " server HTTP chung tốc độ cao, sẵn sàng production , gộp stream ," nó là một thành phần được module hóa được dùng để phục vụ bất kỳ ứng dụng web Python WSGI nào.
Điểm nổi bật của Server Web CherryPy:
Một giải pháp Python thuần túy rất nhỏ gọn và đơn giản để sử dụng
Dễ cấu hình, dễ sử dụng
Tổng hợp chuỗi và nhanh chóng
Cho phép mở rộng quy mô
Hỗ trợ SSL
uWSGI
Sau đây là phần extract từ bài viết So sánh server Python DigitalOcean được đề cập ở trên.
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 repository đầ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 module hóa để 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ó 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ị một ứng dụng CherryPy đơn giản với đối tượng “ứng dụng” được phơi bày
Hãy bắt đầu ví dụ triển khai của ta với việc tạo một ứng dụng CherryPy mới để sử dụng làm mẫu.
Lưu ý: Ví dụ ứng dụng ở đây sử dụng môi trường ảo để quản lý các file ứng dụng và các phụ thuộc của nó. Để tìm hiểu về pip và virtualenv , hãy xem hướng dẫn của ta Các công cụ Python phổ biến: Sử dụng virtualenv, Cài đặt bằng Pip và Quản lý các gói .
Tạo cấu trúc ứng dụng
Ta muốn làm việc với một ví dụ đơn giản giống như một ứng dụng rất tối giản nhưng thực tế.
Với mục đích này, ta có thể tạo một cái gì đó tương tự như sau:
myy_app |-- wsgi.py |__ /app |-- __init__.py
Trước hết, hãy tạo một folder ứng dụng và một module ứng dụng:
mkdir ~/my_app mkdir ~/my_app/app
Sau đó, hãy tạo file ứng dụng và file wsgi.py
cần thiết để triển khai:
touch ~/my_app/wsgi.py touch ~/my_app/app/__init__.py
Chỉnh sửa “app / init .py” bằng nano
Ta đã tạo gói app
để chứa module ứng dụng mẫu của ta . Bây giờ ta có thể chỉnh sửa __init__.py
để xác định nó.
nano ~/my_app/app/__init__.py
Copy paste tập lệnh dưới đây:
import cherrypy class Root(object): @cherrypy.expose def index(self): return "Hello, world!"
Nhấn CTRL + X và xác nhận với Y để lưu và thoát.
Chỉnh sửa “wsgi.py” bằng nano
Tệp wsgi.py
sẽ được sử dụng để hiển thị một điểm vào ứng dụng của bạn. Trong ví dụ của ta , bên trong file này, ta sẽ nhập module ứng dụng (app) và chạy nó trực tiếp bằng web server WSGI của CherryPy hoặc chuyển nó đến uWSGI sẽ chứa nó và chạy.
nano ~/my_app/wsgi.py
Copy paste các nội dung dưới đây:
import cherrypy from app import Root app = cherrypy.tree.mount(Root(), '/') if __name__=='__main__': cherrypy.config.update({ 'server.socket_host': '127.0.0.1', 'server.socket_port': 8080, }) # Run the application using CherryPy's HTTP Web Server cherrypy.quickstart(Root())
Nhấn CTRL + X và xác nhận với Y để lưu và thoát.
Chuẩn bị Hệ thống Triển khai CherryPy
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 .
Đối với Hệ thống dựa trên Debian (tức là Ubuntu, Debian), hãy chạy như sau:
aptitude update aptitude -y upgrade
Đối với Hệ thống dựa trên RHEL (tức là CentOS), hãy chạy như sau:
yum -y update
Cài đặt Python, pip và virtualenv
Lưu ý cho user CentOS / RHEL:
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ị hệ thống CentOS của bạn, Python cần được cài đặt (tức là được biên dịch từ nguồn) và pip * / virtualenv cần cài đặt bằng trình thông dịch đó.
Để tìm hiểu về Cách cài đặt Python 2.7.6 và 3.3.3 trên CentOS 6.4 và 5.8 , với pip và virtualenv , vui lòng tham khảo: Cách cài đặt Python 2.7.6 và 3.3.3 trên CentOS .
Trên Ubuntu và Debian , version trình thông dịch Python gần đây mà bạn có thể sử dụng được đưa ra theo mặc định. Nó khiến ta chỉ có một số gói bổ sung hạn chế để cài đặt:
python-dev (công cụ phát triển),
pip (để quản lý các gói),
virtualenv (để tạo riêng biệt, ảo
Lưu ý: Trước khi tiếp tục cài đặt các ứng dụng nhất định, đặc biệt là nếu xây dựng từ nguồn, bạn có thể cần cài đặt các công cụ phát triển thiết yếu có tính chất xây dựng bằng cách sử dụng lệnh sau:
aptitude install -y build-essential
python-dev
python-dev là một gói cấp hệ điều hành chứa các công cụ phát triển mở rộng để xây dựng các module Python.
Chạy lệnh sau để cài đặt python-dev bằng aptitude:
aptitude install -y python-dev # You might need python2.7-dev # aptitude install -y python2.7-dev
pip
pip là một trình quản lý gói sẽ giúp ta cài đặt các gói ứng dụng mà ta cần.
Chạy các lệnh sau để cài đặt pip:
curl https://bitbucket.org/pypa/setuptools/raw/bootstrap/ez_setup.py | python - curl https://raw.github.com/pypa/pip/master/contrib/get-pip.py | python - export PATH="/usr/local/bin:$PATH"
Bạn có thể cần các quyền của sudo.
virtualenv
Tốt nhất là chứa một ứng dụng Python trong môi trường riêng của nó cùng với tất cả các phụ thuộc của nó. Một môi trường có thể được mô tả tốt nhất (theo thuật ngữ đơn giản) như một vị trí biệt lập (một folder ), nơi mọi thứ cư trú. Với mục đích này, một công cụ gọi là virtualenv được sử dụng.
Chạy phần sau để cài đặt virtualenv bằng pip:
sudo pip install virtualenv
Download và cài đặt CherryPy
Khung CherryPy có thể được cài đặt bằng trình quản lý gói pip.
Chạy phần sau để cài đặt cherrypy bằng pip:
# Install CherryPy Framework and HTTP Web-Server pip install cherrypy
Download và cài đặt uWSGI
Đó luôn là cách được khuyến khích để chứa tất cả các phần tử liên quan đến ứng dụng cùng nhau bên trong môi trường ảo càng nhiều càng tốt. Vì vậy, ta sẽ download và cài đặt uWSGI như vậy.
Nếu bạn không làm việc trong một môi trường, uWSGI sẽ được cài đặt trên phạm vi global (tức là có sẵn trên toàn hệ thống). Điều này không được khuyến khích - luôn chọn sử dụng virtualenv .
Để cài đặt uWSGI bằng pip, hãy chạy như sau:
pip install uwsgi
Cách xử lý dependencies của ứng dụng bằng pip
Vì rất có thể bạn đã bắt đầu quá trình phát triển trên một máy local , khi triển khai ứng dụng của bạn , bạn cần đảm bảo tất cả các phần phụ thuộc của nó đã được cài đặt (bên trong môi trường ảo * của bạn).
Tạo danh sách phụ thuộc ứng dụng
Cách đơn giản nhất để lấy các phụ thuộc vào môi trường production là sử dụng pip. Với một lệnh duy nhất, nó có khả năng tạo tất cả các gói (hoặc các gói phụ thuộc) mà bạn đã cài đặt (trong môi trường đã kích hoạt của bạn, nếu không, trên phạm vi global trên hệ thống của bạn) và với một lệnh duy nhất, nó cho phép bạn download tất cả chúng và Cài đặt.
Lưu ý: Phần này chứa thông tin sẽ được thực thi trên máy phát triển local của bạn hoặc từ bất cứ đâu bạn muốn tạo danh sách các phụ thuộc ứng dụng. Tệp này phải được đặt bên trong folder ứng dụng của bạn và được tải lên server của bạn.
Sử dụng “pip” để tạo danh sách các gói đã cài đặt:
pip freeze > requirements.txt
Lệnh này sẽ tạo một file có tên là requirements.txt
chứa danh sách tất cả các gói đã cài đặt. Nếu bạn chạy nó trong vòng một virtualenv, danh sách sẽ bao gồm các gói cài đặt bên trong chỉ môi trường. Nếu không, tất cả các gói, được cài đặt trên phạm vi global sẽ được liệt kê.
Download từ danh sách phụ thuộc ứng dụng
Sử dụng pip để cài đặt các gói từ danh sách:
Lưu ý: Phần này chứa thông tin sẽ được thực thi trên máy / môi trường production (tức là triển khai) của bạn.
pip install -r requirements.txt
Lệnh này sẽ download và cài đặt tất cả các gói được liệt kê. Nếu bạn đang làm việc trong một môi trường được kích hoạt, các file sẽ được download ở đó. Nếu không, chúng sẽ được cài đặt trên phạm vi global - đây không phải là cách được khuyến khích vì những lý do đã giải thích trong các phần trước.
Bắt đầu triển khai: Download , 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 :
sudo aptitude install 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
Lưu ý: Để tìm hiểu thêm về Nginx trên Ubuntu, vui lòng tham khảo bài viết của ta : Cách cài đặt Nginx trên Ubuntu 12.04 .
Cấu hình Nginx
Lưu ý: Dưới đây là hướng dẫn ngắn hơn về cách sử dụng Nginx làm Reverse Proxy . Để tìm hiểu thêm về Nginx, hãy xem Cách cấu hình web server Nginx trên VPS .
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:
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 app_servers { server 127.0.0.1:8080; # server 127.0.0.1:8081; # .. # . } # Configuration for Nginx server { # Running port listen 80; # Settings to serve static files location ^~ /static/ { # Example: # root /full/path/to/application/static/file/dir; root /app/static/; } # Serve a static file (ex. favico) # outside /static directory location = /favico.ico { root /app/favico.ico; } # Proxy connections to the application servers # app_servers location / { proxy_pass http://app_servers; 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
Cài đặt server ứng dụng web Python WSGI
Sau khi tạo một ứng dụng mẫu và thực hiện theo cách của ta thông qua việc quản lý các phụ thuộc, ta đã sẵn sàng bắt đầu với giai đoạn triển khai cuối cùng: cài đặt server .
Như đã đề cập ở trên, trong bài viết này ta sẽ tập trung vào việc sử dụng server ứng dụng web CherryPy và uWSGI đằng sau Nginx.
Cung cấp ứng dụng bằng web server riêng của CherryPy [*]
Web server Python thuần túy của CherryPy là một giải pháp nhỏ gọn đi kèm với framework. Nó được dự án định nghĩa là " server HTTP chung tốc độ cao, sẵn sàng production , gộp stream , chung."
Vì ta đã phát triển bằng cách sử dụng khuôn khổ, nên chương trình của ta bên trong wsgi.py
đã được chuẩn bị để bắt đầu phân phát khi chạy nó.
Cài đặt của ta cho CherryPy phù hợp với cấu hình Nginx của ta :
# .. cherrypy.config.update({ 'server.socket_host': '127.0.0.1', 'server.socket_port': 8080, }) # ..
Chạy và Quản lý Server Ứng dụng CherryPy
Để bắt đầu cung cấp ứng dụng của bạn, bạn chỉ cần thực thi server.py
bằng cách sử dụng cài đặt Python của bạn .
Chạy phần sau để khởi động server như đã cấu hình :
python ~/my_app/wsgi.py
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 sử dụng cách sau:
python ~/my_app/wsgi.py &
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 đó.
Cung cấp ứng dụng bằng uWSGI [*]
Mặc dù cực kỳ có khả năng và mạnh mẽ, server HTTP riêng của CherryPy không dành cho tất cả các cài đặt hoặc triển khai. Nếu bạn yêu cầu khả năng điều chỉnh nhiều tùy chọn để phù hợp với cài đặt cấu hình mong muốn, uWSGI có thể là giải pháp cho bạn.
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:
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:
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:
uwsgi --socket 127.0.0.1:8080 --protocol=http -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>
Các tin liên quan
Cách triển khai các ứng dụng web Flask bằng uWSGI Behind Nginx trên CentOS 6.42014-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