Triển khai dự án Django với Nginx + Uwsgi


  • administrators

    Triển khai dự án Django là một công viêc quen thuộc của quản trị hệ thống. Trong bài viết này tôi sẽ hướng dẫn các bạn việc triển khai một dự án và các bước cơ bản nhất.

    Bài viết được thực hiện trên hệ điều hành Debian

    Bước 1: Cài đặt virtualenv: bạn sử dụng câu lệnh sau:

    pip install virtualenv
    

    Về cách sử dụng, tác dụng và tại sao lại dùng Virtualenv thì các bạn có thể tham khảo ở đây:
    http://pycon.vn/topic/21/cach-su-dung-virtualenv
    http://pycon.vn/topic/19/gioi-thieu-virtual-environment-trong-python

    Bước 2: Bạn thực hiện tạo và kích hoạt virtualenv:

    virtualenv project_env
    cd project_env
    source bin/activate
    

    Bước 3: Bạn sẽ truy cập virtualenv dành riêng cho dự án này, sau đó bạn thực hiện cài đặt Django và các thư viện đi kèm theo yêu cầu.

    pip install Django
    django-admin.py startproject mysite
    pip install uwsgi
    

    Bước 4: Bạn thoát virtualenv su đó cài đặt Nginx

    deactivate
    sudo apt-get install nginx
    

    Bước 5: Cấu hình Nginx: Bạn cần tải thư viện tại đường dẫn sau
    https://github.com/nginx/nginx/blob/master/conf/uwsgi_params
    Sau đó đưa vào thư mục của Nginx

    Bạn tạo tập tin mysite_nginx.conf có nội dung

    upstream mysite {
        server unix:///var/www/mysite/mysite.sock;
    }
    
    server {
        listen      80;
        server_name .mysite.com;
        charset     utf-8;
        client_max_body_size 75M;
    
        location /media  {
            alias /var/www/mysite/mysite/media;
        }
    
        location /static {
            alias /var/www/mysite/mysite/static;
        }
    
        location / {
            uwsgi_pass  mysite;
            include     /etc/nginx/uwsgi_params;
            proxy_read_timeout 150;
        }
    
        location /nginx_status {
            stub_status on;
            access_log   off;
            # allow 127.0.0.1;
            # deny all;
        }
    }
    

    Tạo link
    sudo ln -s ~/path/to/your/mysite/mysite_nginx.conf /etc/nginx/sites-enabled/

    Bước 6: Bạn chạy lệnh sau đây
    python manage.py collectstatic
    Khởi động lại Nginx
    sudo /etc/init.d/nginx restart
    Bạn tạo một tập tin ini có nội dung như sau

    [uwsgi]
    socket = /var/www/mysite/mysite.sock
    chdir = /var/www/mysite
    module = mysite.wsgi:application
    virtualenv = /var/www/virtualenvs/project_env/
    buffer-size = 8192
    processes = 60
    env = DJANGO_SETTINGS_MODULE=mysite.settings
    enable-threads = True
    single-interpreter = True
    uid = www-data
    gid = www-data
    vacuum = True
    disable-logging = true
    logger = file:/var/www/mysite/log/uwsgi_err.log
    

    Bạn tạo thư mục như sau

    mkdir /etc/uwsgi
    mkdir /etc/uwsgi/vassals
    cd /etc/uwsgi/vassals/
    

    Tạo link

    ln -s /var/www/mysite/conf/uwsgi.ini mysite.ini

    Bạn thêm nội dung sau vào tập tin rc.local trước phần “exit 0”

    /usr/local/bin/uwsgi --emperor /etc/uwsgi/vassals --uid www-data --gid www-data --daemonize /var/log/uwsgi/emperor.log

    Bạn thử chạy câu lệnh

    /usr/local/bin/uwsgi --emperor /etc/uwsgi/vassals --uid www-data --gid www-data --daemonize /var/log/uwsgi/emperor.log

    Khởi động lại Nginx

    /etc/init.d/nginx restart

    Chúc bạn thành công, hy vọng nhận được phản hồi của các bạn.


Hãy đăng nhập để trả lời
 

Có vẻ như bạn đã mất kết nối tới Cộng đồng Python Việt Nam, vui lòng đợi một lúc để chúng tôi thử kết nối lại.