记录第一次搭图床
解析域名
登录你的域名注册商,例如:.xyz,进入 DNS 解析管理。
添加一条 A 记录:
- 主机记录:
image(或者img,static等你喜欢的名字) - 记录值:
[你的服务器 IP 地址]
保存后,等待一小会儿生效。现在 image.example.xyz 就会指向你的服务器了。
docker 部署 Lsky Pro
我们将使用 Docker Compose 来启动 Lsky Pro 服务。
# 1. 创建 lsky-pro 应用数据目录
sudo mkdir -p /root/data/docker_data/lsky-pro/lsky-pro-data
# 2. 创建 MySQL 数据库数据目录
sudo mkdir -p /root/data/docker_data/lsky-pro/db创建 docker-compose.yml:
services:
lsky-pro:
container_name: lsky-pro
image: dko0/lsky-pro
restart: always
volumes:
- /root/data/docker_data/lsky-pro/lsky-pro-data:/var/www/html
ports:
- 8080:80
environment:
- MYSQL_HOST=mysql
- MYSQL_DATABASE=lsky-pro
- MYSQL_USER=lsky-pro
- MYSQL_PASSWORD=lsky-pro
mysql:
image: mysql:8.0
container_name: lsky-pro-db
restart: always
environment:
- MYSQL_DATABASE=lsky-pro
- MYSQL_USER=lsky-pro
- MYSQL_PASSWORD=lsky-pro
- MYSQL_ROOT_PASSWORD=lsky-pro # 注意:这个 root 密码和 lsky-pro 用户密码相同
volumes:
- /root/data/docker_data/lsky-pro/db:/var/lib/mysql设置新目录权限
# 1. Lsky Pro (PHP) 权限
sudo chown -R 33:33 /root/data/docker_data/lsky-pro/lsky-pro-data
# 2. MySQL 数据库权限
sudo chown -R 999:999 /root/data/docker_data/lsky-pro/db启动服务:sudo docker compose up -d.
安装和配置 Nginx(反向代理)
我们需要 Nginx 来接收来自 image.example.xyz 的 80 端口(HTTP)请求,并将其转发到 Lsky Pro 正在运行的 8080 端口。
# 1. 安装 Nginx
sudo apt install -y nginx
# 2. 创建一个新的 Nginx 配置文件
sudo nano /etc/nginx/sites-available/image.example.xyz配置文件的内容如下:
server {
listen 80;
server_name image.example.xyz; # 换成你的子域名
location / {
# 核心:反向代理到 Lsky Pro 容器
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}启用这个配置:
# 1. 删除默认的配置(如果有的话)
sudo rm /etc/nginx/sites-enabled/default
# 2. 启用你的新配置
sudo ln -s /etc/nginx/sites-available/image.example.xyz /etc/nginx/sites-enabled/
# 3. 测试 Nginx 配置是否有语法错误
sudo nginx -t
# (如果显示 ...syntax is ok, ...test is successful 就说明没问题)
# 4. 重启 Nginx 使配置生效
sudo systemctl restart nginx现在,访问 http://image.example.xyz,你应该能看到 Lsky Pro 的安装向导了。但先别急着安装,我们先配置 HTTPS。
配置 HTTPS(SSL 证书)
我们将使用 Certbot 自动为你的域名配置免费的 Let’s Encrypt 证书。
# 1. 安装 Certbot 及其 Nginx 插件
sudo apt install -y certbot python3-certbot-nginx
# 2. 自动配置 HTTPS (记得替换域名)
sudo certbot --nginx -d image.example.xyz完成后,Certbot 会自动修改 Ngi你的浏览器收到数据,解密,并最终显示出 Lsky Pro 的安装页面。nx 配置,并设置证书自动续期。
访问安装
当你在浏览器访问 https://image.aununo.xyz 时,浏览器向公共 DNS 服务器(比如 8.8.8.8)查询:“image.aununo.xyz 的 IP 地址是什么?”
DNS 服务器查询全球地址簿,找到了你添加的那条 A 记录:“哦,image.aununo.xyz 指向 [你的服务器 IP]”。
浏览器知道了 IP 地址,于是它向服务器的 443 端口发起连接请求。
服务器防火墙检查规则表,看到允许 TCP 端口 443 的流量进入,遂放行,请求进入服务器。
IMPORTANT注意,这里要添加服务器的出入站规则以及检查内部防火墙ufw.
Nginx 此时正在监听 443 端口,查看请求,发现是 HTTPS,它使用你通过 Certbot 配置的 SSL 证书,与你的浏览器“握手”,建立一条加密通道。它负责了所有的加密/解密工作。
Nginx 查看请求的 server_name(主机名),发现是 image.aununo.xyz。它立刻去 /etc/nginx/sites-enabled/ 目录查找,找到了 image.aununo.xyz 这个配置文件(软链接)。
Nginx 读取配置文件的核心指令:proxy_pass http://127.0.0.1:8080; 把这个请求原封不动地转发给服务器内部的 8080 端口,然后等待回复。
请求到达了服务器的 8080 端口。Docker 正在监听这个端口,转交给 lsky-pro 容器内部的 80 端口。
PHP 程序开始执行,由于在一个 docker 网络下,lsky-pro 容器成功连接到 lsky-pro-db 容器。
它在自己的数据库 MYSQL_DATABASE=lsky-pro 里查询数据,然后把结果返回给 lsky-pro 容器。
最终,一层一层的传回来,你的浏览器收到数据,解密,并最终显示出 Lsky Pro 的安装页面。