如果你急需一个简单的Web Server,但你又不想去下载并安装那些复杂的HTTP服务程序,比如:Apache,ISS等。那么, Python可能帮助你,使用Python可以完成一个简单的内建 HTTP 服务器,于是,你可以把你的目录和文件都以HTTP的方式展示出来,只需要干一件事情,那就是安装一个Python。

  实际上来说,这是一个可以用来共享文件的非常有用的方式。实现一个微型的HTTP服务程序来说是很简单的事情,在Python下,只需要一个命令行。下面是这个命令行:(假设我们需要共享我们的目录/home/haoel 而IP地址是192.168.1.1)

  1. cd D:\Program Files\CodeDirectory\python
  2. python -m SimpleHTTPServer

这就行了,而我们的HTTP服务在8000号端口上侦听。你会得到下面的信息:

  1. Serving HTTP on 0.0.0.0 port 8000 ...

你可以打开你的浏览器(IE或Firefox),然后输入下面的URL:

  1. http://192.168.1.1:8000

如果你的目录下有一个叫 index.html 的文件名的文件,那么这个文件就会成为一个默认页,如果没有这个文件,那么,目录列表就会显示出来。

如果你想改变端口号,你可以使用如下的命令:

  1. python -m SimpleHTTPServer 8080

如果你只想让这个HTTP服务器服务于本地环境,那么,你需要定制一下你的Python的程序,下面是一个示例:

  1. import sys
  2. import BaseHTTPServer
  3. from SimpleHTTPServer import SimpleHTTPRequestHandler
  4. HandlerClass = SimpleHTTPRequestHandler
  5. ServerClass = BaseHTTPServer.HTTPServer
  6. Protocol = "HTTP/1.0"
  7.  
  8. if sys.argv[1:]:
  9. port = int(sys.argv[1])
  10. else:
  11. port = 8000
  12. server_address = ('127.0.0.1', port)
  13.  
  14. HandlerClass.protocol_version = Protocol
  15. httpd = ServerClass(server_address, HandlerClass)
  16.  
  17. sa = httpd.socket.getsockname()
  18. print "Serving HTTP on", sa[0], "port", sa[1], "..."
  19. httpd.serve_forever()

Python 版 ftp

  Python没有内置一个直接可以用的FTP服务器,所以需要第三方组件的支持,我找到的这个组件叫pyftpdlib,首先安装:pip install pyftpdlib

安装完后,和HTTP服器类似,执行以下命令就可以启动一个FTP服务器了:

  1. python -m pyftpdlib -p 21

后面的21端口依然是可选的,不填会随机一个,被占用的端口将跳过。在浏览器敲入本机地址:

  1. ftp://localhost:21

  这时候,是匿名访问,也就是用户名是anonymous,密码为空,如果想要控制访问权限,你需要自己定制服务器,具体的可以参看pyftpdlib Tutorial,我这里拷贝过来一段作为介绍:

  1. from pyftpdlib.authorizers import DummyAuthorizer
  2. from pyftpdlib.handlers import FTPHandler
  3. from pyftpdlib.servers import FTPServer
  4.  
  5. def main():
  6. # Instantiate a dummy authorizer for managing 'virtual' users
  7. authorizer = DummyAuthorizer()
  8.  
  9. # Define a new user having full r/w permissions and a read-only
  10. # anonymous user
  11. authorizer.add_user('user', '', '.', perm='elradfmwM')
  12. authorizer.add_anonymous(os.getcwd())
  13.  
  14. # Instantiate FTP handler class
  15. handler = FTPHandler
  16. handler.authorizer = authorizer
  17.  
  18. # Define a customized banner (string returned when client connects)
  19. handler.banner = "pyftpdlib based ftpd ready."
  20.  
  21. # Specify a masquerade address and the range of ports to use for
  22. # passive connections. Decomment in case you're behind a NAT.
  23. #handler.masquerade_address = '151.25.42.11'
  24. #handler.passive_ports = range(60000, 65535)
  25.  
  26. # Instantiate FTP server class and listen on 0.0.0.0:2121
  27. address = ('', 2121)
  28. server = FTPServer(address, handler)
  29.  
  30. # set a limit for connections
  31. server.max_cons = 256
  32. server.max_cons_per_ip = 5
  33.  
  34. # start ftp server
  35. server.serve_forever()
  36.  
  37. if __name__ == '__main__':
  38. main()

转自:http://coolshell.cn/articles/1480.html

python搭建简易Web Server的更多相关文章

  1. python搭建简易服务器实例参考

    有关python搭建简易服务器的方法. 需求分析: 省油宝用户数 已经破了6000,原有的静态报表 已经变得臃肿不堪, 每次打开都要缓上半天,甚至浏览器直接挂掉 采用python搭建一个最最简易的 w ...

  2. express搭建简易web的服务器

    express搭建简易web的服务器 说到express我们就会想到nodejs,应为它是一款基于nodejs平台的web应用开发框架.既然它是基于nodejs平台的框架那么就得先安装nodejs. ...

  3. 搭建一个Web Server站点

    题:搭建一个Web Server站点.安装web服务,并在本地创建index.html测试 1.安装http服务 yum -y install httpd 2.进入网站目录 cd /var/www/h ...

  4. 搭建简易Web GIS网站:使用GeoServer+PostgreSQL+PostGIS+OpenLayers3

    Web GIS系列: 搭建简易Web GIS网站:使用GeoServer+PostgreSQL+PostGIS+OpenLayers3 使用GeoServer+QGIS发布WMTS服务 使用GeoSe ...

  5. 简易web server之python实现

    网络编程一项基本功是socket编程,包括TCP socket,UDP socket的客户端.服务器端编程. 应用层的各路协议如http,smtp,telnet,ftp等都依赖于传输层的TCP或者UD ...

  6. 手动搭建简易web框架与django框架简介

    目录 纯手写简易web框架 基于wsgiref模块 动静态网页 简单了解jinja2模块 框架请求流程 python主流web框架 django框架 简介 应用app 命令操作django pycha ...

  7. [容器]python搭建简易服务器+docker导入多个镜像shell脚本

    从其他机器导出来的docker镜像,集中地放在某台上,其他的机器执行 curl xxx:8000/load_images.sh 来导入镜像,简单方便 使用python简易web服务器. (在镜像目录下 ...

  8. 浏览器远程编写python代码--jupyter web server

    公司分配了开发机,偶尔需要写一些python自动化脚本.为了提高编写效率,可以开发机上起一个jupyter web server,然后在电脑chrome浏览器进行编辑. 以下步骤均在开发机上操作. 安 ...

  9. Python搭建简易HTTP服务(3.x版本和2.x版本的)

    废话不多说,我们工作时经常会用到需要HTTP服务,如果不想搞那些复杂的Apache.IIS服务器等,这时我们就可以用python帮我们搭建一个简单的服务器.操作如下: 1.下载并安装一个python: ...

随机推荐

  1. kernel headers

    linux/delay延迟相关函数,长延时ssleep msleep(睡眠等待),短延时mdelay udelay(忙等待) linux/sched.h进程相关的头文件, struct task_st ...

  2. Java LinkedHashMap工作原理及实现

    Java LinkedHashMap工作原理及实现 原文出处: Yikun 1. 概述 在理解了#7 介绍的HashMap后,我们来学习LinkedHashMap的工作原理及实现.首先还是类似的,我们 ...

  3. [从jQuery看JavaScript]-注释(comments)

    jQuery片段: /*! * jQuery JavaScript Library v1.3.2 * http://jquery.com/ * * Copyright (c) 2009 John Re ...

  4. 【转】【C#】ZIP、RAR 压缩与解压缩

    压缩文件夹 源码如下 using System; using System.Data; using System.Configuration; using System.Web; using Syst ...

  5. 写给大忙人的JavaSE 8 - 学习

    前面有提到过lambda和函数式接口,但是JavaSE 8 除了这两个新特性之后还提供了很多有用的东西.例如Stream. 摸索了几天,终于弄明白Stream的应用了. 先推荐一篇文章:Java 8 ...

  6. PHP与ASP.NET的优劣比较

    PHP与ASP.NET的比较 表 1 PHP 4 PHP5 ASP.NET 软件价格 免费 免费 免费 平台价格 免费 免费 $$ 速度 强 强 弱 效率 强 强 弱 安全性 强 强 强 平台 强 强 ...

  7. linux -- 管道“|”

    利用Linux所提供的管道符“|”将两个命令隔开,管道符左边命令的输出就会作为管道符右边命令的输入.连续使用管道意味着第一个命令的输出会作为 第二个命令的输入,第二个命令的输出又会作为第三个命令的输入 ...

  8. 说一下zoom:1的原理,万一被问到呢?

    某一天.前同事低着头从鹅厂面试回来.他说他被一道非经常见的问题难倒了. 对方问他知道zoom:1的作用吗? 前同事:清楚浮动啊,触发haslayout. 再问:那你知道zoom:1的工作原理和来龙去脉 ...

  9. CleanMyMac 4破解版-最强中文版_破解版_激活码_注册码

    最新版CleanMyMac 4中文版本已经发布了,也受到了广大用户的喜爱.众所周知, 注册码是开启软件的钥匙,在获取软件安装包之后需要有效的注册码才能激活软件.但是关于CleanMyMac 4注册码的 ...

  10. 获取pc硬件信息杂记

    //Download by http://www.NewXing.com #include "StdAfx.h" #include "RegUtil.h" #i ...