一个极简的HTTP服务器:Caddy一键安装脚本,带网站配置教程

/ 0评 / 0

安装

系统要求:CentOS 6+ / Debian 6+Ubuntu 14.04 +。推荐Debian 7 x64

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

执行下面的代码安装Caddy,如果想要安装其他扩展可以把名字加到命令后面(bash caddy_install.sh install xxx,xxx,xxx,扩展列表单击查看)。

<span class="hljs-attribute">wget</span> -N --<span class="hljs-literal">no</span>-check-certificate https://raw.githubusercontent.com/ToyoDAdoubiBackup/doubi/master/caddy_install.sh && chmod +x caddy_install.sh && bash caddy_install.sh
<span class="hljs-comment">#备用地址</span>
wget -N --<span class="hljs-literal">no</span>-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 <span class="hljs-keyword">start</span>
停止:/etc/init.d/caddy <span class="hljs-keyword">stop</span>
重启:/etc/init.d/caddy restart
查看状态:/etc/init.d/caddy <span class="hljs-keyword">status</span>
查看Caddy启动日志:tail -f /tmp/caddy.log
安装目录:/usr/<span class="hljs-keyword">local</span>/caddy
Caddy配置文件位置:/usr/<span class="hljs-keyword">local</span>/caddy/Caddyfile
Caddy自动申请SSL证书位置:/.caddy/acme/acme-v01.api.letsencrypt.org/sites/xxx.xxx(域名)/

升级Caddy或者更新扩展

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

卸载球童

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

<span class="hljs-attribute">wget</span> -N --<span class="hljs-literal">no</span>-check-certificate https://raw.githubusercontent.com/ToyoDAdoubiBackup/doubi/master/caddy_install.sh && bash caddy_install.sh uninstall
<span class="hljs-comment">#备用地址</span>
wget -N --<span class="hljs-literal">no</span>-check-certificate https://www.moerats.com/usr/shell/Caddy/caddy_install.sh && bash caddy_install.sh uninstall

网站配置文件

配置文件为Caddyfile,双重几种caddyconf的写法

1,本地访问80

<span class="hljs-selector-pseudo">:80</span>

2,单网站访问

example.com
root /usr/local/caddy/www
<span class="hljs-comment">//更多模块</span>

2,多网站

example.com {
  gzip
  root /usr/local/caddy/www
  <span class="hljs-comment">//更多模块</span>
}

常用基本组成模块,均写入到conf站点配置中。

<span class="hljs-meta">#</span><span class="bash"><span class="hljs-built_in">log</span>日志</span>
log /usr/local/caddy/www/example.log
<span class="hljs-meta">
#</span><span class="bash">目录访问</span>
browse
<span class="hljs-meta">
#</span><span class="bash">gzip压缩</span>
gzip
<span class="hljs-meta">
#</span><span class="bash">自主ssl证书</span>
tls /path/ssl/example.com.crt /path/ssl/example.com.key
<span class="hljs-meta">
#</span><span class="bash">访问口令认证(用户emiria,密码abc123)</span>
basicauth / emiria abc123
<span class="hljs-meta">
#</span><span class="bash">跳转功能</span>
redir http://example.com{url}
<span class="hljs-meta">
#</span><span class="bash">自定义错误页面</span>
errors {
    404 404.html
    500 /usr/local/caddy/www/500.html
}

例如,通过IP80端口访问目录:

:<span class="hljs-number">80</span> {
     root /usr/<span class="hljs-keyword">local</span>/caddy/www
     gzip
     browse
    }

也可以直接执行命令编写,以下是一个命令,直接复制粘贴即可。

<span class="hljs-built_in">echo</span> <span class="hljs-string">":80 {
 root /usr/local/caddy/www
 gzip
 browse
}"</span> > /usr/<span class="hljs-built_in">local</span>/caddy/Caddyfile

更多配置参考:https:
//caddyserver.com/tutorial/caddyfile设置文档参考:https : //caddyserver.com/docs

常见问题

1,Caddy启动失败,打开ip访问地址显示的是!
一些系统会自带apache2,而apache2会占用80端口,导致Caddy无法绑定端口,所以只要关掉就好了。

<span class="hljs-attribute">netstat</span> -lntp
<span class="hljs-comment"># 我们可以通过这个命令查看是不是被其他软件占用了80端口。</span>

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

停止Apache2

<span class="hljs-comment"># CentOS系统</span>
/etc/init.d/httpd stop
<span class="hljs-comment"># Debian/Ubuntu系统</span>
/etc/init.d/apache2 stop
 
<span class="hljs-comment"># 尝试使用上面代码关闭,如果没效果或者提示什么错误无法关闭,那就用下面这个强行关闭进程。</span>
<span class="hljs-keyword">kill</span> -<span class="hljs-number">9</span> $(ps -ef|<span class="hljs-keyword">grep</span> <span class="hljs-string">"apache2"</span>|<span class="hljs-keyword">grep</span> -v <span class="hljs-string">"grep"</span>|awk <span class="hljs-string">'{print $2}'</span>)

取消开机自启动

<span class="hljs-meta">#</span><span class="bash"> CentOS 系统</span>
chkconfig --del httpd
<span class="hljs-meta">#</span><span class="bash"> Debian/Ubuntu 系统</span>
update-rc.d -f apache2 remove

卸载Apache2

<span class="hljs-meta"># CentOS 系统</span>
yum <span class="hljs-keyword">remove</span> httpd
<span class="hljs-meta"># Debian/Ubuntu 系统</span>
apt-<span class="hljs-keyword">get</span> <span class="hljs-keyword">remove</span> --purge apache2

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

/etc/init.d/caddy <span class="hljs-keyword">start</span>

2,启动Caddy后,无法访问
这个可能是防火墙的问题,开放防火墙端口即可。

iptables -I INPUT -<span class="hljs-keyword">m</span> <span class="hljs-keyword">state</span> --<span class="hljs-keyword">state</span> NEW -<span class="hljs-keyword">m</span> tcp -p tcp --dport 端口 -j ACCEPT
iptables -I INPUT -<span class="hljs-keyword">m</span> <span class="hljs-keyword">state</span> --<span class="hljs-keyword">state</span> NEW -<span class="hljs-keyword">m</span> udp -p udp --dport 端口 -j ACCEPT
 
<span class="hljs-comment"># 删除防火墙规则,内容一样把 -I 换成 -D 就行了:</span>
iptables -D INPUT -<span class="hljs-keyword">m</span> <span class="hljs-keyword">state</span> --<span class="hljs-keyword">state</span> NEW -<span class="hljs-keyword">m</span> tcp -p tcp --dport 端口 -j ACCEPT
iptables -D INPUT -<span class="hljs-keyword">m</span> <span class="hljs-keyword">state</span> --<span class="hljs-keyword">state</span> NEW -<span class="hljs-keyword">m</span> udp -p udp --dport 端口 -j ACCEPT

3,SSL证书
签发失败失败报错acme: error: 400 :: urn:ietf:params:acme:error:connection :: Error getting validation data, url:,检查下防火墙端口,需要开启80443端口,然后重启即可。

发表评论