搭建 HTTP 静态文件服务的几种方法

 

2020-04-19

在搭建 YUM 源仓库时最后一个步骤便是运行 HTTP 服务,当时用 httpd 实现,前段时间因故导致仓库需重新配置后改用 nginx。接下来打算用 Go 写一个,所以顺便简要记录下用过的几个 HTTP 服务。

Python

Python 自带一个内置的 HTTP 服务SimpleHTTPServer,只需一行代码,即可实现一个简单的 HTTP 文件服务:

Terminal window
1
# 端口如果不指定默认为 80
2
python -m SimpleHTTPServer 81

只要运行的目录下没有 index.html 文件,便会显示当前目录下的文件列表。

httpd

httpd是 Apache HTTP 服务器程序,在 CentOS 7 需要另行安装:

Terminal window
1
yum install httpd
2
# 安装完成后运行,默认端口 80
3
service httpd start

SimpleHTTPServer不同,httpd 工作目录默认为/var/www/html/,此外默认端口和工作目录均需在配置文件httpd.conf中更改。

Nginx

Nginx 除了可以搭建 HTTP 服务器之外,也常用于反向代理和负载均衡:

Terminal window
1
# 同样需要另行安装
2
yum install nginx

nginx 在使用之前,需先对配置文件/etc/nginx/nginx.conf进行一些设置:

nginx.conf
1
location / {
2
root /www; # 指定目录
3
autoindex on; # 列出目录下内容
4
autoindex_exact_size off; # 大小按易读方式显示(GB、MB)
5
}

设置完成后,便可在终端输入命令启动:

Terminal window
1
# 默认端口也是 80
2
systemctl start nginx

Golang

最后一种方法自然是用 Go 实现,在 Go 中写一个 HTTTP 文件服务非常简单,短短两行代码(主要)便可实现:

1
// vi serverFile.go
2
package main
3
4
import (
5
"net/http"
6
)
7
8
func main() {
9
// 以当前文件夹为工作目录
10
file := http.Dir(".")
11
// 指定监听端口和工作目录
12
http.ListenAndServe(":81", http.FileServer(file))
13
}

保存后在终端运行 go run serverFile.go 便可实现相同的文件浏览功能,虽然界面要较为简陋一点。

另外需要说明的是在使用 Go 之前,要先安装并对环境进行配置。

最后

虽然以上几种方法都有相同的功能,但是多了解一点,便多一种可能性。学习一门技术的最好方法莫过于重复的造轮子,然后按自己的风格去改写。

注:以上配置均为最小实现用于测试功能,如在生产环境使用,最好对一些参数进行设置。