一、安装依赖:
1 | yum install -y gcc gcc-c++ kernel-devel |
执行命令查看版本信息:1
2python -V
2.7.8
三、安装pip和库1
2wget https://bootstrap.pypa.io/get-pip.py
python get-pip.py
安装库:flask、gevent、gunicorn1
2
3pip install flask
pip install gevent
pip install gunicorn
四、安装nginx
这里我使用带lua配置的openresty,以后做一些小的东西可以用lua脚本来处理
1 | wget http://openresty.org/download/ngx_openresty-1.7.2.1.tar.gz |
执行nginx -v,查看版本信息
1 | nginx -v |
五、配置nginx1
vi /opt/openresty/nginx/conf/nginx.conf
在 /opt/openresty/nginx/conf/nginx.conf 中,http节点下添加如下的server节点:
1 | server { |
修改nginx的一些配置:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16#user nobody;
#服务器是2cpu的
worker_processes 2;
#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 4096;
}
#http配置 下略
启动nginx:
1 | nginx |
查看nginx启动情况
1 | ps -ef|grep nginx |
如果是生产服务器,请详细配置iptables的规则,这里我是测试服务器,则关闭所有iptables规则:
1 | /etc/rc.d/init.d/iptables stop |
访问主机就可以看到nginx的欢迎页面了。
六、配置gunicorn启动文件
创建文件夹和日志文件夹
1 | mkdir /var/python |
创建配置文件:
1 | vi /var/python/gun.conf |
内容如下:
1 | bind='127.0.0.1:5000' |
七、创建测试文件:
1 | vi /var/python/flask_test.py |
复制以下内容:
1 | from flask import Flask |
八、启动flask应用:
1 | cd /var/python/ |
查看python进程:
1 | ps -ef|grep python |
九、测试访问:
修改本地hosts文件,如下:1
2#这里填入你的服务器ip
192.168.150.3 www.pytest.com
在浏览器输入www.pytest.com即可看到 flask 框架输出的 hello world
十、配置node.js对比环境
我们和Node.js的express框架对比,版本4.9.0,node.js版本0.10.28,测试代码,保存为node_test.js
1 | var express = require('express'); |
利用pm2启动4个进程
1 | pm2 start node_test.js -i 4 --name 'node_test' |
增加nginx配置:
1 | server { |
重新启动nginx1
2pkill nginx
nginx
本地增加hosts1
2#这里填入你的服务器ip
192.168.150.3 www.nodetest.com
这样我们访问 www.nodetest.com 就可以看到 hello world express 字样了。
十一、压力测试对比
先压力测试python的
1 | ab -c 1000 -n 10000 http://www.pytest.com/ |
结果如下:
1 | Server Software: openresty/1.7.2.1 |
然后我们压力测试node.js的:
1 | ab.exe -c 1000 -n 10000 http://www.nodetest.com/ |
结果如下:
1 | Server Software: openresty/1.7.2.1 |
p.s.
另外记一下nginx的一个静态文件rewrite规则:
location ~ ^/download/ {
rewrite ^/download/sg(\d+).(\d+)-(.+).exe$ /download/sg$1.$2.exe break;
}