Linux 安裝并部署python+django+uwsgi+nginx總結

jopen 8年前發布 | 21K 次閱讀 Python開發

1.    python和django的環境搭建

        (1)下載anaconda3并安裝

        wget https://3230d63b5fc54e62148e-c95ac804525aac4b6dba79b00b39d1d3.ssl.cf1.rackcdn.com/Anaconda3-2.3.0-Linux-x86_64.sh

        sh Anaconda3-2.3.0-Linux-x86_64.sh

        一路enter鍵,然后提示是否加入到環境變量時,輸入yes即可。

        (2)安裝django

        直接pip install django

        安裝成功之后就可以新建項目

        django-admin startproject demosite

        cd demosite

        python manage.py startapp blog

        python manage.py migrate (要執行這個命令,讓django生成可運行的app,否則后面使用uwsgi會報錯)

        (3)運行django

        python manage.py runserver

        curl 127.0.0.1:8000進行如果可以正常訪問,就說明django安裝成功。

2.    安裝uwsgi

        (1)centOS

        yum install zlib-devel bzip2-devel pcre-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel

        pip install uwsgi

        uwsgi --version    #查看 uwsgi 版本

        (2)test.py

        然后,Run uWSGI:

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

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

         (3)ubuntu可以能會出現錯誤:

           如果出現錯誤,!!! no internal routing support, rebuild with pcre support !!!

            sudo apt-get install libpcre3 libpcre3-dev

            sudo pip uninstall uwsgi

            sudo apt-get remove uwsgi

            sudo pip install uwsgi

          (4)測試

               1) 打開下面url,瀏覽器上應該顯示hello world

                curl http://127.0.0.1:8000 如果安裝httpie模塊的話使用http http://127.0.0.1:8000

                如果顯示正確是Hello World,說明上面的環節是暢通的

              2) 測試django

                默認使用django新建工程會在app下面生成一個wsgi.py的文件

                uwsgi --http :8000 --wsgi-file wsgi.py 直接這樣也會報錯

                uwsgi --http :8000 --wsgi-file appname/wsgi.py

                打開瀏覽器輸入http://127.0.0.1:8000  如果現實正確說明web client <-->uwsgi <---> django是暢通的

             

3.  安裝配置nginx

     (1)安裝

            wget http://nginx.org/download/nginx-1.9.5.tar.gz

            tar xf nginx-1.9.5.tar.gz

            cd nginx-1.9.5

            ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_gzip_static_module

            make && make install

            或者參考

            http://cantgis.blog.51cto.com/5788192/1540004

       (2)配置文件

            vi /usr/local/nginx/conf/nginx.conf

            一般來說加入個server就OK了

            參考配置如下

user root;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

pid        logs/nginx.pid;


events {
    use   epoll;
    worker_connections  65535;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    server {

        listen   8099;
        server_name 10.117.52.157;              ##對外訪問的IP和端口號
        access_log /tmp/cms/access.log;
        error_log /tmp/cms/error.log;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
         include        uwsgi_params;
         uwsgi_pass     127.0.0.1:8088;
         uwsgi_read_timeout 300;
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        #error_page   500 502 503 504  /registration/500.html;
        #location = /registration/500.html {
        #    root   html;
        #}

        location /static/ {
            alias  /root/cms/cms/static/;
            index  index.html index.htm;
        }

        location /media/ {
            alias  /root/cms/cms/media/;
        }
    }

}

            (3)運行and 重啟

            /usr/local/nginx/sbin/nginx

            啟動: nginx  start

            重啟: nginx -s reload

4.  使用uwsgi的配置文件運行django

      在確保nginx運行之后,就可以通過uwsgi來運行django了。nginx 在最外層接收請求,靜態的自己處理,動態的通過    socket端口交給uwsgi來處理。

    配置文件內容如下

    [uwsgi]

    socket=:8088               #要和nginx對應的IP和端口號一致

    chdir=/root/cms/cms #APP的目錄

    module=cms.wsgi        #wsgi.py文件位置

    touch-reload=/root/cms/cms/reload  #重啟只要輸入命令touch reload文件即可

    processes=4

    threads=2

    daemonize=/tmp/cms/wsgi.log   #日志文件位置

    放在APP的上一級目錄

     直接運行uwsgi --ini uwsgi.ini 即可


來自: http://my.oschina.net/ayy/blog/598361

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!