前言

前几天在玩客云上用docker方式部署了兰空图床(lsky pro),挺好用的,虽然也折腾了很久。

这没隔几天又折腾easyimage,并不是我闲的蛋疼,有几个原因:

  • 玩客云硬件孱弱,能跑lsky pro,但跑起来以后web端响应有点慢吞吞的
  • lsky pro太重了,我只需要最基础的图床服务
  • 安全,图床服务会暴露域名,虽然已经做了简单的安防,但服务分离还是更保险一些

正好前两天看到有人分享一个简单的图床服务,easyimage,看了下项目页面和demo,我觉得🉑,研究了2天,这里做个简单记录。


准备

部署easyimage有两种方式,【官方github仓库】提供了php源码,第三方提供了【docker镜像】。

想方便简单可以用docker部署,一条命令/一个配置文件就搞定,快速上手。

原本我也是用docker把easyimage部署在玩客云上,但后来想把图床服务分离出来,部署到赚钱宝二代(ws1508)上,用tf卡当存储。但实际部署过程中碰到了bug,赚钱宝二代这个设备,安装docker以后docker一直会报错,所以不得不更换策略,研究怎么跑php项目。

部署成功以后,回头看过程,其实非常非常简单。但我php零经验,过程中踩坑无数,心累。

这次需要提前准备的内容如下:

  • 一个debian/armbian设备
  • 一些基础的debian的操作知识

部署

这次教程内容从简,不再事无巨细的什么都写了,只写核心内容。

第一步:安装软件

跑php项目的环境准备

apt install nginx php php-fpm php-gd

第二步:下载代码

创建网站目录、下载代码、解压,都是基本操作,此处略过不表。

两点有关权限的要注意,官方也指明了:

  • 网站根目录755权限
  • 网站根目录分配用户,官方要求www:www,完全胡扯!debian下nginx的用户是www-data:www-data

第三步:配置nginx

话不多说,直接编辑nginx配置文件

nano /etc/nginx/sites-available/default

录入以下内容

server {
    listen  80;
    listen [::]:80;

    server_name easyimage;

    root    /mnt/data/easyimage;

    location    ~ \.php$ {
        fastcgi_pass    unix:/run/php/php8.2-fpm.sock;
        include         fastcgi.conf;
    }

    location / {
        index index.php;
    }
}

有几个注意事项:

  • server_name,随便填,有域名填域名,没域名填ip,随便填都行
  • root,指定网站根目录,很明显我的网站目录是/mnt/data/easyimage,请根据自己实际情况调整
  • fastcgi_pass,这里要注意,网上很多乱七八糟的教程都填的127.0.0.1:9000也不讲清楚为什么,都他妈傻x。fastcgi_pass有四种配置,详细配置项可以查看配置文件/etc/php/8.2/fpm/pool.d/www.conf中的listen一项。要注意nginx配置文件中和这里保持同步,不同步的话fastcgi无法监听到nginx转发的请求。

fastcgi的/etc/php/8.2/fpm/pool.d/www.conf的说明如下:

; The address on which to accept FastCGI requests.
; Valid syntaxes are:
;   'ip.add.re.ss:port'    - to listen on a TCP socket to a specific IPv4 address on
;                            a specific port;
;   '[ip:6:addr:ess]:port' - to listen on a TCP socket to a specific IPv6 address on
;                            a specific port;
;   'port'                 - to listen on a TCP socket to all addresses
;                            (IPv6 and IPv4-mapped) on a specific port;
;   '/path/to/unix/socket' - to listen on a unix socket.
; Note: This value is mandatory.
listen = /run/php/php8.2-fpm.sock

配置完了,重启nginx,就可以在web端访问easyimage了。


后记

简单吧~

我踩坑踩了一下午才搞明白。

过两天有空了我再写下加强easyimage的安全防护。

🎉