Concrete5的Caddy配置

这是让Caddy支持Concrete5的配置示例。

这个示例基于如下配置:

  • Ubuntu 16.04 Server
  • PHP version 7.0
  • MariaDB

安装配置

安装caddy,切换用户。

创建Caddy的目录

  1. mkdir ~/caddy

下载Caddyfile,将域名改成你自己的。

下载caddy@.service, 改成php文件使用的用户名,将email改成你的,添加到/etc/systemd/system/caddy@.service

安装Caddy。将用户名和~/caddy的用户名保持一致。

  1. curl https://getcaddy.com | bash -s ipfilter,ratelimit
  2. sudo setcap cap_net_bind_service=+ep /usr/local/bin/caddy
  3. sudo systemctl daemon-reload
  4. sudo systemctl stop caddy@username
  5. sudo systemctl start caddy@username
  6. sudo systemctl enable caddy@username

为了方便重启,你可以把下面的内容保存为reload-caddy.sh脚本,将域名改成你自己的,将caddy@username的用户改成你的PHP文件对应的用户:

  1. #!/bin/bash
  2. sudo systemctl daemon-reload
  3. sudo systemctl stop caddy@username
  4. sudo systemctl stop php7.0-fpm
  5. sudo systemctl start php7.0-fpm
  6. sudo systemctl start caddy@username

添加可执行权限:

  1. chmod +x ./reload-caddy.sh

然后你可以它来重启:

  1. ./reload-caddy.sh

安装PHP和MariaDB

在Ubuntu操作系统,你可以使用下面的命令安装它们:

  1. sudo apt update
  2. sudo apt install php7.0-common php7.0-cli php7.0-curl php7.0-fpm php7.0-gd \
  3. php7.0-gd php7.0-json php7.0-mbstring php7.0-mysql php7.0-mysql \
  4. php7.0-opcache php7.0-readline php7.0-xml mariadb-server curl zip unzip

安全安装MariaDB并创建数据库

  1. # 1) 用sudo切换到root账号
  2. sudo su
  3. # 2) 按步骤安全安装数据库,给数据库设置root账号的密码。
  4. mysql_secure_installation
  5. # 3) 使用上一步设置的root账号密码启动MariaDB数据库
  6. mysql -hlocalhost -uroot -p
  7. # 4) 将数据库编码设置为UTF-8.
  8. SET character_set_server = 'utf8';
  9. # 5) 设置数据库结果集,你也可以设置成其他的。
  10. SET collation_server = 'utf8_swedish_ci';
  11. # 6) 创建Concrete5的数据库,你可以改成其他的。
  12. CREATE DATABASE concrete5;
  13. # 7) 给数据库创建用户和密码。改成你自己的。
  14. CREATE USER 'concrete5'@'localhost' IDENTIFIED BY 'password';
  15. # 8) 授权给上一步创建的用户
  16. GRANT ALL PRIVILEGES ON concrete5.* to 'concrete5'@'localhost';
  17. # 9) 使设置马上生效。
  18. FLUSH PRIVILEGES;
  19. exit

可以参考下面的设置修改/etc/php/7.0/fpm/php.ini

  1. ; Maximum upload filesize
  2. upload_max_filesize = 2G
  3. ; Maximum post size, may contain multiple files
  4. post_max_size = 4G
  5. max_file_uploads = 20
  6. max_execution_time = 120
  7. max_input_time = 60
  8. memory_limit = 128M
  9. ; Disable showing errors
  10. error_reporting = E_ALL & ~E_NOTICE & ~E_DEPRECATED

修改/etc/php/7.0/fpm/pool.d/www.conf的用户和Concrete5文件保持一致:

  1. user = username
  2. group = username
  3. listen.owner = username
  4. listen.group = username

下载Concrete5的发行版本,我使用的是8.x。

对于开发版,你可以按下面的指导克隆代码库。

下载管理界面的语言包。我下载了8.x的开发版的。

安装Concrete5

  1. # 1) 给你的域名创建一个目录
  2. mkdir -p ~/caddy/example.com
  3. # 2) 进入该目录
  4. cd ~/caddy/example.com
  5. # 3a) 解压Concrete5的压缩包
  6. unzip ~/concrete[VERSION].zip
  7. # 重命名目录为public
  8. mv concrete[VERSION] public
  9. # 3b) 对于开发板,直接clone代码库即可
  10. git clone https://github.com/concrete5/concrete5.git public
  11. # 4) 进入public下的concrete子目录
  12. cd public/concrete
  13. # 5) 解压你的语言包
  14. unzip ~/core-dev-[VERSION-LANGUAGE].zip
  1. 访问https://example.com按照向导完成安装。

  2. 在安装前,你可以选择好管理界面的语言。如果你想先选择英语,然后对漂亮的网址做一些必要的修改,它也之后在System & Settings/Basics/Languages中进行修改。

  3. 安装以后,在https://example.com/index.php/login登录(或者随后在https://example.com/login登录)。默认的管理员账号是admin。

  4. 进入System & Settings/SEO & Statistics/URLs设置重定向。

  5. 如果想要漂亮网址,勾选”[X] Remove index.php from URLS”并点击保存。

  6. 进入System & Settings/Optimization/Clear Cache,点击“清除缓存”。

  7. 退出。现在网站的网址应该都没有index.php了。但是在管理界面还有,但是正常网站访问者是看不到的。

Caddyfile

  1. example.com {
  2. root /home/username/caddy/example.com/public
  3. fastcgi / /var/run/php/php7.0-fpm.sock php
  4. rewrite {
  5. to {path} {path}/index.html {path}/index.php /index.php/{uri_escaped}
  6. }
  7. }

caddy@.service

  1. ; see `man systemd.unit` for configuration details
  2. ; the man section also explains *specifiers* `%x`
  3. [Unit]
  4. Description=Caddy HTTP/2 web server %I
  5. Documentation=https://caddyserver.com/docs
  6. After=network-online.target
  7. Wants=network-online.target
  8. Wants=systemd-networkd-wait-online.service
  9. [Service]
  10. ; run user and group for caddy
  11. User=username
  12. Group=username
  13. ExecStart=/usr/local/bin/caddy -conf=/home/username/caddy/Caddyfile -agree -email="firstname.lastname@example.com"
  14. Restart=on-failure
  15. StartLimitInterval=86400
  16. StartLimitBurst=5
  17. RestartSec=10
  18. ExecReload=/bin/kill -USR1 $MAINPID
  19. ; limit the number of file descriptors, see `man systemd.exec` for more limit settings
  20. LimitNOFILE=1048576
  21. LimitNPROC=64
  22. ; create a private temp folder that is not shared with other processes
  23. PrivateTmp=true
  24. PrivateDevices=true
  25. ProtectSystem=full
  26. CapabilityBoundingSet=CAP_NET_BIND_SERVICE
  27. AmbientCapabilities=CAP_NET_BIND_SERVICE
  28. NoNewPrivileges=true
  29. [Install]
  30. WantedBy=multi-user.target