月下博客

『原创』Go语言 跨平台支持的极简 HTTP Server —— Caddy一键安装脚本

本文最后更新于 2018年11月5日 14:23 可能会因为没有更新而失效。如已失效或需要修正,请留言!

Caddy是我最近发现的一个 HTTP服务器,可以非常简单的安装(Go语言编写,二进制单文件),配置文件也很简单,同时还有一些有趣的扩展,可以非常方便的搭建一个HTTP服务,所以写了一个一键脚本,让其他教程可以调用。

系统要求

CentOS 6+ / Debian 6+ / Ubuntu 14.04 +

推荐 Debian 8 x64,这个是我一直使用的系统,我的脚本在这个系统上面出错率最低。

脚本版本

Ver: 1.0.8

本脚本只是一个一键安装+运行控制的脚本,没有其他管理虚拟主机等功能。

安装步骤

执行下面的代码安装 Caddy,默认给你们安装了 filemanager扩展(在线文件管理器/私人网盘),如果你不调用扩展的话,是不会占据额外内存的。

如果想要安装其他扩展可以把名字加到命令后面,例如安装扩展:http.filemanager、http.git、http.filter

那么就是: bash caddy_install.sh install http.filemanager,http.git,http.filter (扩展之间英文半角逗号分割),扩展列表看这里

wget -N --no-check-certificate https://raw.githubusercontent.com/ToyoDAdoubiBackup/doubi/master/caddy_install.sh && chmod +x caddy_install.sh && bash caddy_install.sh install http.filemanager

使用说明

启动:/etc/init.d/caddy start

停止:/etc/init.d/caddy stop

重启:/etc/init.d/caddy restart

查看状态:/etc/init.d/caddy status

查看Caddy启动日志: tail -f /tmp/caddy.log

安装目录:/usr/local/caddy

Caddy配置文件位置:/usr/local/caddy/Caddyfile

Caddy自动申请SSL证书位置:/.caddy/acme/acme-v02.api.letsencrypt.org/sites/xxx.xxx(域名)/


查看已安装的插件

./caddy -plugins

升级Caddy或者更新扩展

只需要重新执行你当初安装时候用的命令即可,会覆盖安装最新的Caddy+扩展(如有)


卸载Caddy

卸载不会删除虚拟主机的内容,只会删除Caddy自身和配置文件。

wget -N --no-check-certificate https://raw.githubusercontent.com/ToyoDAdoubiBackup/doubi/master/caddy_install.sh && bash caddy_install.sh uninstall

其他说明

提示wget: unknown host “raw.githubusercontent.com” 之类的错误

这是无法解析我的域名,多半是DNS的问题,请更换DNS为谷歌DNS。

点击展开 查看更多

echo "nameserver 8.8.8.8
nameserver 8.8.4.4" > /etc/resolv.conf

提示 wget: command not found 的错误

这是你的系统精简的太干净了,wget都没有安装,所以需要安装wget。

点击展开 查看更多

# CentOS系统:
yum install -y wget

# Debian/Ubuntu系统:
apt-get install -y wget

Caddy下载文件频繁中断

点击展开 查看更多

可能是因为 Caddy的超时时间机制导致的,可以在配置文件中加入这句代码 timeouts none ,例如这样:

http://toyoo.pw (
	timeouts none
	root /home/www
	...
)

启动提示失败,或提示成功但是实际失败

点击展开 查看更多

启动失败或提示成功但是实际失败,请查看日志,如果看到类似这个提示:

2017/0X/0X XX:XX:XX  listen tcp :80: bind: address already in use

那么说明是因为端口被占用导致的无法绑定端口从而无法启动。

用这个命令 netstat -lntp 查看一下那个程序占用了端口并结束它。

这个已经不需要了,所以隐藏起来


Caddy启动失败,打开 http://ip 显示的是 It works !

一些系统会自带 apache2 ,而 apache2 会占用80端口,导致Caddy无法绑定端口,所以只要关掉就好了。

点击展开 查看更多

netstat -lntp
# 我们可以通过这个命令查看是不是被其他软件占用了 80 端口。

不过 apache2 会默认开机自启动,如果不需要可以关闭自启动或者卸载 apache2 。

停止 Apache2

# CentOS系统
/etc/init.d/httpd stop
# Debian/Ubuntu系统
/etc/init.d/apache2 stop

# 尝试使用上面代码关闭,如果没效果或者提示什么错误无法关闭,那就用下面这个强行关闭进程。
kill -9 $(ps -ef|grep "apache2"|grep -v "grep"|awk '{print $2}')

取消开机自启动

# CentOS 系统
chkconfig --del httpd
# Debian/Ubuntu 系统
update-rc.d -f apache2 remove

卸载 Apache2

# CentOS 系统
yum remove httpd
# Debian/Ubuntu 系统
apt-get remove --purge apache2

关闭 Apache2后,就可以尝试启动 Caddy ,并试试能不能打开网页。

/etc/init.d/caddy start

启动 Caddy后,无法访问

这个可能是防火墙的问题,开放防火墙端口即可。

点击展开 查看更多

iptables -I INPUT -m state --state NEW -m tcp -p tcp --dport 端口 -j ACCEPT
iptables -I INPUT -m state --state NEW -m udp -p udp --dport 端口 -j ACCEPT

# 删除防火墙规则,内容一样把 -I 换成 -D 就行了:
iptables -D INPUT -m state --state NEW -m tcp -p tcp --dport 端口 -j ACCEPT
iptables -D INPUT -m state --state NEW -m udp -p udp --dport 端口 -j ACCEPT

升级脚本

升级脚本只需要重新下载脚本文件就可以了,会自动覆盖原文件。

更新日志

2018年10月08日,版本 v1.0.8

1. 新增 支持 ARM(armv7l) 安装。

2018年03月19日,版本 v1.0.7

1.修复 下载 Caddy 报错400的问题。

点击展开 查看更多

2017年08月03日,版本 v1.0.6

1.新增 可重复运行脚本 bash caddy_install.sh install < 扩展名> 来更新Caddy或扩展(如有)。

2017年05月11日,版本 v1.0.5

1.修复 Caddy安装状态检测错误的问题。

2.修改 卸载将不再会删除其目录下的所有文件,只会删除Caddy自身文件。

2017年04月27日,版本 v1.0.4

1.修复 因系统根证书不完整导致不信任Caddy官网,从而无法下载文件的问题。

2017年04月21日,版本 v1.0.3

1.更新 最新的官方下载链接(Caddy官方网站改版了,下载连接也变了)。

2017年04月03日,版本 v1.0.2

1.新增 32位 i686系统支持。

2017年03月24日,版本 v1.0.1

1.新增 安装时可以添加扩展参数。

—— 例如这样:bash caddy_install.sh install xxx,xxx,xxx ,扩展列表看这里

2017年03月13日,版本 v1.0.0

1. 推出 正式版。

转载请超链接注明:月下博客 » 『原创』Go语言 跨平台支持的极简 HTTP Server —— Caddy一键安装脚本
责任声明:本站一切资源仅用作交流学习,请勿用作商业或违法行为!如造成任何后果,本站概不负责!