|
||||||||
|
||||||||
|
|
Công Cụ | Xếp Bài |
|
27-09-2015, 10:08 PM | #1 |
Guest
Trả Lời: n/a
|
Xây dựng Web server chạy Python với nginx + gunicorn + supervisord
Xây dựng Web server chạy Python với nginx + gunicorn + supervisord
tham khảo: http://azsysadmin.com/set-nginx-gunicorn-supervisord/ http://gunicorn.org/#deployment Nếu setup một web server chạy bằng PHP thì tôi đã có viết một bài về cách setup nginx + php-fpm và mysql . Link ở đây. LINK Nhưng nếu các bạn muốn webserver bằng python thì như thế nào. Gunicorn: Tool quán lý process, xử lý cho python language. Link Supervisord: Tool monitor service, nếu service nào stop thì tự động start lại. Trước mắt setup nginx: Cái này các bạn có thẻ tham khảo link ở trên. Còn không muốn đơn giản thì : LINK sudo -s nginx=stable # use nginx=development for latest development version add-apt-repository ppa:nginx/$nginx apt-get update apt-get install nginx sudo -s nginx=stable # use nginx=development for latest development version add-apt-repository ppa:nginx/$nginx apt-get update apt-get install nginx Sau khi install xong nginx. Thì ta sẽ install một virtual enviroment cho python. Mình recommend sử dụng virtualenvwrapper. LINK Setup đơn giản như sau: pip install virtualenvwrapper pip install virtualenvwrapper Nếu không có pip thì mình install pip sudo apt-get install python-pip Sau khi install virtualenvwrapper, thì bạn sẽ config thư mục Enviroment và Thư mục project của virtualenvwrapper. Ban thêm vào những dòng sau ở file ~/.bashrc export WORKON_HOME=$HOME/.virtualenvs export PROJECT_HOME=$HOME/Devel source /usr/local/bin/virtualenvwrapper.sh export WORKON_HOME=$HOME/.virtualenvs export PROJECT_HOME=$HOME/Devel source /usr/local/bin/virtualenvwrapper.sh Save và sau đó gõ thêm source .bashrc . 1 source .bashrc . Giải thích thêm. Thư mục .virtualenvs là thư mục chứa các enviroment của python Thư mục Devel là chưa project của mình. Tạo một virtualen như sau: mkvirtualenvtemp Sau đó các bạn tạo cho mình một project với enviroment là temp mkproject myproj 1 mkproject myproj Vậy là done rồi. Sau đó bạn copy project mình vào thư mục myproj. Sau đó gõ : pip install -r requirement.txt. 1 pip install -r requirement.txt. Trong file requirement.txt là các lib của python. Còn không thì gõ từng lệnh pip install django pip install pillow Sau đó bạn setup gunicorn : Service này sẽ thông dịch file python cho các bạn. pip install gunicorn 1 pip install gunicorn Sau khi đã setup đầy đủ thì ta chạy gunicorn bằng cách. Đối với Django mới nhất 1.7.1. Cd vào thư mục project của bạn. gunicorn myproj.wsgi –bind 127.0.0.1:8000 Và mặc định service này sẽ chạy ở local host và port 8000 các bạn có thể thay đổi một vài tham số. Để triển khai ở production thì các bạn có thể tham khảo một số tham số khác ở đây. LINK Và bây h quay lại với Nginx, thì chúng ta sẽ config proxy pass qua service gunicorn . Config như sau: server { listen 80 default; client_max_body_size 4G; server_name 128.199.131.76; keepalive_timeout 5; # path for static files root /root/Devel/myproj/myproj/static; location / { # checks for static file, if not found proxy to app try_files $uri @proxy_to_app; } location @proxy_to_app { proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_redirect off; proxy_pass http://127.0.0.1:8000 ; } error_page 500 502 503 504 /500.html; location = /500.html { root /path/to/app/current/public; } } server { listen 80 default; client_max_body_size 4G; server_name 128.199.131.76; keepalive_timeout 5; # path for static files root /root/Devel/myproj/myproj/static; location / { # checks for static file, if not found proxy to app try_files $uri @proxy_to_app; } location @proxy_to_app { proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_redirect off; proxy_pass http://127.0.0.1:8000 ; } error_page 500 502 503 504 /500.html; location = /500.html { root /path/to/app/current/public; } } Sau đó restart nginx: Bây h để quản lý service gunicorn thì làm như thế nào: Chúng ta sẽ setup supervisor . Đây là một service sẽ monitor các service khác tùy theo chúng ta config. Để đơn giản dễ hiểu thì supervisor sẽ monitor gunicorn, nếu mà service gunicorn bị stop bất thường thì supervisor sẽ tự động start lại. Install như sau: sudo apt-get install supervisor 1 sudo apt-get install supervisor Vào chỉnh sửa file config của supervisor như sau: vi /etc/supervisor/supervisord.conf 1 vi /etc/supervisor/supervisord.conf Thêm vào dòng bên dưới: [program:gunicorn] command=/root/.virtualenvs/tmp/bin/gunicorn myproj.wsgi --bind 127.0.0.1:8000 directory=/root/Devel/godemo/demo autostart=true autorestart=true redirect_stderr=true 1 2 3 4 5 6 [program:gunicorn] command=/root/.virtualenvs/tmp/bin/gunicorn myproj.wsgi --bind 127.0.0.1:8000 directory=/root/Devel/godemo/demo autostart=true autorestart=true redirect_stderr=true Done. Và bạn có thể dễ dàng stop hay start supervisor như sau: supervisorctl stop gunicorn Done rồi đó. Đây là kiến thức cơ bản nhất để chúng ta setup một webserver chạy python. theo azsysadmin |
|
|