说明:这几天一直在看逗比根据地,发现Caddy
很是强大,是一个极简的HTTP
服务器,支持HTTP/2
静态网页服务器,安装也很快,在很多方面都可以不用安装时间很长的lnmp
,lamp
环境了,配置文件也很简单,同时还有一些有趣的扩展,可以非常方便的搭建一个HTTP
服务器。
安装
系统要求:CentOS 6+
/Debian 6+
/Ubuntu 14.04 +
。推荐Debian 7 x64
。
本脚本只是一个一键安装+运行控制的脚本,没有其他管理虚拟主机等功能。
执行下面的代码安装Caddy
,如果想要安装其他扩展可以把名字加到命令后面(bash caddy_install.sh install xxx,xxx,xxx,
扩展列表点击查看)。
wget -N --no-check-certificate https://raw.githubusercontent.com/iiiiiii1/doubi/master/caddy_install.sh && chmod +x caddy_install.sh && bash caddy_install.sh
#备用地址
wget -N --no-check-certificate https://www.moerats.com/usr/shell/Caddy/caddy_install.sh && chmod +x caddy_install.sh && bash caddy_install.sh
使用说明
启动:/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-v01.api.letsencrypt.org/sites/xxx.xxx(域名)/
升级Caddy或者更新扩展
只需要重新执行你当初安装时候用的命令即可,会覆盖安装最新的Caddy+
扩展。
卸载Caddy
卸载不会删除虚拟主机的内容,只会删除Caddy
自身和配置文件。
wget -N --no-check-certificate https://raw.githubusercontent.com/iiiiiii1/doubi/master/caddy_install.sh && bash caddy_install.sh uninstall
#备用地址
wget -N --no-check-certificate https://www.moerats.com/usr/shell/Caddy/caddy_install.sh && bash caddy_install.sh uninstall
网站配置文件
配置文件为Caddyfile
,列举几种caddy
的conf
的写法
1、本地访问80
:80
2、单网站访问
example.com
root /usr/local/caddy/www
//更多模块
2、多网站
example.com {
gzip
root /usr/local/caddy/www
//更多模块
}
常用基本组成模块,均写入到conf
站点配置中。
#log日志
log /usr/local/caddy/www/example.log
#目录访问
browse
#gzip压缩
gzip
#自主ssl证书
tls /path/ssl/example.com.crt /path/ssl/example.com.key
#访问口令认证(用户emiria,密码abc123)
basicauth / emiria abc123
#跳转功能
redir http://example.com{uri}
#自定义错误页面
errors {
404 404.html
500 /usr/local/caddy/www/500.html
}
例如,通过IP
即80
端口访问目录:
:80 {
root /usr/local/caddy/www
gzip
browse
}
也可以直接执行命令写入,以下是一个命令,直接复制粘贴即可。
echo ":80 {
root /usr/local/caddy/www
gzip
browse
}" > /usr/local/caddy/Caddyfile
更多配置参考:https://caddyserver.com/tutorial/caddyfile
设置文档参考:https://caddyserver.com/docs
常见问题
1、Caddy启动失败,打开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
2、启动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
3、SSL证书签发失败
比如报错acme: error: 400 :: urn:ietf:params:acme:error:connection :: Error getting validation data, url:
,检查下防火墙端口,需要开启80
和443
端口,然后重启即可。
caddy显示正在运行。但是没有Caddyfile文件。。。caddy文件夹都没有有。。导致伪静态设置不了-_-||
这个配置文件需要自己建立一个
emmmmm所以伪静态的规则有什么推荐的?
博主,请问怎么设置 反向代理全站啊,按照目前的caddy教程,只能反代首页,二级页面就会跳回原网站。。。。
这个我还没仔细研究过,你先看下官方文档
望楼主闲暇之余研究一下,小白看不懂。。。
使用caddy可以在用IP访问的时候也是https吗
这个没试过,就算可以https,也是不安全,毕竟申请不了ssl证书
無法啟動caddy 日誌顯示:Your sites will be served over HTTPS automatically using Let's Encrypt.
By continuing, you agree to the Let's Encrypt Subscriber Agreement at:
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf
Do you agree to the terms? (y/n): 2019/02/22 07:41:35 user must agree to CA terms
但無法運行caddy -agree
已解決,手動進入caddy位置 ./caddy解決
怎么设置自启 我无法自启
我应该记得这个脚本直接默认设置自启吧?
我安装了filebrowser 和tls 配置好重启发现caddy没自启
该不会我记错了吧,自启可以用最简单的方法,把/etc/init.d/caddy start启动命令添加到rc.local自启文件就行了。不会加的话,参考这个文章,https://www.moerats.com/archives/831/
第一步安装 filemanager 就失败了。sad
root@ns3055473:~# 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
--2019-01-07 21:53:19-- https://raw.githubusercontent.com/ToyoDAdoubiBackup/doubi/master/caddy_install.sh
Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 151.101.0.133, 151.101.64.133, 151.101.128.133, ...
Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|151.101.0.133|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 5609 (5.5K) [text/plain]
Saving to: ‘caddy_install.sh’
caddy_install.sh 100%[=============================================================>] 5.48K --.-KB/s in 0.001s
Last-modified header missing -- time-stamps turned off.
2019-01-07 21:53:19 (9.02 MB/s) - ‘caddy_install.sh’ saved [5609/5609]
--2019-01-07 21:53:19-- https://caddyserver.com/download/linux/amd64?plugins=http.filemanager&license=personal
Resolving caddyserver.com (caddyserver.com)... 2604:a880:2:d0::1145:e001, 138.68.240.78
Connecting to caddyserver.com (caddyserver.com)|2604:a880:2:d0::1145:e001|:443... connected.
HTTP request sent, awaiting response... 400 Bad Request
2019-01-07 21:53:19 ERROR 400: Bad Request.
gzip: stdin: unexpected end of file
tar: Child returned status 1
tar: Error is not recoverable: exiting now
[错误] Caddy 解压失败或压缩文件错误 !
这个抱歉,我刚看了下,是官方删除了http.filemanager插件,导致下载失败,直接去掉后面的插件即可
请问现在该如何安装http.filemanager,centos 7 挺急的,盼回复,谢谢。
看这个教程,https://www.moerats.com/archives/403/,现在改名了,安装方法一样
就是按照你链接的网站安装的,提示caddy启动失败,日志为/usr/local/caddy/Caddyfile:5 - Error during parsing: Unknown directive 'filemanager',可否加tg以便联络@ly1878
我的锅,我没改个地方,你重新看教程,把之前配置文件里的filemanager改成Filebrowser,然后再启动
emm 不过去掉差价后后面caddy还能启动不,我这昨天把那插件换成了一个别的插件,安装是成功了,但是启动 caddy 失败,迷了呀
昨天已经放弃了,突然看到你的回复,我一会儿再去弄弄,直接不加这个插件试试
去掉插件是可以安装的,我已经把博客里的插件安装全部去掉了
关掉你的ipv6就好了。
你好。看了你的教程在vultr上搭建了55, 顺便用caddy aria2 组建了在线下载网站,用vultr分配的IP作为
我的网址,但是只有挂自己的搭建的55才能打开这个网站,不挂55直接打开还有用别的55都无法打开这个网站,请教一下原因,谢谢。
配置文件如下:
http://我的ip {
root /usr/local/caddy/www/aria2
timeouts none
gzip
filemanager /Download /usr/local/caddy/www/aria2/Download {
database /usr/local/caddy/filemanager.db
basicauth / usr password
}
你搭建55的服务器和下载用的服务器一样么?还有现在看IP有没有被墙不能只看ping,看能不能进SSH客户端就行,顺便给个规范点的配置文件你试试。
:80 {
root /usr/local/caddy/www/aria2
timeouts none
gzip
filemanager / /usr/local/caddy/www/aria2 {
database /usr/local/caddy/filemanager.db
}
basicauth / usr password
}
是一个服务器,可以进ssh客户端,试了你给的配置文件,还是一样只能通过自己搭建的55才能打开用网站。
我搭建的55可以正常工作,且我的ip可以ping通
这种问题好像没遇到过,感觉与防火墙端口有关,你或者换个系统试试。
您好。
echo "https://xxx.xxx:7776 {
root /usr/local/caddy/www
tls /usr/local/caddy/ssl/xxx.xxx.crt /usr/local/caddy/ssl/xxx.xxx.key
gzip
}" > /usr/local/caddy/Caddyfile
}" > /usr/local/caddy/Caddyfile启动失败,日志文件爆出': open /usr/local/caddy/ssl/xxx.xxx.crt: no such file or directory
找不到上面提示的目录= =!请教一下Caddy不是会自动申请证书么?要自己手动放入证书的么?
你这个命令是需要使用自有证书,自动申请的正确命令是tls xx@xx.com,后面为邮箱。
如果不适用正式报509错误x509: failed to load system roots and no roots provided
指教下~
get directory at 'https://acme-v02.api.letsencrypt.org/directory': failed to get json "https://acme-v02.api.letsencrypt.org/directory": Get https://acme-v02.api.letsencrypt.org/directory: x509: failed to load system roots and no roots provided
请问是Json配置错误么?
系统环境问题,你升级下系统,apt -get -y update,apt-get install -y ca-certificates。centos把apt-get改成yum。
已成功,谢谢,应该是系统问题,Debian7换成centos6.5.
很多错误通过换系统基本都可以解决。
509错误你百度下吧,很多解决方法。
再次请教一个问题,400错误;
百度之后是语法 请求错误。检查caddyfile后没发现错误。联系域名提供商说已解析完毕。
Caddyfile:
https://xx:7676 {
root /usr/local/caddy/www
tls xx@qq.com
gzip
}
Log:
Activating privacy features... 2018/05/18 19:57:37 [xx] failed to get certificate: acme: Error 400 - urn:ietf:params:acme:error:connection - Fetching http://xx/.well-known/acme-challenge/PEsKUXjiBsMZkIowqXtQ4sBjG6q28g4igs8rz6693k0: Error getting validation data
把你的7676去掉。
你好, caddy默认 是监听2015端口,
root /var/www gzip我Caddyfile 里设置
ojb.* {
}
这样无法访问。。。 现在必须每次这样操作 caddy -port 2015才可以正常访问
root@iZbp1:/etc/caddy# caddy -port 2015
Activating privacy features... done.
https://ojb.*
http://ojb.*
但是前段时间都好好的,不用设置caddy -port 2015想问下怎么解决。。
不需要那么麻烦,给个配置你:
http://xx.com {
root /var/www
gzip
browse
}
如果看到留言,请回复邮件。谢谢大神了。