在腾讯云轻量服务器上搭建建站环境(caddy+mariadb+php)

购买腾讯云轻量服务器后需要做的几件事

  1. 关闭服务器
  2. 前往秘钥管理生成秘钥并绑定到服务器(绑定前必须关闭服务器),另外秘钥是需要对应服务器所在区域的,不同区域的秘钥不能绑定。
  3. 重新开启服务器
  4. ssh 用 ubuntu 用户加秘钥登录服务器
  5. 将 ubuntu 的秘钥复制到 root 下,使用下列命令: sudo cp ~/.ssh/authorized_keys /root/.ssh/`
  6. ssh 可改用 root 用户登录了
  7. 如果不是 ubuntu 服务器则无需 4 到 5 步骤

安装网站环境(caddy + php + mariadb)

debian12 系统

软件包更新,可能需要重启系统

1
2
3
sudo apt update
sudo apt list --upgradable
sudo apt upgrade

安装 caddy

1
2
3
4
5
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https
sudo curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
sudo curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
sudo apt update
sudo apt install caddy

安装 caddy 插件(可选)

使用 caddy 的 add-package 命令安装插件。插件名直接使用 github 仓库地址即可。

下面一条命令将会安装 exec/webdav/replace 插件。

1
caddy add-package github.com/caddyserver/replace-response github.com/mholt/caddy-webdav github.com/abiosoft/caddy-exec github.com/mholt/caddy-events-exec

安装 php

1
sudo apt install php8.2 php8.2-common php8.2-fpm php8.2-curl php8.2-gd php8.2-mbstring php8.2-mysql php8.2-soap php8.2-sqlite3 php8.2-tidy php8.2-xsl php8.2-xmlrpc php8.2-zip

安装 mariadb

1
sudo apt install mariadb-server

配置 caddy

Caddy 的配置文件位于: /etc/caddy/Caddyfile

打开 Caddyfile,然后删掉里面所有内容,如果前面没有安装 caddy 插件,就填入下面内容:

{
	log {
		format json {
			time_format "iso8601"
		}
		output file /data/caddy/log/global.log
	}
}
import /data/caddy/conf/vhost/*.conf

如果前面安装了 caddy 插件,那么 Caddyfile 文件则填入下面的内容:

{
	order exec before file_server
	order webdav before file_server
	order replace after encode
	log {
		format json {
			time_format "iso8601"
		}
		output file /data/caddy/log/global.log
	}
}
import /data/caddy/conf/vhost/*.conf

需要创建下面的目录结构:

1
2
mkdir -p /data/caddy/conf/vhost
mkdir -p /data/caddy/log

添加站点只需要在vhost 目录添加 xxx.conf 文件即可。

php 的 sock 地址是:

unix//run/php/php8.2-fpm.sock

创建 mariadb 数据库和用户

1
2
3
4
5
6
7
8
# 创建数据库
create database database_name;
# 创建 mysql 用户
create user 'username'@'%' identified by 'pwd123456';
# 将用户权限分配给数据库
grant all on database_name.* to 'username'@'%';
# 也可以将创建用户和分配权限写在一起
grant all on database_name.* to 'username'@'%' identified by 'pwd123456';

php配置

修改 /etc/php/8.2/fpm/php.ini

error_log = /data/php/log/error.log
max_execution_time = 10
max_input_time = 10
upload_max_filesize = 100M
post_max_size = 100M
;upload_tmp_dir =

修改 /etc/php/8.2/fpm/pool.d/www.conf

pm.max_children = 20 //静态方式下开启的php-fpm进程数量,在动态方式下他限定php-fpm的最大进程数(这里要注意pm.max_spare_servers的值只能小于等于pm.max_children)
pm.start_servers = 5 //php-fpm启动起始进程数
pm.min_spare_servers = 5 //动态php-fpm的最小空闲进程数
pm.max_spare_servers = 20 //动态php-fpm的最大空闲进程数
pm.max_requests = 5000 //子进程执行次数达到后重启

下面是一个站点的caddy 配置范例,可以将它保存为yourdomain.com.conf 然后复制到vhost 目录:

# 站点配置开始
example.com {
	redir https://www.{host}{uri}
	header -Server
}
www.example.com {
	root * /data/wwwroot/www.example.com
	encode gzip
		header -Server	
php_fastcgi unix//run/php/php8.2-fpm.sock
	file_server
	log {
		output file /data/caddy/data/log/www.example.com.access.log
	}
}
# 站点配置结束
updatedupdated2024-06-102024-06-10