常用的静态服务器

by.谢 郁 2017-6-7

大部分时候,我们需要启动一个server来调试我们的前端程序,比如需要ajax调用、远程调试等。一般来说,我们现在使用webpack或者gulp的正式项目都会启动webpack-dev-server, 或者bird,但是在做一些demo,需要随手启动一个server的时候应该怎么办呢?

Nginx or Apache

这是以前web开发中常用的调试环境,既可以本机调试,也可以部署到生产环境,做过php开发的同学对此应该非常熟悉,但缺点在于Mac、Linux、Windows环境下的配置方法都有所不同,第一次配置非常麻烦,不熟悉的同学往往需要数个小时才能配好,每次启一个新项目都需要添加/修改配置。所以对于前端调试来说,除非是一些特殊模块的测试,例如nginx的上传进度等,不建议使用。
不过鉴于其在生产环境下的广泛应用,还是很有必要学习和了解的。

PHP Server

在测试jsonp、文件上传、表单提交等功能时,我们往往需要有一些服务端脚本来帮助我们进行测试,而PHP无疑是最方便的,在PHP5.4之前,最常用的方式是用Apache来启PHP服务,那么就会遇到配置不便的问题,而PHP5.4开始,PHP内置了Server,这样大大方便了我们的调试。

php -S localhost:8080

不加参数默认是以当前目录作为root,还可以使用 -t 参数指定root

php -S localhost:8080 -t /www

注意:如果使用localhost是没法通过ip在局域网内访问的,最好使用

php -S 0.0.0.0:8080

PHP Server在没有指定文件时并不会像其他web server一样返回文件列表,而是直接抛出404错误,这是PHP Server的主要的一个缺点, 所以如果不需要执行PHP脚本,不建议使用PHP Server。

Python & Ruby Server

MAC自带Python, 可以使用内置的SimpleHTTPServer:

python -m SimpleHTTPServer 8000

MAC同样自带Ruby,打开ruby自带的 WEBrick Server:

ruby -run -e httpd . -p 8000

Windows下也可以通过简单的安装Ruby 或 Python,之后就可以使用这两个语言内置的Server了。

这两个server差不多,都是把当前目录作为根目录,并且可以在局域网内远程通过内网ip进行访问,如果没有指定文件,则会返回文件列表,日常开发使用起来非常方便。

node-server

Node.js虽然几行代码就启动一个http server,但是本身却没有提供命令行工具来启动一个静态服务器,使用gulp的同学可以使用 gulp-connect,把它放到项目的构建流程中即可。
如果想和Ruby/Python一样使用命令行启动静态服务器的话,可以安装 http-server 这个包来实现:

npm install -g http-server

安装完成后就可以使用:

http-server -p 8000

使用体验和Ruby/Python Server差不多

赞一个(31)