Chia Sẽ Kinh Nghiệm Về IT



Tìm Kiếm Với Google
-


Gởi Ðề Tài Mới  Gửi trả lời
 
Công Cụ Xếp Bài
Tuổi 27-09-2015, 10:08 PM   #1
hoctinhoc
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




  Trả lời ngay kèm theo trích dẫn này
Gửi trả lời


Công Cụ
Xếp Bài

Quyền Hạn Của Bạn
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Mở
Hình Cảm xúc đang Mở
[IMG] đang Mở
Mã HTML đang Tắt




Bây giờ là 04:53 PM. Giờ GMT +7



Diễn đàn tin học QuantriNet
quantrinet.com | quantrimang.co.cc
Founded by Trương Văn Phương | Developed by QuantriNet's members.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.