一、安装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++
[root@VM_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
[root@VM_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的安装目录(我的安装目录是:
[root@VM_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;
}
}
“`