1. 程式人生 > >Django的安裝與伺服器的搭建的坑

Django的安裝與伺服器的搭建的坑

一、安裝uwsgi

直接使用pip安裝就可以了,命令如下:

pip install uwsgi

1.可能出現如下異常:

raise Exception("you need a C compiler to build uWSGI")
    Exception: you need a C compiler to build uWSGI

出現以上錯誤是因為沒有c的編譯器,解決辦法是:

yum install -y gcc gcc-c++ 
[[email protected]_153_111_centos SoftWare]# yum install -y gcc gcc-c++  
已載入外掛:fastestmirror, langpacks Repository epel is listed more than once in the configuration Loading mirror speeds from cached hostfile 正在解決依賴關係 --> 正在檢查事務 ---> 軟體包 gcc.x86_64.0.4.8.5-11.el7 將被 安裝 --> 正在處理依賴關係 libgomp = 4.8.5-11.el7,它被軟體包 gcc-4.8.5-11.el7.x86_64 需要 --> 正在處理依賴關係 cpp = 4.8
.5-11.el7,它被軟體包 gcc-4.8.5-11.el7.x86_64 需要 --> 正在處理依賴關係 libgcc >= 4.8.5-11.el7,它被軟體包 gcc-4.8.5-11.el7.x86_64 需要 --> 正在處理依賴關係 libmpfr.so.4()(64bit),它被軟體包 gcc-4.8.5-11.el7.x86_64 需要 --> 正在處理依賴關係 libmpc.so.3()(64bit),它被軟體包 gcc-4.8.5-11.el7.x86_64 需要 ---> 軟體包 gcc-c++.x86_64.0.4.8.5-11.el7 將被 安裝 --> 正在處理依賴關係 libstdc++-devel = 4.8
.5-11.el7,它被軟體包 gcc-c++-4.8.5-11.el7.x86_64 需要 --> 正在處理依賴關係 libstdc++ = 4.8.5-11.el7,它被軟體包 gcc-c++-4.8.5-11.el7.x86_64 需要 --> 正在檢查事務 ---> 軟體包 cpp.x86_64.0.4.8.5-11.el7 將被 安裝 ---> 軟體包 libgcc.i686.0.4.8.5-4.el7 將被 升級 ---> 軟體包 libgcc.x86_64.0.4.8.5-4.el7 將被 升級 ---> 軟體包 libgcc.i686.0.4.8.5-11.el7 將被 更新 ---> 軟體包 libgcc.x86_64.0.4.8.5-11.el7 將被 更新 ---> 軟體包 libgomp.x86_64.0.4.8.5-4.el7 將被 升級 ---> 軟體包 libgomp.x86_64.0.4.8.5-11.el7 將被 更新 ---> 軟體包 libmpc.x86_64.0.1.0.1-3.el7 將被 安裝 ---> 軟體包 libstdc++.i686.0.4.8.5-4.el7 將被 升級 ---> 軟體包 libstdc++.x86_64.0.4.8.5-4.el7 將被 升級 ---> 軟體包 libstdc++.i686.0.4.8.5-11.el7 將被 更新 ---> 軟體包 libstdc++.x86_64.0.4.8.5-11.el7 將被 更新 ---> 軟體包 libstdc++-devel.x86_64.0.4.8.5-11.el7 將被 安裝 ---> 軟體包 mpfr.x86_64.0.3.1.1-4.el7 將被 安裝 --> 解決依賴關係完成 依賴關係解決 ================================================================================ Package 架構 版本 源 大小 ================================================================================ 正在安裝: gcc x86_64 4.8.5-11.el7 os 16 M gcc-c++ x86_64 4.8.5-11.el7 os 7.2 M 為依賴而安裝: cpp x86_64 4.8.5-11.el7 os 5.9 M libmpc x86_64 1.0.1-3.el7 os 51 k libstdc++-devel x86_64 4.8.5-11.el7 os 1.5 M mpfr x86_64 3.1.1-4.el7 os 203 k 為依賴而更新: libgcc i686 4.8.5-11.el7 os 104 k libgcc x86_64 4.8.5-11.el7 os 97 k libgomp x86_64 4.8.5-11.el7 os 152 k libstdc++ i686 4.8.5-11.el7 os 312 k libstdc++ x86_64 4.8.5-11.el7 os 300 k 事務概要 ================================================================================ 安裝 2 軟體包 (+4 依賴軟體包) 升級 ( 5 依賴軟體包) 總下載量:32 M Downloading packages: Delta RPMs disabled because /usr/bin/applydeltarpm not installed. (1/11): gcc-4.8.5-11.el7.x86_64.rpm | 16 MB 00:00 (2/11): gcc-c++-4.8.5-11.el7.x86_64.rpm | 7.2 MB 00:00 (3/11): libgcc-4.8.5-11.el7.i686.rpm | 104 kB 00:00 (4/11): libgcc-4.8.5-11.el7.x86_64.rpm | 97 kB 00:00 (5/11): libgomp-4.8.5-11.el7.x86_64.rpm | 152 kB 00:00 (6/11): cpp-4.8.5-11.el7.x86_64.rpm | 5.9 MB 00:00 (7/11): libmpc-1.0.1-3.el7.x86_64.rpm | 51 kB 00:00 (8/11): libstdc++-4.8.5-11.el7.x86_64.rpm | 300 kB 00:00 (9/11): libstdc++-4.8.5-11.el7.i686.rpm | 312 kB 00:00 (10/11): libstdc++-devel-4.8.5-11.el7.x86_64.rpm | 1.5 MB 00:00 (11/11): mpfr-3.1.1-4.el7.x86_64.rpm | 203 kB 00:00 -------------------------------------------------------------------------------- 總計 42 MB/s | 32 MB 00:00 Running transaction check Running transaction test Transaction test succeeded Running transaction 正在安裝 : mpfr-3.1.1-4.el7.x86_64 1/16 正在安裝 : libmpc-1.0.1-3.el7.x86_64 2/16 正在更新 : libgcc-4.8.5-11.el7.x86_64 3/16 正在更新 : libstdc++-4.8.5-11.el7.x86_64 4/16 正在安裝 : libstdc++-devel-4.8.5-11.el7.x86_64 5/16 正在安裝 : cpp-4.8.5-11.el7.x86_64 6/16 正在更新 : libgomp-4.8.5-11.el7.x86_64 7/16 正在安裝 : gcc-4.8.5-11.el7.x86_64 8/16 正在更新 : libgcc-4.8.5-11.el7.i686 9/16 正在安裝 : gcc-c++-4.8.5-11.el7.x86_64 10/16 正在更新 : libstdc++-4.8.5-11.el7.i686 11/16 清理 : libstdc++-4.8.5-4.el7 12/16 清理 : libstdc++-4.8.5-4.el7 13/16 清理 : libgcc-4.8.5-4.el7 14/16 清理 : libgcc-4.8.5-4.el7 15/16 清理 : libgomp-4.8.5-4.el7.x86_64 16/16 驗證中 : libmpc-1.0.1-3.el7.x86_64 1/16 驗證中 : gcc-c++-4.8.5-11.el7.x86_64 2/16 驗證中 : mpfr-3.1.1-4.el7.x86_64 3/16 驗證中 : libgcc-4.8.5-11.el7.x86_64 4/16 驗證中 : libstdc++-4.8.5-11.el7.i686 5/16 驗證中 : cpp-4.8.5-11.el7.x86_64 6/16 驗證中 : libgomp-4.8.5-11.el7.x86_64 7/16 驗證中 : gcc-4.8.5-11.el7.x86_64 8/16 驗證中 : libstdc++-4.8.5-11.el7.x86_64 9/16 驗證中 : libstdc++-devel-4.8.5-11.el7.x86_64 10/16 驗證中 : libgcc-4.8.5-11.el7.i686 11/16 驗證中 : libstdc++-4.8.5-4.el7.x86_64 12/16 驗證中 : libgcc-4.8.5-4.el7.i686 13/16 驗證中 : libgomp-4.8.5-4.el7.x86_64 14/16 驗證中 : libgcc-4.8.5-4.el7.x86_64 15/16 驗證中 : libstdc++-4.8.5-4.el7.i686 16/16 已安裝: gcc.x86_64 0:4.8.5-11.el7 gcc-c++.x86_64 0:4.8.5-11.el7 作為依賴被安裝: cpp.x86_64 0:4.8.5-11.el7 libmpc.x86_64 0:1.0.1-3.el7 libstdc++-devel.x86_64 0:4.8.5-11.el7 mpfr.x86_64 0:3.1.1-4.el7 作為依賴被升級: libgcc.i686 0:4.8.5-11.el7 libgcc.x86_64 0:4.8.5-11.el7 libgomp.x86_64 0:4.8.5-11.el7 libstdc++.i686 0:4.8.5-11.el7 libstdc++.x86_64 0:4.8.5-11.el7 完畢!

2.出現異常:plugins/python/uwsgi_python.h:2:20: 致命錯誤:Python.h:沒有那個檔案或目錄

一般出現這種問題,都是 xx-devel沒有安裝,那我們就試一下看看有沒有 python-devel

 yum install python-devel
 [root@VM_153_111_centos SoftWare]# yum install python-devel
已載入外掛:fastestmirror, langpacks
Repository epel is listed more than once in the configuration
Loading mirror speeds from cached hostfile
正在解決依賴關係
--> 正在檢查事務
---> 軟體包 python-devel.x86_64.0.2.7.5-48.el7 將被 安裝
--> 正在處理依賴關係 python(x86-64) = 2.7.5-48.el7,它被軟體包 python-devel-2.7.5-48.el7.x86_64 需要
--> 正在檢查事務
---> 軟體包 python.x86_64.0.2.7.5-39.el7_2 將被 升級
---> 軟體包 python.x86_64.0.2.7.5-48.el7 將被 更新
--> 正在處理依賴關係 python-libs(x86-64) = 2.7.5-48.el7,它被軟體包 python-2.7.5-48.el7.x86_64 需要
--> 正在檢查事務
---> 軟體包 python-libs.x86_64.0.2.7.5-39.el7_2 將被 升級
---> 軟體包 python-libs.x86_64.0.2.7.5-48.el7 將被 更新
--> 解決依賴關係完成

依賴關係解決

================================================================================
 Package               架構            版本                   源           大小
================================================================================
正在安裝:
 python-devel          x86_64          2.7.5-48.el7           os          393 k
為依賴而更新:
 python                x86_64          2.7.5-48.el7           os           90 k
 python-libs           x86_64          2.7.5-48.el7           os          5.6 M

事務概要
================================================================================
安裝  1 軟體包
升級           ( 2 依賴軟體包)

總下載量:6.1 M
Is this ok [y/d/N]: y
Downloading packages:
Delta RPMs disabled because /usr/bin/applydeltarpm not installed.
(1/3): python-devel-2.7.5-48.el7.x86_64.rpm                | 393 kB   00:00     
(2/3): python-2.7.5-48.el7.x86_64.rpm                      |  90 kB   00:00     
(3/3): python-libs-2.7.5-48.el7.x86_64.rpm                 | 5.6 MB   00:00     
--------------------------------------------------------------------------------
總計                                                17 MB/s | 6.1 MB  00:00     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  正在更新    : python-libs-2.7.5-48.el7.x86_64                             1/5 
  正在更新    : python-2.7.5-48.el7.x86_64                                  2/5 
  正在安裝    : python-devel-2.7.5-48.el7.x86_64                            3/5 
  清理        : python-2.7.5-39.el7_2.x86_64                                4/5 
  清理        : python-libs-2.7.5-39.el7_2.x86_64                           5/5 
  驗證中      : python-2.7.5-48.el7.x86_64                                  1/5 
  驗證中      : python-devel-2.7.5-48.el7.x86_64                            2/5 
  驗證中      : python-libs-2.7.5-48.el7.x86_64                             3/5 
  驗證中      : python-libs-2.7.5-39.el7_2.x86_64                           4/5 
  驗證中      : python-2.7.5-39.el7_2.x86_64                                5/5 

已安裝:
  python-devel.x86_64 0:2.7.5-48.el7                                            

作為依賴被升級:
  python.x86_64 0:2.7.5-48.el7         python-libs.x86_64 0:2.7.5-48.el7        

完畢!

再次執行pip install uwsgi

[[email protected]_153_111_centos SoftWare]# pip install uwsgi
Collecting uwsgi
  Using cached uwsgi-2.0.15.tar.gz
Installing collected packages: uwsgi
  Running setup.py install for uwsgi ... done
Successfully installed uwsgi-2.0.15

剛在mac上試了下,直接sudo pip install uwsgi就OK了,不過還是搭伺服器上吧,就上面兩個坑,陸續裝下包就行了。

測試uwsgi是否正常:新建test.py檔案,內容如下:


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

然後在終端執行:

uwsgi –http :8001 –wsgi-file test.py

在瀏覽器內輸入:ip:8001,有“Hello World”輸出。

二、Ngnix安裝
nignix官網最新版為1.13.0,可以通過以下命令下載,版本更新的話,只要將命令中的版本換成最新的,還是可以下載。

wget http://nginx.org/download/nginx-1.13.0.tar.gz
tar -xvzf nginx-1.13.0.tar.gz
cd nginx-1.13.0
 ./configure --prefix=/usr/local/nginx-1.13.0 --with-http_stub_status_module \--with-http_gzip_static_module 

上面是在centos7.2伺服器上安裝的,mac下,可以通過命令一鍵安裝

brew install nginx

三、uwsgi 配置

uwsgi支援ini、xml等多種配置方式,本文以 ini 為例, 在/ect/目錄下新建uwsgi9090.ini,新增如下配置:

[uwsgi]
socket = 127.0.0.1:9090
master = true         //主程序
vhost = true          //多站模式
no-site = true        //多站模式時不設定入口模組和檔案
workers = 2           //子程序數
reload-mercy = 10     
vacuum = true         //退出、重啟時清理檔案
max-requests = 1000   
limit-as = 512
buffer-size = 30000
pidfile = /var/run/uwsgi9090.pid    //pid檔案,用於下面的指令碼啟動、停止該程序
daemonize = /website/uwsgi9090.log

四、Nginx 配置

找到nginx的安裝目錄(我的安裝目錄是:

[[email protected]_153_111_centos nginx-1.13.0]# pwd
/usr/local/nginx-1.13.0
```),開啟conf/nginx.conf檔案,修改server配置:




<div class="se-preview-section-delimiter"></div>

server {
listen 80;
server_name localhost;

    location / {            
        include  uwsgi_params;
        uwsgi_pass  127.0.0.1:9090;              //必須和uwsgi中的設定一致
        uwsgi_param UWSGI_SCRIPT demosite.wsgi;  //入口檔案,即wsgi.py相對於專案根目錄的位置,“.”相當於一層目錄
        uwsgi_param UWSGI_CHDIR /demosite;       //專案根目錄
        index  index.html index.htm;
        client_max_body_size 35m;
    }
}

“`