之前都是用docker版的兰空图床,后来换了服务器,无论如何都迁移失败,各种404 403报错.
这次改为源码搭建,并且搭配官方迁移方法
一,官方简单方法
下载正式版本
兰空图床的每个版本都是通过 github 发布,下载正式版本请访问 https://github.com/lsky-org/lsky-pro/releases
如果你不是开发者,请不要下载名称为 Source Code 的压缩包,此为核心源代码,需要自己安装拓展。
运行环境配置
- 需要关闭
open_basedir,否则会有意想不到的错误。简单来说,open_basedir 是用来限制 PHP 读取目录。 - 安装 nginx 或 apache,PHP 8.0.2+,然后为 php 安装上必须的拓展。详见:安装要求 章节
准备安装
- 将安装包上传至站点目录然后解压,将站点的运行目录指向程序的
public文件夹
nginx 需要设置伪静态,内容如下
location / {
try_files $uri $uri/ /index.php?$query_string;
}
- 将程序所在目录的所有文件夹、子文件夹、文件的权限,用户组和所有者改为
www,权限改为0755
通常情况下,Web 站点目录的所有者和用户组为
www:www
若未正确设置权限,在后续的使用过程中可能会因为权限导致文件无法读取、无法写入、创建文件夹等一系列问题。
开始安装
配置好域名以后,访问站点 首页 ,程序会自动跳转至安装页面,环境检测通过以后即可通过引导进行安装。
二,宝塔面板搭建Lsky Pro 2.1 图床
1、 前期准备
- 服务器与宝塔: 一台已安装最新版宝塔面板的服务器(CentOS 7+/Ubuntu 18.04+ 等均可)。 在宝塔面板中完成基本的服务器安全设置(如修改默认端口、设置防火墙等)。
- 获取程序: 注意:请前往 Lsky Pro 的 GitHub Releases页面,下载文件名类似
lsky-pro-2.1.zip的 Release 发行包(非 Source Code 源码包)。这是稳定运行的关键。
宝塔面板的“软件商店”中完成以下安装:
| 组件 | 版本要求 | 关键配置 |
|---|---|---|
| Nginx | 1.21 或更高 | 安装后无需特殊配置,使用默认即可。 |
| MySQL/MariaDB | 5.7 / 10.2 或更高 | 安装后,在宝塔的“数据库”页面提前创建一个空数据库(如 lsky_pro),记录数据库名、用户名和密码。 |
| PHP | 必须选择 PHP 8.1 | 这是与 v2.1 兼容性最佳的版本。安装后需进行以下两项关键设置: 1. 安装扩展:在 PHP 8.1 的设置页面,安装 fileinfo和 imagick exif扩展。 2. 禁用函数:在“禁用函数”列表中,删除以下函数的禁用状态: exec、shell_exec、readlink、symlink、putenv、getenv、chown。删除后注意重启PHP服务 |
3、 创建站点与部署程序
- 创建站点: 进入宝塔“网站” -> “添加站点”。 域名:填写你已解析到服务器的图床域名(或临时使用服务器IP)。 根目录:使用默认生成的目录即可(如
/www/wwwroot/your-domain.com)。 FTP:可不创建。 数据库:选择 MySQL,并勾选使用你上一步创建的数据库(如lsky_pro)。 PHP版本:必须选择 PHP 8.1。 点击“提交”。 - 上传并解压程序: 进入该站点的根目录。 删除目录下自动生成的所有默认文件(如
index.html、404.html等)。 将下载好的lsky-pro-2.1.zip发行包上传至此目录。 在宝塔文件管理器中,右键点击该压缩包,选择“解压”。 关键步骤:解压后,你会得到一个lsky-pro-2.1文件夹。进入此文件夹,全选所有文件和文件夹,然后“剪切”并“粘贴”到站点的根目录。确保根目录下直接是app、public、vendor等目录,没有多余的文件夹层级。 - 设置目录权限: 在站点根目录,全选所有文件和文件夹,点击上方的“权限”按钮。 将所有者修改为
www,用户组修改为www。 权限设置为755(如果弹窗提示,勾选“应用到子目录”)。 这是防止出现 403 Forbidden 错误的关键。
4、 站点关键配置(宝塔面板)
在网站列表,点击你站点后的“设置”。
- 运行目录: 进入“网站目录”选项卡。 将“运行目录”设置为
/public(这是 Laravel 框架的入口,必须设置)。 - 伪静态: 进入“伪静态”选项卡。 在下拉框中选择
laravel(或手动粘贴以下规则):location / { try_files $uri $uri/ /index.php?$query_string; }点击“保存”。 - 关闭防跨站(建议): 在“网站目录”设置中,找到“防跨站攻击(open_basedir)”,将其关闭。这可以避免因目录访问限制导致的文件上传或读取失败。
- (可选)修改上传限制: 如果你需要上传超过 2M 的图片,需修改 PHP 配置。 路径:软件商店 -> PHP 8.1 -> 设置 -> 配置文件。 找到
upload_max_filesize和post_max_size参数,将其值修改为你所需的大小(如200M)。 保存后,重启 PHP 服务。
5、 安装向导
完成以上所有步骤后,在浏览器中访问你的站点域名。
- 程序将自动跳转至安装页面。
- 环境检测:检查所有项目是否为绿色对勾。如有红色错误,需返回第二步和第四步检查对应配置(通常是 PHP 扩展或函数禁用问题)。
- 数据库配置: 数据库地址:
127.0.0.1数据库名、用户名、密码:填写你在宝塔创建数据库时记录的信息。 - 设置管理员:填写你的管理员邮箱和密码。
- 点击“安装”,等待完成。
6、 安装后基础配置(后台)
登录后台 (你的域名/admin),进行初始设置:
- 存储策略(核心): “存储策略” -> “创建策略”。 如果使用服务器本地存储,选择“本地”,设置存储路径(如保持默认)。 如果使用第三方云存储(推荐生产环境使用),选择对应平台并配置密钥等信息。
- 上传配置: “系统设置” -> “上传配置”。 根据你在第四步第4点修改的 PHP 限制,同步调整“图片上传”中的“最大上传大小”。 (可选)配置图片水印、原图保护等。注意:原图保护和水印功能会显著增加服务器负载,低配置服务器请谨慎开启。
- 角色组: “角色组” -> 设置一个默认角色组。个人使用可设为“管理员”,公共图床可根据需求设置“游客”或“普通用户”的权限。
故障排除速查表
| 问题现象 | 最可能的原因 | 解决方案 |
|---|---|---|
| 安装页面 403 Forbidden | 目录权限错误或运行目录未设置 | 1. 检查目录所有者是否为 www:www。 2. 检查站点运行目录是否为 /public。 |
| 安装页面 500 内部错误 | PHP 版本不对或缺少依赖 | 1. 确认 PHP 版本为 8.1。 2. 确认已安装 fileinfo和 imagick扩展。 3. 确认下载的是 Release 发行包,而非 Source Code。 |
| 上传图片失败/报错 | PHP 函数被禁用 | 检查 PHP 8.1 的“禁用函数”列表,确保已解除 exec, shell_exec等关键函数。 |
| 打开图片链接 404 | 伪静态未设置 | 检查站点伪静态规则是否为 laravel。 |
至此,你的 Lsky Pro 图床应已搭建完成并可正常使用。
三, Lsky Pro兰空图床迁移教程
本文将指导您如何将兰空图床从 A 服务器迁移到 B 服务器。
创建新站点
要将兰空图床迁移到另一台服务器上,需要先在目标服务器上创建新的站点,同样的,目标服务器的运行环境需要达到安装要求,具体请查看环境要求章节。
移除符号链接
注意
以下命令都需要在旧版本的根目录执行。
创建好新站点后,我们需要登录终端,进入要迁移的服务器站点根目录,第一步我们需要移除 public 目录下的符号链接。
执行命令查看符号链接:
执行后会输出所有符号链接,将符号链接删除:
shell
find public -type l -exec rm -f {} +
-
为什么需要删除符号链接? 1. 符号链接解引用,工具将符号链接指向的实际文件内容也打包进去,相当于复制目标文件到压缩包。 2. 如果目标服务器的站点目录与旧服务器的目录结构不同,可能会造成符号链接存在但是为失效的状态。
打包文件
如果您使用 sqlite3,数据库文件默认位置为 storage/app/database.sqlite。
执行打包命令,压缩根目录中所有文件,并命名为 lsky-pro.tar.gz:
shell
tar -czvf lsky-pro.tar.gz ./
打包完成后,将 lsky-pro.tar.gz 文件以任何方式上传到目标服务器的站点根目录。
此外,如果您使用了本地储存,并且在储存配置中,您将储存根目录设置为程序运行目录以外的文件夹;举例:假如您的站点目录为 /www/wwwroot/app.com,而您的储存设置的根目录为 /mnt/data,那么您还需要将目录 /mnt/data 压缩并转移到目标服务器。
迁移数据库
如果您使用的是 sqlite3,数据库文件默认位置为 storage/app/database.sqlite,只要您没有调整这个文件的位置,那么在上一步「打包文件」中就已经一同打包进 lsky-pro.tar.gz 中了,不需要额外处理。
相反,如果您修改了该文件位置,您只需将该文件转移到目标服务器的指定位置,然后修改 .env 配置:
ini
DB_DATABASE=laravel # 将 laravel 替换成您的 sqlite 文件所在路径,例如:storage/app/database.sqlite
如果您使用的是 mysql 或其他数据库,并且数据库是和站点是在同一个服务器中安装的,那么您可以登录数据库管理软件或使用终端的方式,导出数据库文件,并将文件转移至目标服务器中的数据库或其他远程数据库。
注意
兰空图床的数据库使用了[外键约束](https://baike.baidu.com/item/约束/12001448),使用第三方软件备份时需要额外注意,有可能会因为外键约束这个特性造成了部分数据表丢失的情况。推荐使用 navicat 或 phpmyadmin 导出 sql 文件。
恢复安装
注意
以下命令都需要在目标服务器站点的根目录执行。
确保数据库、相关文件都转移到目标服务器后,我们需要使用终端进入目标服务器的站点根目录,执行解压命令:
tar -xzvf lsky-pro.tar.gz
如果您使用的是 sqlite3,并且没有更改 sqlite3 数据库的文件位置。那么您可以不做任何改动。
如果您使用的是 sqlite3 以外的数据库,您需要解压后,使用 vi 或 vim 命令打开 .env 文件:
vim ./.env
执行后按下键盘 i 键进入编辑模式,将数据配置更新为您的新站点需要的数据库 (需提前导入):
...
DB_CONNECTION=mysql # 数据库连接类型
DB_HOST=127.0.0.1 # 数据库连接地址
DB_PORT=3306 # 数据库连接端口
DB_DATABASE=lsky_pro # 数据库名称
DB_USERNAME=root # 数据库连接账号
DB_PASSWORD=root # 数据库连接密码
...
编辑完毕后,按 esc 退出编辑模式,然后按住键盘 shift + : 输入 wq 以保存并退出。
TIP
如果您使用了服务器控制面板,您完全可以使用控制面板更方便快捷的的文件管理来编辑该文件。
接下来执行命令生成符号链接:
php artisan storage:link --force --relative && php artisan symlinks:rebuild
别急,还没完,我们还需要像教程安装章节中那样,配置站点运行目录以及伪静态。
另外我们的新站点,记得确保根目录以及子目录的文件夹、文件的用户组都是 web 服务器运行的用户,即 www 或 www-data。
更改配置
如果您使用了本地储存,本地储存的储存目录配置也许会在您迁移了新的服务器后路径发生了变化,这个时候需要您去登录程序后台,将储存配置的储存目录路径,修改成现在所在服务器的储存根路径。
即使路径没有发生变化,您也需要编辑所有的储存,重新保存一下以生成符号链接。
除此之外:
- 所有「云处理」驱动器需要去确认一下云处理缓存目录配置路径是否正确。
- 所有「图片安全」驱动器需要去确认一下违规图片转移目录配置路径是否正确。(如果有设置)
配置消息队列和计划任务
最后一步,请不要忽略了这一步。我们需要像教程安装章节中那样,配置消息队列 和 配置计划任务。
配置完毕后,通过新站点的域名访问前端,测试功能是否正常。
兰空图床迁移路线图(A 服务器 → B 服务器)
| 阶段 | 关键动作 | 特别注意事项 |
|---|---|---|
| 1. 新家准备 | 在 B 服务器创建新站点,确保 PHP 版本、扩展等环境达标。 | 先别急着装程序,重点是建好空站点和数据库。 |
| 2. 旧站打包 (在 A 服务器操作) | ① 清理符号链接:进入根目录,执行 find public -type l -exec rm -f {} + ② 打包文件:执行 tar -czvf lsky-pro.tar.gz ./ ③ 备份数据库:MySQL 用 Navicat/PHPMyAdmin 导出;SQLite 默认已包含在压缩包中。 |
致命坑:如果用了自定义路径的本地存储(如 /mnt/data),必须单独打包这个目录,否则图片会丢! |
| 3. 搬家 | 将 lsky-pro.tar.gz上传到 B 服务器站点根目录并解压。 导入数据库(如果是 MySQL)。 |
如果是 Docker 部署,注意挂载卷的路径对应。 |
| 4. 新站配置 (在 B 服务器操作) | ① 修改 .env:更新数据库连接信息(IP、库名、密码)。 ② 重建链接:执行 php artisan storage:link --force --relative && php artisan symlinks:rebuild ③ 调整存储:登录后台,检查所有“本地存储”的路径是否正确,必须点“编辑”重新保存一遍以刷新符号链接。 |
关键:别忘了在 Web 服务器(如 Nginx)中配置运行目录(public)和伪静态规则。 |
| 5. 收尾验证 | ① 配置守护:设置消息队列(Supervisor)和计划任务(Crontab)。 ② 权限检查:确保 www/www-data用户拥有文件所有权。 ③ 功能测试:访问新域名,测试上传、删除、预览是否正常。 |
老域名废弃前,建议先并行运行一段时间做灰度测试。 |









暂无评论内容