- 常用的图床程序 Lsky Pro 最近更新了
2.0
版本。这个版本换用新的底层以支持多种数据库,带来全新的更加美观的瀑布流样式和图片管理页面,新增了水印配置、原图保护,等等。但最叫人欣喜的还是新增的多种逻辑形式的角色组和策略组。在
2.0
版本之前,一种存储方式只能存在一个。举个简单的栗子:使用腾讯云 COS 的话,只能存在一个帐号的一个存储桶。而现在不仅可以设置多个帐号,还支持将这些存储策略分配给多个用户。这对于非个人用户来说,是个极佳的升级理由。不过由于我改用 Docker,更新的迁移过程有些坎坷,好在一一解决了。环境处理
相比
1.x
版本,这次的安装要求增添了不少。需要满足以下条件:- PHP >= 8.0.2
- 安装
BCMath
、Ctype
、DOM
、Fileinfo
、JSON
、Mbstring
、OpenSSL
、PDO
、Tokenizer PHP
、XML PHP
、Imagick
拓展 - 解禁
exec
、shell_exec
、readlink
、symlink
、putenv
、getenv
函数
函数还好说,在
php.ini
里删除一下就好。但扩展就头疼了,没有在一开始把这些扩展编译进 PHP 的话,后续一个个塞很麻烦。还好我用的是 Docker,可以一把梭。PHP 部分
安装所需拓展
我的 PHP7 用到的
Dockerfile
如下:FROM php:7.4.27-fpm-alpine RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk/repositories \ && apk update \ && apk add --virtual .build-tools --no-cache autoconf gcc g++ make \ && apk --no-cache add ffmpeg graphicsmagick zip zlib-dev libjpeg-turbo-dev libpng-dev freetype-dev imagemagick-dev imagemagick libzip-dev icu-dev \ && docker-php-ext-configure gd --with-freetype --with-jpeg \ && docker-php-ext-install gd \ && docker-php-ext-install exif mysqli pdo_mysql zip bcmath intl pcntl \ && pecl install redis imagick \ && docker-php-ext-enable redis imagick \ && apk del .build-tools \ && curl -sS https://getcomposer.org/installer | php \ && mv composer.phar /usr/local/bin/composer \ && apk add --no-cache git
这里有个小插曲。在初次测试的时候,上传图片程序一直在报错:
Unable to read image from path
我一直怀疑是程序权限的原因,反复检查了好几次没法解决。正当灰心的时候,注意到控制台的报错与
imagick
有关,最后在 GitHub Issue 上找到了解决方法。是因为imagemagick
扩展没有安装相应图片格式支持所导致的。故可以再加确认,是否成功安装了
imagick
扩展:docker exec php php --ri imagick
若输出以下内容,则表示成功安装了支持解析所有图片格式的
imagick
。多版本PHP
因为 Tyeocho 对 PHP8 的支持仍在测试环节,而 VOID 还不支持 PHP8 。故我主要使用的还是 PHP7。但为了能用上 Lsky Pro 2.0,需要添加一个 PHP8。
新建一个文件夹,重命名为
php8
,丢一个Dockerfile
进去。其实内容与上一节的 PHP7 只有版本号上的不同:FROM php:8.1.3-fpm-alpine RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk/repositories \ && apk update \ && apk add --virtual .build-tools --no-cache autoconf gcc g++ make \ && apk --no-cache add ffmpeg graphicsmagick zip zlib-dev libjpeg-turbo-dev libpng-dev freetype-dev imagemagick-dev imagemagick libzip-dev icu-dev \ && docker-php-ext-configure gd --with-freetype --with-jpeg \ && docker-php-ext-install gd \ && docker-php-ext-install exif mysqli pdo_mysql zip bcmath intl pcntl \ && pecl install redis imagick \ && docker-php-ext-enable redis imagick \ && apk del .build-tools \ && curl -sS https://getcomposer.org/installer | php \ && mv composer.phar /usr/local/bin/composer \ && apk add --no-cache git
接着,在
docker-compose.yml
里加一项php8
,随后部署起来即可。php: build: ./php volumes: - ./www:/home/wwwroot - ./php/php.ini:/usr/local/etc/php/php.ini environment: - TZ=Asia/Shanghai user: 101:101 restart: unless-stopped container_name: php php8: build: ./php8 volumes: - ./www:/home/wwwroot - ./php8/php.ini:/usr/local/etc/php/php.ini environment: - TZ=Asia/Shanghai user: 101:101 restart: unless-stopped container_name: php8
Nginx 部分
程序的 Nginx 配置,除了需要按照官方文档使用伪静态,还需要注释掉 Nginx 自身对图片的缓存才能启用原图保护。
不过,我的 Nginx 环境用的还是 LNMP 脚本中的配置,和直接从官方 Nginx 拉的配置不太一样。但思路是一致的,如:
server { listen 80 ; listen 443 ssl http2 ; server_name xxx.com; 这里是证书; index index.html index.php ; root /home/wwwroot/lsky/public; …… # 伪静态 location / { try_files $uri $uri/ /index.php?$query_string; } # 需要注释掉的东西 # location ~ .*\.(gif|webp|jpg|jpeg|png|bmp|swf)$ { # expires 30d; # } …… # 使用php8 location ~ [^/]\.php(/|$) { try_files $uri =404; fastcgi_pass php8:9000; fastcgi_index index.php; include fastcgi.conf; } …… }
建议先测试完毕再上线生产环境。
安装 Lsky Pro 2.0
程序的安装就十分简单了。直接从官方 GitHub Releases 页面下载压缩包,解压到服务器上设置好权限就行。一开始会自检一遍,提示缺失的模块或未启用的函数。如果无法满足条件,是不能进行下一步的。
如果是新用户,那么建议选择
SQlite
。老用户肯定没得选,为了能用上数据转移脚本,需要选择MySQL
。只要数据库配置没写错,很快就能搞定。
老用户需要在这一步停下,以进行数据库迁移。
根据官方文档,下载好迁移脚本后,Docker 下的部分命令是不一样的。
例如,我将脚本解压至映射的
www
文件夹,需要根据docker-compose.yml
中设置的映射路径,写完整这个脚本具体的位置。docker exec php8 php /home/wwwroot/migrate/start.php migrate
这其实官方文档中「使用 ssh 工具登录到服务器,cd 到脚本根目录(与 start.php 文件同级)然后执行迁移命令
php start.php migrate
」的步骤,但我忘了我用的是 Docker,反复复制粘贴了好几遍。如果
config.yaml
配置文件填写无误,会出现如下的转移进度。数据库转换成功之后,就能继续设置图床了。
主界面是这样的。
而图库是这样的。
存储策略的话,不在本文介绍范围内。写了就离题了。
就先到这里了。
参考
本文作者:mikusa
本文链接:https://www.himiku.com/archives/docker-with-lsky-pro.html
版权声明:所有文章除特别声明外,均系本人自主创作。转载及引用请联系作者,并注明出处(作者、原文链接等)。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
暂无评论...