Cách triển khai ứng dụng WSGI Python bằng web server CherryPy đằng sau Nginx
Rất có thể bạn đang hỏi một trong những câu hỏi sau khi đọc tiêu đề của hướng dẫn này:Tại sao tôi nên sử dụng web server thuần Python của CherryPy thay vì server độc lập “thực” (có lẽ dựa trên C) cho ứng dụng WSGI của bạn ?
CherryPy… Đó không phải là một khuôn khổ sao? Điều đó có liên quan gì đến việc triển khai ứng dụng dựa trên Chai, Bình, v.v. của tôi?
Có rất nhiều câu trả lời tốt và lý do cho cả hai. Trong bài viết DigitalOcean này, ta sẽ tìm thấy chúng. Ta sẽ bắt đầu với việc nói về CherryPy chính xác là gì và những lợi thế của việc sử dụng nó cho ứng dụng web của bạn. Ta sẽ tiếp tục giải thích “tại sao” và quan trọng nhất là “cách” bạn có thể triển khai một ứng dụng Python bằng Server Web của CherryPy.
Bảng chú giải
1. Hiểu CherryPy và sử dụng Nginx
- Sơ lược về Server Web CherryPy WSGI
- Tại sao nên triển khai với web server WSGI của CherryPy?
- Sử dụng Nginx làm Reverse-Proxy trước CherryPy
2. Chuẩn bị server của bạn để production
- Cập nhật hệ điều hành mặc định
- Cài đặt Python, pip và virtualenv
- Tạo môi trường ảo (Python)
- Download và cài đặt CherryPy
- Download và cài đặt Nginx
3. Cung cấp các ứng dụng web Python với CherryPy Web Server
- WSGI
- Đối tượng ứng dụng WSGI (Có thể gọi): wsgi.py
- Tạo tập lệnh để sử dụng CherryPy Web Server: server.py
- Chạy server
4. Cấu hình Nginx
5. Các mẹo và đề xuất khác
Hiểu CherryPy và sử dụng Nginx
CherryPy nói chung là một khung công tác web Python tối giản. Điều tối giản ở đây nghĩa là nó không được vận chuyển với quá nhiều thành phần bên ngoài hộp, cho dù bạn có thích (hoặc cần) chúng hay không. Chủ nghĩa tối giản về cơ bản là không áp đặt mọi thứ lên các nhà phát triển mà không cho họ lựa chọn. CherryPy - và các khuôn khổ khác như vậy cho vấn đề đó - thường xử lý các nhu cầu cốt lõi cần thiết mà người ta mong đợi (ví dụ: phiên, bộ nhớ đệm, tải file lên, v.v.) và để phần còn lại - và lựa chọn - sử dụng cái gì và sử dụng như thế nào để được quyết định bởi bạn .
Điều khác biệt giữa CherryPy với các framework Python khác (bao gồm cả một số framework "hoàn chỉnh") là tham vọng của các nhà phát triển trong việc cung cấp cho nó sẵn sàng hoạt động (tức là phát triển) và sẵn sàng triển khai như một gói (gói) ứng dụng độc lập. Để đạt được nhiệm vụ này, đối với các ứng dụng web, phải có một web server vững chắc. Đây chính là điểm mà CherryPy vượt trội, với Server Web gộp stream WSGI, tuân theo HTTP / 1.1, rất riêng của nó. Nó đã sẵn sàng production và thật tuyệt vời.
Sơ lược về Server Web CherryPy WSGI
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à một server HTTP chung tốc độ cao, sẵn sàng production , gộp stream , chung. 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
Tại sao phải triển khai với web server WSGI của CherryPy?
Như ta đã đề cập ở phần đầu, có lẽ bạn đang tự hỏi về lý do nên sử dụng giải pháp này thay vì một giải pháp nổi tiếng và cường điệu khác mà bạn có thể đã nghe nói đến hoặc thậm chí đã thử. Sự thật của vấn đề là, nhờ đặc điểm kỹ thuật tuyệt vời của WSGI, việc tạo một web server khá dễ dàng.Trong những năm qua, điều này đã sinh ra nhiều người trong số họ, với một số đạt đến mức độ phổ biến nhất định và hầu hết còn lại ẩn bên trong cỗ máy của nhà phát triển.
Số lượng sự lựa chọn rất lớn và tất cả chúng (hầu hết) đều làm cùng một công việc bí mật ở một mức độ lớn.
Chính xác thì tại sao bạn nên sử dụng web server CherryPy để triển khai ứng dụng của bạn ?
Câu trả lời khá đơn giản: đó là một niềm vui khi được làm việc cùng. Sự dễ dàng sử dụng để phục vụ ứng dụng web WSGI của bạn bằng server của CherryPy là đặc biệt. Nó sẽ giúp bạn đỡ đau đầu khi đứng dậy và chạy trong vòng một hoặc hai phút. Nó có thể tùy chỉnh ở một mức độ nhất định, cung cấp cho bạn khả năng chạy cả hai version đa quy trình và đa stream theo cách đơn giản nhất có thể thông qua một file duy nhất (ví dụ: server.py).
Lưu ý : Đối với cài đặt đa quy trình, bạn cần nhiều hơn một cá thể đối tượng “ server ” được cấu hình .
Trừ khi bạn chắc chắn rằng trong vòng vài phút sau khi ứng dụng của bạn trực tuyến, nó sẽ nhận được hàng chục nghìn yêu cầu mỗi giây và bạn không thể đơn giản sử dụng nhiều server hơn để cân bằng tải, thì tốt hơn hết bạn nên sử dụng thời gian của bạn để tiếp tục phát triển ứng dụng hơn là rắc rối với thư viện, tối ưu hóa CPU, xử lý sự cố, v.v.
CherryPy Web Server, cùng với (dễ dàng) sử dụng Nginx làm Reverse Proxy mặt trước là một cách thực sự vững chắc để phục vụ các ứng dụng web dựa trên Python WSGI, cho dù nó được phát triển trên Bottle, CherryPy, Django, Flask, Pyramid hoặc bất kỳ khuôn khổ nào khác.
Lưu ý : Kiến trúc được đề cập ở trên (giải thích bên dưới) cho phép bạn dễ dàng mở rộng quy mô theo chiều ngang (nhiều server hơn) và thậm chí theo chiều dọc (nhiều dung lượng hơn trên mỗi server ). “Điểm nghẽn” của bạn có thể là phần backend (cơ sở dữ liệu). Đó là lý do tại sao không đáng để bạn cố gắng tối ưu hóa mọi thứ cho đến chết trước khi thậm chí có lời hứa về tải cực lớn. Ngay cả khi đó, một cơ chế lưu trữ an toàn, nếu được giới thiệu, có thể sẽ giải quyết hầu hết các vấn đề của bạn.
Sử dụng Nginx làm Reverse-Proxy trước CherryPy
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.
Chính xác tại sao bạn nên sử dụng Nginx làm Reverse Proxy trước server ứng dụng?
Mặc dù server ứng dụng của bạn - web server CherryPy WSGI trong trường hợp của ta - có thể phục vụ ứng dụng của bạn và các file tĩnh của nó (ví dụ: javascript, css, hình ảnh, v.v.), bạn nên sử dụng Reverse Proxy , được cài đặt trong trước, chẳng hạn như Nginx. Điều này giúp giảm tải rất nhiều [từ các server ứng dụng] khi nó xử lý các yêu cầu của client (và chi phí chung) và nhiều tác vụ khác, mang lại cho bạn hiệu suất tổng thể tốt hơn nhiều.
Khi ứng dụng của bạn phát triển, bạn cần tối ưu hóa nó và khi đến thời điểm, hãy phân phối nó trên các server để có thể xử lý nhiều kết nối đồng thời hơn và có kiến trúc nhìn chung mạnh mẽ hơn. Có một Reverse Proxy trước (các) server ứng dụng của bạn cũng giúp bạn làm điều này ngay từ đầu.
Khả năng mở rộng của nó (ví dụ: bộ nhớ đệm root cùng với chuyển đổi dự phòng và các cơ chế khác) cũng là một kỳ công lớn mang lại lợi ích cho các ứng dụng web không giống như các server ứng dụng (đơn giản hơn).
Ví dụ về Kiến trúc server cơ bản:
Client Request ----> Nginx (Reverse-Proxy) | /|\ | | `-> App. Server I. 127.0.0.1:8081 | `--> App. Server II. 127.0.0.1:8082 `----> App. Server III. 127.0.0.1:8083
Lưu ý: Khi một ứng dụng được đặt để lắng nghe các kết nối đến trên 127.0.0.1
, ứng dụng sẽ chỉ có thể truy cập local . Tuy nhiên, nếu bạn sử dụng 0.0.0.0
, nó cũng sẽ chấp nhận các kết nối từ bên ngoài .
Chuẩn bị server của bạn để production
Trong phần này, ta sẽ chuẩn bị server của ta để production (tức là để triển khai ứng dụng của ta ).
Ta sẽ bắt đầu với:
- cập nhật hệ điều hành mặc định
- download và cài đặt các công cụ Python phổ biến (ví dụ: pip, virtualenv)
- và tạo một môi trường ảo để chứa ứng dụng (bên trong chứa các phụ thuộc của nó như CherryPy).
Lưu ý: Hướng dẫn đưa ra ở đây được giữ ngắn gọn. Để tìm hiểu thêm, hãy xem bài viết hướng dẫn của ta về pip và virtualenv : 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 .
Cập nhật hệ điều hành mặc định
Lưu ý: Ta sẽ thực hiện các cài đặt và chuẩn bị sau trên một server mới, sử dụng các version hệ điều hành gần đây. Về lý thuyết, bạn sẽ không gặp vấn đề khi thử chúng trên server của bạn . Tuy nhiên, nếu bạn đã chủ động sử dụng nó, ta khuyên bạn nên chuyển sang hệ thống mới trước khi thử.
Để đảm bảo ta có cá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 môi trường ảo, cô lập).
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 python-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
Tạo môi trường ảo (Python) độc lập
Có sẵn tất cả các công cụ cần thiết theo ý của ta , ta có thể tạo ra một môi trường triển khai ứng dụng của bạn .
Lưu ý : Nếu bạn chưa có virtualenv trên máy phát triển (cục bộ) cho dự án của bạn , bạn nên cân nhắc tạo một máy và di chuyển ứng dụng của bạn (và các phụ thuộc của nó) vào bên trong.
Hãy bắt đầu với việc tạo một folder chứa cả môi trường ảo và mô-đun ứng dụng của bạn :
Bạn có thể sử dụng bất kỳ tên nào ở đây để phù hợp với nhu cầu của bạn.
mkdir my_app
Ta có thể tiếp tục nhập folder này và tạo một môi trường ảo mới bên trong:
Bạn cũng có thể chọn bất kỳ tên nào bạn thích cho môi trường ảo của bạn .
cd my_app virtualenv my_app_venv
Hãy tạo một folder mới ở đó để chứa cả module ứng dụng Python của bạn:
Đây là folder chứa module ứng dụng của bạn.
mkdir app
Và kích hoạt trình thông dịch bên trong môi trường ảo để sử dụng nó:
Vui lòng đảm bảo sử dụng tên bạn đã chọn cho môi trường ảo của bạn nếu bạn muốn tìm một thứ gì đó khác ngoài “địa điểm ứng dụng của tôi”.
source my_app_venv/bin/activate
Cuối cùng, đây là cách folder triển khai ứng dụng chính của bạn sẽ trông như thế nào:
my_app # Main Folder to Contain Everything Together | |=== my_app_venv # V. Env. folder with the Python Int. |=== app # Your application module |.. |.
Download và cài đặt CherryPy
Để sử dụng Server Web WSGI của CherryPy, trước tiên ta cần download và cài đặt nó.
Để cài đặt CherryPy bằng pip, hãy chạy như sau:
pip install cherrypy
Lưu ý: Nếu bạn đang làm việc bên trong một môi trường, CherryPy sẽ được cài đặt ở đó. Nếu không, bản cài đặt sẽ có sẵn trên phạm vi global (tức là trên toàn hệ thống). Cài đặt global không được khuyến khích. Luôn chọn sử dụng virtualenv trên cả server và máy phát triển của bạn.
Download và 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 đây để sử dụng mặc định gói hệ thống quản lý aptitude install Nginx:
sudo aptitude install nginx
Để chạy Nginx, bạn có thể sử dụng như sau:
sudo service nginx start
Để dừng Nginx, bạn có thể sử dụng các cách sau:
sudo service nginx stop
Để khởi động lại Nginx, bạn có thể sử dụng như sau:
Sau mỗi lần bạn cấu hình lại Nginx, bạn cần khởi động lại hoặc reload để cài đặt mới có hiệu lực.
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 .
Cung cấp các ứng dụng web Python với CherryPy Web Server
Trong phần này, ta sẽ xem một ứng dụng WSGI hoạt động như thế nào với web server CherryPy. Quá trình này bao gồm việc cung cấp cho server một ứng dụng WSGI có thể gọi được (ví dụ: application = (..)
) làm điểm vào.
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 (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 .
Đối tượng ứng dụng WSGI (Có thể gọi): wsgi.py
Như đã đề cập ở trên, các web server chạy trên WSGI cần một đối tượng ứng dụng (tức là ứng dụng của bạn).
Với hầu hết các khuôn khổ và ứng dụng, điều này bao gồm:
- Một wsgi.py để chứa và cung cấp một đối tượng ứng dụng (hoặc có thể gọi) được server sử dụng.
- Và một server.py bao gồm đối tượng ứng dụng và sử dụng nó để phân phát.
Ta sẽ bắt đầu với việc tạo một “wsgi.py” mẫu và tiếp tục tạo một “server.py” chung cho CherryPy.
Bạn có thể chọn bất kỳ tên nào thay vì wsgi.py và server.py. Tuy nhiên, đây là những cái thường được sử dụng (ví dụ như của Django).
Hãy bắt đầu với việc tạo file wsgi.py để chứa một ứng dụng WSGI cơ bản.
Chạy lệnh sau để tạo wsgi.py bằng editor nano:
nano wsgi.py
Hãy tiếp tục di chuyển (sao chép / dán) mã ứng dụng WSGI cơ bản bên trong (mã này sẽ được thay thế bằng ứng dụng của bạn có thể gọi để production ):
def application(env, start_response): start_response('200 OK', [('Content-Type', 'text/html')]) return ["Hello!"]
Đây là file được server bao gồm và mỗi khi có yêu cầu, server sử dụng ứng dụng có thể gọi này để chạy trình xử lý yêu cầu của ứng dụng (tức là bộ điều khiển) khi phân tích cú pháp URL (ví dụ: mysite.tld / controller / method / variable).
Sau khi đặt mã ứng dụng vào, nhấn CTRL + X rồi xác nhận bằng Y để lưu file này vào bên trong folder my_app
cùng với môi trường ảo và module ứng dụng chứa ứng dụng thực của bạn.
Lưu ý: Ứng dụng WSGI này là ví dụ cơ bản nhất cho loại ứng dụng này. Bạn cần phải thay thế khối mã này để bao gồm đối tượng ứng dụng của bạn từ module ứng dụng.
Sau khi ta hoàn tất, đây là cách folder triển khai ứng dụng chính của bạn sẽ trông như thế nào:
my_app # Main Folder to Contain Everything Together | |=== my_app_venv # V. Env. folder with the Python Int. |=== app # Your application module | |--- wsgi.py # File containing application callable |.. |.
Tạo tập lệnh để sử dụng CherryPy Web Server: server.py
Bên trong folder folder làm việc hiện tại của ta (ví dụ: my_app), bây giờ ta cần tạo một tập lệnh Python:
- Bao gồm các ứng dụng
- Tạo một hoặc nhiều version web server CherryPy
- Cấu hình các version server này
- Khởi động và dừng (các) công cụ server
Có nhiều cách để lấy tập lệnh như vậy và trong ví dụ dưới đây, ta sẽ sử dụng một cách đơn giản nhưng dễ cấu hình.
Tạo file server.py để chứa tập lệnh chạy web server bằng nano:
nano server.py
Bên trong file này, hãy ghi (sao chép / dán) đoạn mã server sau:
# Import your application as: # from wsgi import application # Example: from wsgi import application # Import CherryPy import cherrypy if __name__ == '__main__': # Mount the application cherrypy.tree.graft(application, "/") # Unsubscribe the default server cherrypy.server.unsubscribe() # Instantiate a new server object server = cherrypy._cpserver.Server() # Configure the server object server.socket_host = "0.0.0.0" server.socket_port = 8080 server.thread_pool = 30 # For SSL Support # server.ssl_module = 'pyopenssl' # server.ssl_certificate = 'ssl/certificate.crt' # server.ssl_private_key = 'ssl/private.key' # server.ssl_certificate_chain = 'ssl/bundle.crt' # Subscribe this server server.subscribe() # Example for a 2nd server (same steps as above): # Remember to use a different port # server2 = cherrypy._cpserver.Server() # server2.socket_host = "0.0.0.0" # server2.socket_port = 8081 # server2.thread_pool = 30 # server2.subscribe() # Start the server engine (Option 1 *and* 2) cherrypy.engine.start() cherrypy.engine.block()
Lưu và thoát lại bằng cách nhấn CTRL + X và xác nhận với Y.
Cuối cùng, đây là cách folder triển khai ứng dụng chính của bạn sẽ trông như thế nào:
my_app # Main Folder to Contain Everything Together | |=== my_app_venv # V. Env. folder with the Python Int. |=== app # Your application module | |--- wsgi.py # File containing application callable |--- server.py # Python executable to launch the server |.. |.
Chạy server
Để 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 :
Lưu ý: Thao tác này sẽ thực thi tập lệnh, sử dụng trình thông dịch Python đã được kích hoạt vì ta vẫn đang làm việc trong môi trường ảo. Nếu nó không được kích hoạt, bạn cần phải nêu rõ đường dẫn: my app / bin / python_ server.py .
python server.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 chạy như sau:
python server.py &
Để quay lại dòng lệnh, chỉ cần nhấn enter. Ứng dụng sẽ vẫn chạy.
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 đó.
Cấu hình Nginx
Sau khi cài đặt CherryPy để chạy ứng dụng của ta , bây giờ ta cần làm tương tự với Nginx để nó nói chuyện với (các) server CherryPy. Đối với đ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
Sau đó, 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.
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 .
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 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
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ác mẹo và đề xuất khác
Bức firewall :
Bảo mật SSH:
Tạo cảnh báo:
Theo dõi và theo dõi log truy cập server hàng ngày:
<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 sử dụng khung kim tự tháp để xây dựng ứng dụng web Python của bạn trên Ubuntu2013-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