一、安装nginx
下载nginx源码包,官网是
http://wiki.nginx.org/Main ,为了支持gzip以及正则表达式,还需要下载pcre和zlib源码包。pcre网址
http://www.pcre.org/,zlib网址
http://www.zlib.net/。
我下载的nginx版本为1.4.1, pcre版本为8.32,zlib版本为1.2.8。
下载完成后,对三个源码包分别解压。进入nginx目录配置。(注:openssl如果系统没有请安装先)
./configure --prefix=$HOME/nginx --with-openssl=/usr/include --with-pcre=../pcre-8.32 --with-http_stub_status_module --with-zlib=../zlib-1.2.8
关于nginx的配置选项含义,可以参照官方文档。这里主要是配置了gzip压缩,正则表达式以及启用ssl。--with-http_stub_status_module是安装可以查看nginx状态的模块。
然后
上面配置文件中加粗的部分是我配置的uwsgi部分,即针对/py的路径,全部由在localhost:8081处监听的uwsgi程序处理。uwsgi的安装在第二部分说明。
gzip详细参数可参见: http://blog.csdn.net/jessonlv/article/details/8016284。查看服务器是否开启gzip,可使用curl工具。
make && make install
安装完成后,就可以设定配置文件了。我的配置文件比较简单,设定如下:
#user nobody;
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 1024;
}
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; #开启gzip压缩
#gzip_min_length 1k; #最小的压缩长度,小于该长度不压缩
gzip_buffers 4 16k; #gzip压缩的缓存大小,配置为16k的4倍
gzip_http_version 1.1;
gzip_comp_level 2; #压缩比例
gzip_types text/plain application/x-javascript text/css application/xml;
gzip_vary on;
server {
listen 8000; #监听端口
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm;
}
location /py {
include uwsgi_params;
uwsgi_pass localhost:8081;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
配置完成后,就可以运行$NGINX_PATH/sbin/nginx启动nginx了。注意,由于该程序启动需要root权限,因此可用sudo命令,或者将nginx程序的所有者改为root,然后设定s标记。
sudo chown root:root nginx
sudo chmod +s nginx
关闭命令:
nginx -s stop
重载配置文件命令:
nginx -s reload
上面配置文件中加粗的部分是我配置的uwsgi部分,即针对/py的路径,全部由在localhost:8081处监听的uwsgi程序处理。uwsgi的安装在第二部分说明。
gzip详细参数可参见: http://blog.csdn.net/jessonlv/article/details/8016284。查看服务器是否开启gzip,可使用curl工具。
curl -I -H "Accept-Encoding: gzip, deflate" "http://localhost"
如果gzip开启,则服务器的响应应该类似于下面这样:
HTTP/1.1 200 OK
Server: nginx/0.7.67
Date: Mon, 20 May 2013 01:49:47 GMT
Content-Type: text/html
Last-Modified: Thu, 19 Jul 2012 03:16:40 GMT
Connection: keep-alive
Content-Encoding: gzip
二、uwsgi安装
下载uwsgi的源码包,
http://uwsgi-docs.readthedocs.org/en/latest/。
编译并安装
make && make install
在nginx中配置uwsgi,在第一部分安装nginx的配置文件中加粗的部分即是配置的部分。然后使用下面的命令启动即可。
uwsgi --socket localhost:8081 --wsgi-file wsgi.py --master --processes 4 --threads 2 --stats localhost:9191
其中wsgi.py是我自己的python程序,如下所示:
def application(env, start_response):
start_response('200 OK', [('Content-Type','text/html')])
return "Hello World"
现在使用localhost:8080/py就可以访问该程序并输出Hello World。