Django的安裝與伺服器的搭建的坑
阿新 • • 發佈:2018-12-23
一、安裝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;
}
}
“`