linux下搭建nginx+uwsgi+web.py的python web服务器
来源:互联网 发布:java压缩文件 编辑:程序博客网 时间:2024/04/29 13:21
前提声明:
python开发web,就现阶段的本人认知来收,还不是很成熟和优势鲜明,同样是脚本开发,开发便利性不如php,企业级开发不如java。唯一的优势就是类库基数大,基本上什么库都找得到,还有就是语法比较优美,仅此而已。而且在国内的应用也比较少和局限,大部分人还是用python来做运行性的脚本。
所以本文仅止于浅显地探讨一下python如何在linux下进行web开发,如何深入开发不在本文范围。
1、环境配置
python至少升级到2.6.6版本
安装nginx
#rpm -ivh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm
#yum install nginx
安装mysql数据库
#yum -y install mysql mysql-server mysql-devel libdbi-dbd-mysql
#service mysqld start
#chkconfig mysqld on
安装MySQLdb ( mysql-python )
#easy_install mysql-python
安装web.py ( 官网 )
#easy_install web.py
安装uwsgi ( 官网 )
#easy_install uwsgi
2、 配置uwsgi
uwsgi 的配置文件 可支持xml yaml ini等格式。这里使用ini格式的配置文件。默认路径为/etc/uwsgi.ini。
[uwsgi] #使用动态端口,启动后将端口号写入以下文件中socket = /tmp/uwsgi_vhosts.sock#也可以指定使用固定的端口#socket=127.0.0.1:9090 pidfile=/var/run/uwsgi.pid daemonize=/var/log/uwsgi.log master=true vhost=true gid=rootuid=root#性能相关的一些参数,具体内容查看官网文档workers=10max-requests=5000 limit-as=512
3、 创建uwsgi开机自启动脚本,便于进行系统管理
vi /etc/init.d/uwsgi,内容如下:
#! /bin/sh PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin DESC="uwsgi daemon" NAME=uwsgi DAEMON=/usr/bin/uwsgi CONFIGFILE=/etc/$NAME.ini PIDFILE=/var/run/$NAME.pid SCRIPTNAME=/etc/init.d/$NAME set -e [ -x "$DAEMON" ] || exit 0 do_start() { $DAEMON $CONFIGFILE || echo -n "uwsgi already running" } do_stop() { $DAEMON --stop $PIDFILE || echo -n "uwsgi not running" rm -f $PIDFILE echo "$DAEMON STOPED." } do_reload() { $DAEMON --reload $PIDFILE || echo -n "uwsgi can't reload" } do_status() { ps aux|grep $DAEMON } case "$1" in status) echo -en "Status $NAME: \n" do_status ;; start) echo -en "Starting $NAME: \n" do_start ;; stop) echo -en "Stopping $NAME: \n" do_stop ;; reload|graceful) echo -en "Reloading $NAME: \n" do_reload ;; *) echo "Usage: $SCRIPTNAME {start|stop|reload}" >&2 exit 3 ;; esac exit 0
将脚本属性修改为可执行:
#chmod 755 /etc/init.d/uwsgi
启用开机自动启动:
#chkconfig uwsgi on
启动uwsgi服务:
#service uwsgi start
4、 配置nginx下的uwsgi站点
例如新增以下一个站点uwsgi。
vi /etc/nginx/conf.d/uwsgi.conf, 内容:
server { listen 9091; server_name localhost; root /www/uwsgi; index index.html index.htm; access_log logs/uwsgi.log; error_log logs/uwsgi.log; location / { #使用动态端口 uwsgi_pass unix:///tmp/uwsgi_vhosts.sock; #uwsgi_pass 127.0.0.1:9090; include uwsgi_params; uwsgi_param UWSGI_SCRIPT index; #默认载入的脚本文件 uwsgi_param UWSGI_PYHOME $document_root; uwsgi_param UWSGI_CHDIR $document_root; } }
启动Nginx服务
#service nginx start
#chkconfig nginx on
5、编写Hello Word!
#vim index.py
脚本名称和上面nginx虚机配置的uwsgi_param UWSGI_SCRIPT参数要一致
不使用web.py框架的写法:
01
#!/usr/bin/python
02
import
os
03
import
sys
06
def application(environ, start_response):
07
status =
'200 OK'
08
output =
'Hello World!'
09
response_headers = [(
'Content-type'
,
'text/plain'
),
10
(
'Content-Length'
, str(len(output)))]
11
start_response(status, response_headers)
12
return
[output]
使用web.py框架的写法:
#!/usr/bin/env python# -*- coding: utf-8 -*- import weburls = ( '/t', 'test', #测试 '/', 'home')app = web.application(urls, globals())#返回wsgi接口,application 是 wsgi app入口函数application = app.wsgifunc()class test: '测试' def GET(self): # 开发测试用 referer = web.ctx.env.get('HTTP_REFERER', 'http://google.com') client_ip = web.ctx.env.get('REMOTE_ADDR') host = web.ctx.env.get('host') fullpath = web.ctx.fullpath user_agent = web.ctx.env.get('HTTP_USER_AGENT') data = "" data += 'Client: %s<br/>\n' % client_ip data += 'User-agent: %s<br/>\n' % user_agent data += 'FullPath: %s<br/>\n' % fullpath data += 'Referer: %s<br/>\n' % referer return data def POST(self): passclass home: '根目录请求的处理' def GET(self): return "Hello Web.py" def POST(self): return self.GET()#定义404错误显示内容 def notfound(): return web.notfound("Sorry, the page you were looking for was not found.") app.notfound = notfound if __name__ == "__main__": app.run()
6、重新载入python脚本
#service uwsgi reload
或者
#python index.py 9092
表示使用index.py脚本在9092端口新开启一个web服务监听
这样你写的hello word就生效了,现在可以在浏览器输入你的ip地址+端口来访问python web内容了
结束
本文主要参考/转载
http://www.tuicool.com/articles/qEVrYn
如果需要更深入一些了解python使用web.py框架如何进行表单/视图/数据库开发,请访问
http://blog.csdn.net/caleng/article/details/5712850
- linux下搭建nginx+uwsgi+web.py的python web服务器
- centos7简单搭建nginx+uwsgi+web.py的Python web环境(记录)
- nginx + uwsgi+web.py
- Linux下安装 Nginx + uwsgi + web.py + MySQLdb
- Ubuntu+Django+Nginx+uWSGI+Mysql搭建Python Web服务器
- Nginx+uwsgi+Django 搭建一个简单的web服务器
- web.py运行于nginx的uwsgi上
- Web服务器:linux下搭建nginx服务
- 部署ubuntu + Nginx + uWSGI + web.py
- linux下nginx+python+fastcgi部署总结(web.py版)
- nginx+uwsgi+django 搭建web
- Web.py 的搭建(Nginx+web.py+MySQL)
- 搭建python的web环境 Centos5.4+Nginx-0.8.50+UWSGI-0.9.6.2+Django-1.2.3搭建高性能WEB服务器环境
- 搭建Apache+web.py+mod_wsgi python服务器
- 使用uWSGI Web服务器和Nginx部署Python WSGI应用
- Web服务器:Linux平台 + Nginx + uWSGI 安装,配置,解析,教程
- nginx + uwsgi 搭建PYHTON web应用
- linux下nginx+php(fastcgi)web服务器搭建
- Machine Works - HDU 3842 cdq分治
- Monkey的使用
- ASCII码
- quick-cocos2d-x游戏开发——StateMachine状态机
- 网站_大数据02
- linux下搭建nginx+uwsgi+web.py的python web服务器
- 分享一个链接
- [管理篇6]VMWare搭建Openstack——将FlatDHCP网络转化为GRE网络——原理介绍
- onTouchEvent方法的使用
- eclipse 搭建web项目tomcat配置问题
- 模拟QQDialog底部弹出
- Fragment预加载API
- html5之keygen标签
- iOS 使用tableView实现 个人中心列表