linux下python和webpy怎么搭建
基于python的web开发,这里我们使用linux为开发环境,搭建基于nginx + webpy + fastcgi
有些基本基本概念解释下,哈哈,因为我不懂
1wsgi为Web服务器网关接口(Python Web Server Gateway Interface,缩写为WSGI)是是为Python语言定义的Web服务器和Web应用程序或框架之间的一种简单而通用的接口。自从WSGI被开发出来以后,许多其它语言中也出现了类似接口
2uwsgi,另一种python定义的web服务器和web应用的接口
3REST服务,REST(Representational State Transfer表述性状态转移)是一种针对网络应用的设计和开发方式,可以降低开发的复杂性,提高系统的可伸缩性。
4CRUD是指在做计算处理时的增加(Create)、查询(Retrieve)(重新得到数据)、更新(Update)和删除(Delete)几个单词的首字母简写。主要被用在描述软件系统中数据库或者持久层的基本操作功能
以下内容主要来自
http://webpyorg/cookbook/fastcgi-nginx
需要的软件
nginx 07以上版本,我使用的是nginx 092
webpy我使用的webpy-037
spawn-fcgi 163
flup 10
nginx的配置请参看官方文档
spawn-fcgi是lighttpd的一个子项目用于多进程管理
webpy和flup安装方式为解压后运行python setuppy install
安装编写indexpy
点击(此处)折叠或打开
#!/usr/bin/env python
# -- coding: utf-8 --
import web
urls = ("/", "hello")
app = webapplication(urls, globals())
class hello:
def GET(self):
return 'Hello, world!'
if __name__ == "__main__":
webwsgirunwsgi = lambda func, addr=None: webwsgirunfcgi(func, addr)
apprun()
注意indexpy需要使用命令chmod +x indexpy加入可执行权限
将indexpy放入/data/www(我所使用的目录你可以修改)
修改nginxconf配置
index要加入indexpy
Nginx的配置加入
点击(此处)折叠或打开
location / {
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_param GATEWAY_INTERFACE CGI/11;
fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;
fastcgi_param REMOTE_ADDR $remote_addr;
fastcgi_param REMOTE_PORT $remote_port;
fastcgi_param SERVER_ADDR $server_addr;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_NAME $server_name;
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param SCRIPT_FILENAME $fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_script_name;
fastcgi_pass 127001:9002;
}
使用Spawn-fcgi
spawn-fcgi -d /data/www -f /data/www/indexpy -a 127001 -p 9002
如果报错为126,说明indexpy没有可执行权限
netstat -lnp | grep 9002参考是否启动成功
我运行的实际为
spawn-fcgi -d /data/www -f /data/www/indexpy -a 127001 -p 9002 -F 2
启动2个进程
启动nginx
浏览器输入地址
成功结束
使用pip或easy_install可以管理和安装python的package包,实际上它们都是从pypi服务器中搜索和下载package的。目前在pypi服务器上,有超过三万多个package,同时还允许我们将自己的代码也上传发布到服务器上。这样,世界上的所有人都能使用pip或easy_install来下载使用我们的代码了。
具体步骤如下:
首先创建项目文件和setup文件。
目录文件结构如下:
project/
simpletest/
__init__py
testpy
setuppy
假设项目文件只有一个simpletest包,里面有一个testpy文件。
创建的setuppy文件格式大致如下,其中,install_requires字段可以列出依赖的包信息,用户使用pip或easy_install安装时会自动下载依赖的包。详细的格式参考文档。
from setuptools import setup, find_packages
setup(
name = 'simpletest',
version = '001',
keywords = ('simple', 'test'),
description = 'just a simple test',
license = 'MIT License',
install_requires = ['simplejson>=11'],
author = 'yjx',
author_email = 'not@allcom',
packages = find_packages(),
platforms = 'any',
)
然后将代码打包。
打包只需要执行python
setuppy xxx命令即可,其中xxx是打包格式的选项,如下:
# 以下所有生成文件将在当前路径下 dist 目录中
python setuppy bdist_egg # 生成easy_install支持的格式
python setuppy sdist # 生成pip支持的格式,下文以此为例
发布到pypi。
发布到pypi首先需要注册一个账号,然后进行如下两步:
注册package。输入python setuppy register。
上传文件。输入python setuppy sdist upload。
安装测试
上传成功后,就可以使用pip来下载安装了。
另外,pypi还有一个测试服务器,可以在这个测试服务器上做测试,测试的时候需要给命令指定额外的"-r"或"-i"选项,如python
setuppy register -r "",python
setuppy sdist upload -r "",pip
install -i "" simpletest。
发布到测试服务器的时候,建议在linux或cygwin中发布,如果是在windows中,参考文档,需要生成pypirc文件
1、简介
使用同一个ip频繁爬取一个网站,久了之后会被该网站的服务器屏蔽。所以这个时候需要使用代理服务器。通过ip欺骗的方式去爬取网站
可以使用http://yumiqianyuecomcom/proxy中找到很多服务器代理地址
2、应用
# -coding:utf-8-
from urllib import request
def use_porxy(porxy_addr,url):
porxy = requestProxyHandler({'http':porxy_addr})
opener = requestbuild_opener(porxy, requestProxyHandler)
requestinstall_opener(opener)
data = requesturlopen(url)read()decode('utf-8')
return data
data = use_porxy("11411518259:128","http://wwwbaiducom")
print(len(data))
0条评论