一、安装nginx

  在安装nginx前,需要先装nginx的依赖包。

  1、如果没有yum则先安装yum

     删除原有的yum

     rpm -aq|grep yum|xargs rpm -e --nodeps

       自己到下面网站下载对应的rpm包(这里注意一定要对应你的系统,是32位还是64位的,本人就曾犯过类似的错误,总是导致安装失败,原因就是我的系统是32位的,而网上的资料大部分是64的rpm)

官网地址:http://mirror.centos.org/centos/6/os/

     python-iniparse-0.3.1-2.1.el6.noarch.rpm

     yum-metadata-parser-1.1.2-14.1.el6.x86_64.rpm

yum-3.2.27-14.el6.centos.noarch.rpm

yum-plugin-fastestmirror-1.1.26-11.el6.noarch.rpm

     下载上面的4个rpm

       安装的时候需要按照顺序安装,因为yum是依赖python的

     rpm -ivh python-iniparse-0.3.1-2.1.el6.noarch.rpm

rpm -ivh yum-metadata-parser-1.1.2-14.1.el6.x86_64.rpm

rpm -ivh yum-3.2.27-14.el6.centos.noarch.rpm yum-plugin-fastestmirror-1.1.26-11.el6.noarch.rpm

注意最后两个包必需同时安装,相互依赖.

安装好后记得yum update更新下包

2、安装编译工具及库文件

yum -y install make zlib zlib-devel gcc-c++ libtool  openssl openssl-devel

3、安装PCRE,PCRE 作用是让 Nginx 支持 Rewrite 功能

    wget http://downloads.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gz

    tar zxvf pcre-8.35.tar.gz

cd pcre-8.35

   ./configure

   make && make install

  成功后执行:pcre-config --version,如果显示8.35则安装成功

4、安装nginx

http://nginx.org/download/ 下载自己需要的版本,版本不一定越高越好,还是搞个稳定的吧

wget  http://nginx.org/download/nginx-0.1.10.tar.gz

tar zxvf nginx-0.1.10.tar.gz

cd nginx-0.1.10.tar.gz

./configure --prefix=/usr/local/webserver/nginx --with-http_stub_status_module --with-http_ssl_module

make && make install

安装成功后运行:/usr/local/webserver/nginx/sbin/nginx -v,显示版本号则安装成功

添加用户:

/usr/sbin/groupadd www

/usr/sbin/useradd -g www www

下面附上nginx的说明,来自w3c

 user www www;
worker_processes 2; #设置值和CPU核心数一致
error_log /usr/local/webserver/nginx/logs/nginx_error.log crit; #日志位置和日志级别
pid /usr/local/webserver/nginx/nginx.pid;
#Specifies the value for maximum file descriptors that can be opened by this process.
worker_rlimit_nofile 65535;
events
{
use epoll;
worker_connections 65535;
}
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'; #charset gb2312; server_names_hash_bucket_size 128;
client_header_buffer_size 32k;
large_client_header_buffers 4 32k;
client_max_body_size 8m; sendfile on;
tcp_nopush on;
keepalive_timeout 60;
tcp_nodelay on;
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
fastcgi_buffer_size 64k;
fastcgi_buffers 4 64k;
fastcgi_busy_buffers_size 128k;
fastcgi_temp_file_write_size 128k;
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.0;
gzip_comp_level 2;
gzip_types text/plain application/x-javascript text/css application/xml;
gzip_vary on; #limit_zone crawler $binary_remote_addr 10m;
#下面是server虚拟主机的配置
server
{
listen 80;#监听端口
server_name localhost;#域名
index index.html index.htm index.php;
root /usr/local/webserver/nginx/html;#站点目录
location ~ .*\.(php|php5)?$
{
#fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi.conf;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|ico)$
{
expires 30d;
# access_log off;
}
location ~ .*\.(js|css)?$
{
expires 15d;
# access_log off;
}
access_log off;
} }

检查配置文件ngnix.conf的正确性命令:

/usr/local/webserver/nginx/sbin/nginx -t

Nginx 启动命令如下:

/usr/local/webserver/nginx/sbin/nginx

从浏览器访问我们配置的站点ip:如果出现下图,则表示nginx安装成功

以下包含了 Nginx 常用的几个命令:

/usr/local/webserver/nginx/sbin/nginx -s reload # 重新载入配置文件
/usr/local/webserver/nginx/sbin/nginx -s reopen # 重启 Nginx
/usr/local/webserver/nginx/sbin/nginx -s stop # 停止 Nginx

如果在启动过程出现以下错误,请按照下面的方法解决

启动命令:/usr/local/nginx/sbin/nginx
发现报错了:
error while loading shared libraries: libpcre.so.1: cannot open shared object file: No such file or directory
经网上查询,这是Linux的通病

[root@localhost nginx]# sbin/nginx
sbin/nginx: error while loading shared libraries: libpcre.so.1: cannot open shared object file: No such file or directory
[root@localhost nginx]# error while loading shared libraries: libpcre.so.1: cannot open shared object file: No such file or directory
[root@localhost nginx]# whereis libpcre.so.1
libpcre.so: /lib64/libpcre.so.0 /usr/local/lib/libpcre.so /usr/local/lib/libpcre.so.1
[root@localhost nginx]# ln -s /usr/local/lib/libpcre.so.1 /lib64
[root@localhost nginx]# sbin/nginx

先找到libpcre.so.1所在位置,然后做个软链接就可以了

5、安装uWSGI

最好通过pip install来安装uWSGI

pip install uwgsi

安装成功后,执行uwsgi --version #查看版本

有时候pip 会执行不成功,原因是pip默认执行的是系统python2.6的版本,自己需要重新制定一下,用python2.7的pip来执行

可以通过

which pip

/usr/local/bin/pip

cat /usr/local/bin/pip

找到头部执行python重新指定到python2.7

测试 uwsgi 是否正常:
新建 server.py 文件,内容如下:

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

启动:uwsgi --http :8001 --wsgi-file server.py

浏览器访问,如果出现 Hello World则表示uwsgi安装成功

6、安装web.py

在安装之前,对web.py做下简单的介绍,web.py 是一个Python 的web 框架,它简单而且功能强大。web.py 实现了 WSGI 并能在任何兼容它的服务器上运行。 WSGI 是一个web服务器与应用程序之间的通用API, 就如Java 的 Servlet 接口。 你需要安装 flup 使web.py 支持with CGI, FastCGI 或 SCGI, flup提供了这些API的WSGI接口。但绝大多数网站还是需要更加专业一些的web服务器。很多框架都自带了 WSGI server ,比如 Flask,webpy,Django、CherryPy等等。当然性能都不好,自带的 web server 更多的是测试用途,发布时则使用生产环境的 WSGI server或者是联合 nginx 做 uwsgi 。

安装web.py, 请先下载:

http://webpy.org/static/web.py-0.37.tar.gz
或者获取最新的开发版:

https://github.com/webpy/webpy/tarball/master
解压并拷贝 web 文件夹到你的应用程序目录下。 或者,为了让所有的应用程序都可以使用,运行:

python setup.py install

注意: 在某些类unix系统上你可能需要切换到root用户或者运行:

sudo python setup.py install
查看 推荐设置.

另外一个选择是使用Easy Install. Easy Install 使用如下:

easy_install web.py
或者 PIP

sudo pip install web.py

以一个简单的webpy程序作为示例。以下代码是一个完整的webpy程序(webpyserv.py)

 #!/usr/bin/env python
# -*- coding:utf-8 -*-
import web urls = (
'/(.*)', 'myweb'
) app = web.application(urls, globals()) class myweb:
def GET(self, name):
if not name:
name = "World"
return "Hello %s, this is my first web!" % name application = app.wsgifunc() #最后一句的application = app.wsgifunc()是关键,此时才可以通过wsgi进行访问

uwsgi -s 127.0.0.1:9000 -w webpyserv

7、更改nginx配置

 server {
listen 80;
server_name 104.224.128.197; #charset koi8-r; #access_log logs/host.access.log main; location / {
#root html;
#index index.html index.htm;
include uwsgi_params;
uwsgi_pass 127.0.0.1:9000; #这里配置必须和启动uwsgi时的一致
uwsgi_param UWSGI_CHDIR /home/www; #程序所在的目录
uwsgi_param UWSGI_SCRIPT webpyserv; #
}

注意:uwsgi_pass的相关配置必须和启动uwsgi时的一致!UWSGI_CHDIR是指程序所在的目录,UWSGI_SCRIPT是指启动哪个程序(注意,这里必须去掉py后缀)

重启nginx命令为(/usr/local/nginx/sbin/nginx -s reload)

通过http即可访问
http://104.224.128.197/eric

页面打印:Hello eric, this is my first web!

OVER!

本文为本人原创,转载时请注明出处,Thanks!

另外喜欢用kindle读书的朋友可以关注本人的kindle公众号(生活在别处),可以输入需要找的书,点击进入直接推送到kindle设备。

如果觉得本文对你有帮助,请赏个饭补

Nginx uWSGI web.py 站点搭建的更多相关文章

  1. (转)Nginx + uwsgi + web.py + MySQLdb

    一.背景知识: Web服务器上有多种方式运行Python: 传统上的CGI方式:基本已被淘汰 mod_python的模块方式:仍在广泛使用,但生产环境中也被逐步淘汰 uwsgi方式:目前生产环境下最受 ...

  2. Nginx + uWSGI + web.py 搭建示例

    (1)安装Nginx1.1 下载nginx-1.0.5.tar.gz并解压1.2 ./configure (也可以增加--prefix= path指定安装路径)此时有可能会提示缺少pcre支持,如果要 ...

  3. nginx+uwsgi+django开发环境搭建

    Nginx+uWSGI+Djangoi开发环境搭建 Django简介,环境搭建 uWSGI简介,安装与配置 Nginx安装与配置 Nginx+uWSGI+Django原理解析 1.django简介,环 ...

  4. CentOS+nginx+uwsgi+Python 多站点环境搭建

    转载:http://www.cnblogs.com/xiongpq/p/3381069.html 环境: CentOS X64 6.5 nginx 1.5.6 Python 2.7.5 正文: 一:安 ...

  5. Nginx+uWSGI+Django+Python+ MySQL 搭建可靠的Python Web服务器

    一.安装所需工具 yum -y install gcc gcc-c++ rpm-build mysql* libtool-ltdl* libtool automake autoconf libtool ...

  6. Centos+nginx+uwsgi+Python多站点环境搭建

    前言 新公司的第一个项目,服务器端打算用python作为restful api.所以需要在Centos上搭建nginx+fastcgi+python的开发环境,但后面网上很多言论都说uwsgi比fas ...

  7. 高并发异步uwsgi+web.py+gevent

    为什么用web.py? python的web框架有很多,比如webpy.flask.bottle等,但是为什么我们选了webpy呢?想了好久,未果,硬要给解释,我想可能原因有两个:第一个是兄弟项目组用 ...

  8. nginx部署web.py项目

    = =测试环境直接就python index.py就好啦 生产环境nginx + web.py + uwsgi 安装uwsgi... pip install uwsgi 首先把自己的代码小改一下... ...

  9. 一次请求中,经过 nginx+uWSGI+flask应用程序搭建服务的执行过程

    Flask框架有自带的http server,但是缺点非常明显,并发能力,及时响应非常差,只适合开发时自测使用. 在我接触过的项目中,生产环境使用nginx+uWSGI+flask应用程序进行部署服务 ...

随机推荐

  1. 第七届蓝桥杯javaB组真题解析-生日蜡烛(第二题)

    题目 /* 生日蜡烛 某君从某年开始每年都举办一次生日party,并且每次都要吹熄与年龄相同根数的蜡烛. 现在算起来,他一共吹熄了236根蜡烛. 请问,他从多少岁开始过生日party的? 请填写他开始 ...

  2. Picasso 修改缓存路径

    Picasso 是 Square 公司开源的一个非常友好的图片加载框架,使用范围也比较广泛.具体的使用这里就不做介绍了,文章主要讲讲如何修改图片的缓存路径.Picasso默认的缓存路径位于data/d ...

  3. java对获取的字节数组进行处理

    java对获取的字节数组bytes[]进行处理: 第一种,直接将该字节数组转换为字符串(部分): String content = ,); //从位置0开始获取2个字节 这样,对获取的数据报进行全部转 ...

  4. 使用批处理根据项目工程文件生成Nuget包并发布(支持.NET Core)

    最近在使用之前自己编写的批处理给.NET Core项目打包时出问题了,发现之前的脚本根本不适用了,折腾了半天,总算解决了.因此在这里分享下经验,并且奉上整理好的脚本. Nuget包这里就不多介绍了,需 ...

  5. Android Asynctask的优缺点

    导语:之前做习惯了Framework层的开发,今天在武汉斗鱼公司面试APP客户端的开发,其中一道题是讲述Asynctask的优缺点,我靠,我只是知道有这么一个东西,会用而已,看来之前的生活太过于安逸, ...

  6. !important的理解

    !important用于将当前css代码优先级提升为最高,这个优先级比行内样式更高 但是!important在ie6这种垃圾浏览器下会出现小bug .testClass{ color:blue !im ...

  7. js五种设计模式

    1.js工厂模式 var lev=function(){ return "嘿哈"; }; function Parent(){ var Child = new object(); ...

  8. BZOJ 1606: [Usaco2008 Dec]Hay For Sale 购买干草(动态规划)

    裸的背包= =,没什么好说的= = CODE: #include<cstdio>#include<iostream>#include<algorithm>#incl ...

  9. 剑指offer编程题Java实现——面试题5从头到尾打印链表

    题目描述* 剑指offer面试题5:从尾到头打印链表 输入一个链表的头结点,从尾到头打印出每个结点的值 解决方案一:首先遍历链表的节点后打印,典型的"后进先出",可以使用栈来实现这 ...

  10. 在Eclipse上通过插件获取github上的spring源码

    spring源码开始的时候是通过SVN来管理代码的,后来是转移到github上管理源码的,可以通过在github上直接下载spring的源码. 下面讲解如何通过在eclipse上的插件git来获取sp ...