• ubuntu下配置nginx+uwsgi+django


    服务器配置是Ubuntu14.04 64位OS

    ubuntu14.04默认是安装好了python2.7版本不用自己安装了。

    先更新下源

    sudo apt-get update

    第一步先安装pip

    sudo apt-get install -y python-pip

    有些时候安装pip前需要安装几个相关包

    sudo apt-get install -y python-dev

    sudo apt-get install -y libevent-dev

    安装完pip后我们开始安装django

    sudo pip install Django==1.7.1

    安装后输入Python进入交互环境输入django.VERSION查看版本

    开始装uwsgi

    下面这几个可能是相关包

    sudo apt-get install -y build-essential

    sudo apt-get install -y zliblg-dev

    sudo apt-get install -y libsqlite3-dev

    sudo apt-get install -y libreadline6-dev

    sudo apt-get install -y libgdbm-dev

    sudo apt-get install -y libbz2-dev

    sudo apt-get install -y tk-dev

    sudo apt-get install -y uwsgi-plugin-python

    安装uwsgi

    sudo pip install uwsgi

    可以写个test.py

    # test.py
    def application(env, start_response):
        start_response('200 OK', [('Content-Type','text/html')])
        return [b"Hello World"] # python3
        #return ["Hello World"] # python2

    输入uwsgi --http :8000 --wsgi-file test.py

    浏览器输入http://example.com:8000看是否显示helloworld

    再安装git

    sudo apt-get install -y git

    克隆项目

    用uwsgi启动项目

    uwsgi --ini ${current_path}${sep}/$uwsgi_name

    安装nginx

    sudo apt-get install -y nginx

    修改nginx配置文件,删掉原先包里的东西,加上软链接

    ln -s ${current_path}${sep}${p_name}${sep}${conf_name} /etc/nginx/sites-enabled/

    (

    sudo ln -s /data/www/ts/conf/ts_nginx.conf /etc/nginx/sites-enabled/
    sudo ln -s /data/www/ts/conf/ts_nginx.conf /etc/nginx/sites-available/

    )

    service nginx restart

    输入网址就可以了。

    另外你需要

     python manage.py collectstatic

    import os
    BASE_DIR = os.path.dirname(os.path.dirname(__file__))
    STATIC_ROOT = os.path.join(BASE_DIR, 'static2', ).replace('\', '/')
    STATIC_URL = '/static/'
    然后将静态文件从static2移动到static目录下

    输入网址就可以了。

    几个配置文件:

    nginx.conf:

    # the upstream component nginx needs to connect to
    upstream django {
        server unix:/etc/nginx/django/daowang/Wangdao.sock; # for a file socket
    }
    
    # configuration of the server
    server {
        # the port your site will be served on
        listen      80;
        # the domain name it will serve for
        server_name http://114.215.157.15/; # substitute your machine's IP address or FQDN
        charset     utf-8;
    
        # max upload size
        client_max_body_size 75M;   # adjust to taste
    
        # Django media
        location /media  {
            alias /etc/nginx/django/daowang/static/media;  # your Django project's media files - amend as required
        }
    
        location /static {
            alias /etc/nginx/django/daowang/static; # your Django project's static files - amend as required
        }
    
        location /FingerHire{
            proxy_pass http://127.0.0.1:8080;
        }
    
        # Finally, send all non-media requests to the Django server.
        location / {
            uwsgi_pass  django;
            include     /etc/nginx/django/daowang/uwsgi_params; # the uwsgi_params file you installed
        }
    }
    

    uwsgi.ini

    [uwsgi]
    
    # Django-related settings
    # the base directory (full path)
    chdir           = /etc/nginx/django/daowang
    # Django's wsgi file
    module          = Wangdao.wsgi
    # master
    master          = true
    # maximum number of worker processes
    processes       = 32
    max-requests    = 1000
    # the socket (use the full path to be safe
    socket          = /etc/nginx/django/daowang/Wangdao.sock
    # ... with appropriate permissions - may be needed
    chmod-socket    = 666
    #chown-socket    = www-data:www-data
    # clear environment on exit
    vacuum          = true
    daemonize       = /var/log/uwsgi/Wangdao.log
    pidfile         = /tmp/project-master.pid
    # added 2014-09-17
    reload-on-as    = 126
    reload-on-rss   = 126
    enable-threads  = true
    pythonpath      = /etc/nginx/django/daowang
    

    uwsgi_params

    uwsgi_param  QUERY_STRING       $query_string;
    uwsgi_param  REQUEST_METHOD     $request_method;
    uwsgi_param  CONTENT_TYPE       $content_type;
    uwsgi_param  CONTENT_LENGTH     $content_length;
    
    uwsgi_param  REQUEST_URI        $request_uri;
    uwsgi_param  PATH_INFO          $document_uri;
    uwsgi_param  DOCUMENT_ROOT      $document_root;
    uwsgi_param  SERVER_PROTOCOL    $server_protocol;
    uwsgi_param  HTTPS              $https if_not_empty;
    
    uwsgi_param  REMOTE_ADDR        $remote_addr;
    uwsgi_param  REMOTE_PORT        $remote_port;
    uwsgi_param  SERVER_PORT        $server_port;
    uwsgi_param  SERVER_NAME        $server_name;

    配置下根目录下的wsgi.py

    import os
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "Wangdao.settings")
    
    from django.core.wsgi import get_wsgi_application
    application = get_wsgi_application()

    常用命令:

    1.查看端口占用情况:

    netstat -lpnt

    2.杀死所有uwsgi进程

    killall -9 uwsgi

    3.uwsgi启动命令

    uwsgi --ini /etc/nginx/django/lovep2c/lovep2c_uwsgi.ini

    4.关闭uwsgi命令

    uwsgi --stop /tmp/project-master.pid

    5.重启uwsgi命令

    uwsgi --reload /tmp/project-master.pid

    nginx错误日志:

    tail /var/log/nginx/error.log

    uwsgi日志:

    tail /var/log/uwsgi/lovep2c.log

    项目错误日志:

    tail /etc/nginx/django/debug.log

    tail /etc/nginx/django/error.log

    参考网址:https://uwsgi.readthedocs.org/en/latest/tutorials/Django_and_nginx.html

    
    
  • 相关阅读:
    python中常用的数据类型之整型(int),浮点型(float), 布尔值(bool), 复数(complex)
    requests库的基础使用
    socket,urllib,urllib3,request多种方法请求网页首页
    nginx日志切割
    gitlab社区版安装
    批量修改文件编码
    lvm磁盘扩展及添加磁盘lvm分区
    函数
    集合
    数据类型练习题
  • 原文地址:https://www.cnblogs.com/tuifeideyouran/p/4182094.html
Copyright © 2020-2023  润新知