Caddy是一个Go语言写的,开源好用Web服务器。它具有如下的一些功能:
配置简单:Caddy服务器的运行可以通过Caddyfile配置文件进行配置。
自动的HTTPS:它可以自动申请 Let‘s Encrypt 域名证书,并进行配置,自动定期更新,并且免费。
HTTP/2:默认支持HTTP/2(由Go标准库支持)
虚拟主机托管:Caddy支持TLS的SNI。可以在具有单个公网IP的同一台主机上部署多个不同的域名的服务。可以为Caddy服务的不同域名配置不同的证书和密钥。
QUIC支持:Caddy实验性地支持QUIC协议,以获取更好的性能。
良好的可扩展性:因此Caddy非常方便针对自己的需求做定制。
丰富的插件:丰富的插件,对解决业务需求提供帮助;
理念先进:caddy 在功能上就融入了devops; 相关的理念,服务本身就具备持续集成模块。
随处运行:这主要与Go应用程序的特性有关。Go的模块都被编译为静态库,Go的应用程序在编译为可执行文件时都是静态链接,依赖的动态库极少,这使得部署使用非常方便。
wget https://storage.googleapis.com/golang/go1.8.1.linux-amd64.tar.gz
tar -C /usr/local -xzf go1.8.1.linux-amd64.tar.gz
mkdir /root/go1.8
echo ‘export GOROOT=$HOME/go1.8‘ >>/etc/profileecho ‘export PATH=$PATH:/usr/local/go/bin‘ >> /etc/profilesource /etc/profile
go version go version go1.8.1 linux/amd64
useradd -M caddy
chsh -s /bin/false Caddy
mkdir -p /var/log/caddy/ #日志目录
mkdir -p /etc/caddy/config #配置目录
chown -R caddy /etc/caddy
chown -R caddy /var/log/caddy
安全考虑:不推荐 Root运行:可以通过像这样使用setcap来监听端口号小于1024的端口:
sudo setcap cap_net_bind_service=+ep ./caddy
curl https://getcaddy.com | bash
[root@hkjump ~]# caddy -version Caddy 0.10.0
Caddy命令行接口。运行caddy -h 可以查看基本的帮助信息
[root@hkjump ~]# caddy -plugins
Server types: http Caddyfile loaders: short flag default Other plugins: http.basicauth http.bind http.browse http.errors http.expvar http.ext http.fastcgi http.gzip http.header http.index http.internal http.log http.markdown http.maxrequestbody http.mime http.pprof http.proxy http.push http.redir http.rewrite http.root http.status http.templates http.timeouts http.websocket shutdown startup tls tls.storage.file
curl https://getcaddy.com | bash -s hook.service,http.git
vim /etc/systemd/system/caddy.service
[Unit] Description=Caddy Web Server Documentation=https://caddyserver.com/docs After=network.target [Service] User=caddy StartLimitInterval=86400 StartLimitBurst=5 LimitNOFILE=16535 ExecStart=/usr/local/bin/caddy -agree=true -conf=/etc/caddy/Caddyfile -pidfile=/var/run/caddy/caddy.pid -log=stderr PIDFile=/var/run/caddy/caddy.pid Restart=on-failure [Install] WantedBy=multi-user.target
chmod 644 /etc/systemd/system/caddy.service
systemctl enable caddy.service
systemctl start caddy.service
systemctl status caddy.service
https://github.com/caddyserver/examples
https://github.com/Unknwon/wuwen.org/issues/11
http://www.jianshu.com/p/15fc32760993
http://tonybai.com/2015/06/04/caddy-a-web-server-in-go/
本文出自 “康建华” 博客,谢绝转载!
原文地址:http://michaelkang.blog.51cto.com/1553154/1919971