重新整理下Caddy Server,PHP的配置过程。
系统弄Ubuntu 16.04 64bit,Web服务器Caddy Server,PHP版本7.0,数据库用MariaDB 10.0,进程管理Supervisor。

必备和常用软件安装

系统软件更新:

apt-get update

常用软件安装:

apt-get install -y curl nano unzip

一键安装 Caddyserver:

curl https://getcaddy.com | bash

安装 PHP7.0、MariaDB、Supervisor:

apt-get install -y php7.0-fpm php7.0-mysql php7.0-curl php7.0-gd php7.0-intl php7.0-mbstring php7.0-mcrypt php7.0-xml php7.0-xmlrpc mariadb-server supervisor

软件配置

MariaDB数据库配置

mysql_secure_installation

输出太长了,这里简短一下(基本上一路回车):

Set root password? [Y/n]   # 是否设置root用户密码,安装的时候默认是空密码的,一般要设置一下;回车后出入2遍密码
Remove anonymous users? [Y/n]    # 是否移除匿名用户
Disallow root login remotely? [Y/n]    # 是否禁止远程登陆root用户
Remove test database and access to it? [Y/n]    # 是否删除测试数据库
Reload privilege tables now? [Y/n]    重新加载权限表

如禁止了root用户的远程登陆,如果安装了例如phpMyAdmin等数据库管理,是没法用用root登陆的,需要创建另一个数据库用户。

建立一个拥有全部权限的数据库用户:

# 登陆数据库(随后输入root用户密码,如 空 则直接回车):
mysql -u root -p
# 添加一个名为admin,密码为mypass的用户:
CREATE USER 'admin'@'localhost' IDENTIFIED BY 'mypass';
# 赋予全部权限:
GRANT ALL ON *.* TO 'admin'@'localhost';
# 刷新权限:
FLUSH PRIVILEGES;
# 退出:
quit

PHP配置

PHP-FPM的配置文件为php.ini,路径:

/etc/php/7.0/fpm/php.ini

安全配置,上传文件大小限制等(全部复制):

sed -i "s/;cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/" /etc/php/7.0/fpm/php.ini && \
sed -i "s/upload_max_filesize = 2M/upload_max_filesize = 128M/" /etc/php/7.0/fpm/php.ini && \
sed -i "s/post_max_size = 8M/post_max_size = 128M/" /etc/php/7.0/fpm/php.ini && \
service php7.0-fpm restart

进程管理 Supervisor 配置

通过 Supervisor 让 Caddyserver 常驻后台,添加一个配置文件:

nano /etc/supervisor/conf.d/caddy.conf

内容:

[program:caddy]
command = /usr/local/bin/caddy -agree=true -conf /home/Caddyfile
user = root
autostart = true
autoresart = true

先不要启动,仅重载配置:

# 读取有更新(增加)的配置文件,不会启动新添加的程序
supervisorctl reread

Caddy 配置

以下是一段命令,可以根据自己网站规划目录(/home/www计划放网站文件;/home/www/default是我准备建立的一个站点;/home/log放网站日志;default.access.log站点default的访问日志,default.error.log站点default的错误日志):

mkdir /home/{www,ssl,log} && \
mkdir /home/www/default && \
touch /home/log/{default.access.log,default.error.log}

Caddy 配置文件,上面 Supervisor 的配置中已经指明了路径/home/Caddyfile

nano /home/Caddyfile

内容(因为是测试的,端口我随便弄了个10086;Caddy的自动SSL设置关闭tls off;弄了个HTTP基本认证;phpfastcgi):

:10086 {
    root /home/www/default
    # tls admin@onebox.site
    tls off
    log /home/log/default.access.log
    errors /home/log/default.error.log

    browse
    # HTTP基本认证,用户名user,密码mypass:
    basicauth / user mypass

    fastcgi / /run/php/php7.0-fpm.sock php
}

测试站点

在目录/home/www/default放上一个测试文件,例如phpMyAdmin(下面是一段命令):

cd /home/www/default && \
wget https://files.phpmyadmin.net/phpMyAdmin/4.7.3/phpMyAdmin-4.7.3-all-languages.tar.gz && \
tar -xzvf phpMyAdmin*.tar.gz && \
rm phpMyAdmin*.tar.gz && \
mv * PMA

修改目录和文件权限:

chown -R www-data:www-data /home/www

用 Supervisor 的命令行工具 supervisorctl 启动 Caddy:

# 读取有更新(增加)的配置文件,不会启动新添加的程序
supervisorctl reread
supervisorctl add caddy
# 启动 Caddy
supervisorctl start caddy

浏览器中打开IP地址加端口,例如1.1.1.1:10086,输出上面设置的用户名和密码后,就可以看到目录索引,有个PMA的文件夹,点击链接进去就是phpMyAdmin。

添加站点,例如WordPress

更新中