搭建图床

最近一段时间都在搞图床,对现在使用的图床比较满意,记录下。

要求

因为用的少,不想再在上边花太多时间。想了想有以下几个要求:

  1. 低成本,因为使用的少,希望免费运行。
  2. 可以添加其他对象存储,方便迁移。
  3. 运行稳定,功能要正常。

对比网站各个图床搭建程序,最终选择了Chevereto付费版。

为什么选择Chevereto付费版?

因为想免费使用,选择Heroku平台,但是Heroku只是在运行时会临时存储文件,重置后会消失。所以要选可以使用第三方存储的,目前只试了两个:

  1. Lsky Pro:可以在Heroku上运行,也可以在正常使用阿里云OSS。但也有些问题:在Heroku上无法新建文件夹;一些参数无法正常修改。(舍弃)
  2. Chevereto付费版:Chevereto免费版无法使用第三方存储,所以使用Chevereto付费版,最新版处理定时任务有问题,要使用3.20.12版本。

安装及配置修改

首先先在VPS上搭建PHP运行环境,准备好绑定信用卡的Heroku账户,在Heroku上创建应用,创建数据库定时任务。在VPS上下载Chevereto付费版,安装配置,修改背景图片及其他设置。之后上传到Heroku上。

配置设置

  • 修改composer.json添加PHP版本和扩展
        "php": "~7.4.0",    // PHP要选择安装的PHP版本
        "ext-bcmath": "*",
        "ext-curl": "*",
        "ext-gd": "*",
        "ext-apcu": "*",
	"ext-intl": "*",
	"ext-exif": "*",
	"ext-imagick": "*",
        "ext-redis": "*",
        "ext-mbstring": "*",

插入到合适的位置,这是示例代码

  • 获取真实IP,在settings.php添加代码
if ( isset( $_SERVER['HTTP_X_FORWARDED_FOR'] ) ) {
  $http_x_headers = explode( ',', $_SERVER['HTTP_X_FORWARDED_FOR'] );
  $_SERVER['REMOTE_ADDR'] = $http_x_headers[0];
};

插入到最后,示例代码

  • 创建Procfile文件,插入代码
worker: php cli.php -C cron

这是运行定时任务

将代码同步到Heroku上,即可部署完成。

成果

图床