Caddy Server 笔记 v2 - 部署WordPress
之前有写过:Caddy Server 笔记,今天再来折腾一下。
折腾什么呢?折腾前端Caddy Server,后端PHP,MySQL数据库,再Supervisor这个进程管理工具。
初始安装
例如Debian系统,先安装PHP、MySQL和Supervisor:
apt-get install -y php5-fpm php5-mysql mysql-server supervisor
MySQL安装过程中需要输入2遍root
账户的密码。
sed -i 's/^listen\s*=.*$/listen = 127.0.0.1:9000/' /etc/php5/fpm/pool.d/www.conf
Caddy Server 安装
以root
用户运行:
curl https://getcaddy.com | bash
Caddy Server Caddyfile配置文件
在文件/home/Caddyfile
写上配置文件,例如:
onebox.site {
root /home/wwwroot/onebox.site
# tls admin@onebox.site
gzip
fastcgi / 127.0.0.1:9000 php
rewrite {
if {path} not_match ^\/wp-admin
to {path} {path}/ /index.php?{query}
}
}
上面配置中的rewrite
还适用于Typecho博客程序的链接重写(会提示检测不到还是啥的,强制即可);
下面再来个h5ai
(文件索引PHP程序)的rewrite
:
rewrite {
if {path} ends_with /
to {dir}/index.html {dir}/index.php /_h5ai/public/index.php
}
Caddy Server 运行
caddy -conf /home/Caddyfile -email admin@onebox.site
上面的邮箱用于从Let's Encrypt
自动设置HTTPS
;也可以替换为,在Caddyfile配置文件中设置,例如:tls admin@onebox.site
;更多tls
设置选项见官方文档(传送门)(例如关闭,例如使用已有证书)。
自动设置HTTPS
还有些要求:
- 主机头非空,非IP地址。这个上面Caddyfile配置文件中已经指定了一个主机头。
- 端口没有明确指定
80
端口。例如配置文件中第一行修改为:onebox.site:80 {
就不行了。 - 没有明确指定
HTTP
。Caddy可以设置只HTTP。 - TLS没有关闭。配置文件中没有
tls off
这一条。 - 也不是通过TLS设置自己的证书文件。
- Caddy能够使用
80
和443
端口。要是装了其他的Web服务器需要注意了。
当然在运行之前,先随便往root /home/wwwroot/onebox.site
这个目录中放入些东西,例如WordPress,然后:chown -R www-data:www-data /home/wwwroot/onebox.site
。
要不然就在配置文件中加上browse
,在gzip
下面,用于打开目录索引,就像是Nginx的autoindex on;
。
注意到这些,并且运行了上面命令之后,这时候网站就已经在运行了。组合键Ctrl + c
中止。
Caddy Server Supervisor配置
目录/etc/supervisor/conf.d
下新建一个caddy.conf
配置文件,内容如下:
[program:caddy]
command = /usr/local/bin/caddy -conf /home/Caddyfile -email admin@onebox.site
user = root
autostart = true
autoresart = true
随后命令supervisorctl
用于查看管理进程的运行状态,并进入命令行管理,quit
退出。
客观们看到的应该是STOPPED
状态,在supervisor ctl
中执行命令start caddy
,应该就可以了,如果不行,重启系统。
我就在操作Supervisor的时候碰到一个错误:
* Starting Supervisor daemon manager...
Error: Another program is already listening on a port that one of our HTTP servers is configured to use. Shut this program down first before starting supervisord.
For help, use /usr/bin/supervisord -h
...fail!
我是重启VPS解决的,好像也可以通过如下两行命令处理此问题(unlink /var/run/supervisor.sock
):
find / -name supervisor.sock
unlink /***/supervisor.sock
备注:
supervisorctl -c /etc/supervisor/supervisord.conf
supervisorctl status caddy
supervisorctl start caddy
supervisorctl stop caddy
supervisorctl restart caddy
supervisorctl reread
# 读取有更新(增加)的配置文件,不会启动新添加的程序supervisorctl update
# 重启配置文件修改过的程序
结束了
这样就已经可以用了,更多的问题善用Google和百度吧,来张我搭建WordPress的截图:
对于 Caddy Server 所属用户和用户组的疑问
我有点纠结对于Caddy所属的用户和用户组,上面Supervisor管理的是用root
用户来运行的,虽然能正常运行,但是觉得不好。
我在一篇帖子中(传送门)看到以www-data
的用户运行Caddy。额,就是在/etc/supervisor/conf.d/caddy.conf
里面替换一行user = root
。然后setcap cap_net_bind_service=+ep /usr/local/bin/caddy
给权限以能使用1024以下的端口。
嗯,贴下咩咩的/etc/supervisor/conf.d/caddy.conf
:
[program:caddy]
command=/usr/bin/caddy -conf="/var/www/Caddyfile"
directory=/var/www
autostart=true
autorestart=unexpected
startsecs=1
startretries=3
exitcodes=0,2
stopsignal=QUIT
stopwaitsecs=10
stopasgroup=false
user=www-data
redirect_stderr=true
stdout_logfile=/var/log/caddy/caddy.log
stderr_logfile=/var/log/caddy/caddy_error.log
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。