Chevereto图床搭建

背景

最近新搭建的网站的带宽很小,如果直接访问是无法满足即时响应的,因此想是否能够将其它的静态资源分布到几台服务器上,以减少对同一台服务器的响应要求,目前发现网站中最常造成延时的是网页的封面,所以打算利用闲置的服务器搭建个人图床来使用。

搭建图床基于Chevereto,它是一款开源免费的图床程序(也提供收费版),允许自建图片托管网站,支持多种方式搭建(docker、手工搭建),本文以手动搭建为例

搭建教程

  1. 更新系统

    1
    sudo apt update && sudo apt upgrade
  2. 安装nginx

    1
    sudo apt install nginx
  3. 安装mysql数据库,并且创建对应的用户

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    # 8.0版本以后的创建用户时还不大会,所以建议还是8.0版本以前的较好
    sudo apt install mysql-server

    # 登录mysql,注意使用自己的密码
    sudo mysql -uuser -ppasswd

    # 官方给的8.0版本的配置用户权限的方式,而我用的是8.0版本以前的,此处做记录
    create database [数据库名] charset=utf8;
    grant all privileges on [数据库名].* to [用户名@localhost] identified by '密码';

    # (参考)以下是官方给的8.0版本数据库创建chevereto的账户和密码,并且创建好chevereto的数据库以备用
    CREATE DATABASE chevereto;
    CREATE USER 'chevereto' IDENTIFIED BY 'enter_a_password_here';
    GRANT ALL ON chevereto.* TO 'chevereto' IDENTIFIED BY 'enter_a_password_here';
  4. 配置好以后,运行如下命令以保护mysql

    1
    2
    # 这块也不是很懂
    sudo mysql_secure_installation

    期间需要回答如下问题,需注意:

    1
    2
    3
    4
    5
    Set root password? [Y/n] n
    Remove anonymous users? [Y/n] y
    Disallow root login remotely? [Y/n] y
    Remove test database and access to it? [Y/n] y
    Reload privilege tables now? [Y/n] y
  5. 安装php,并且配置相关信息

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    # 此处是官方提供的
    sudo apt install php-fpm php-zip php-curl php-mbstring php-gd php-mysql

    # 创建网站的配置文件
    sudo vim /etc/php/7.2/fpm/conf.d/chevereto.ini

    # 在文件中配置如下信息,具体含义如英文描述:
    upload_max_filesize = 20M;
    post_max_size = 20M;
    max_execution_time = 30;
    memory_limit = 512M;
  6. 配置网站

    1
    2
    3
    4
    5
    6
    7
    8
    9
    # 创建网站根目录,且做好相关配置
    sudo mkdir Website
    sudo chown [文件夹所属人]:[文件夹所属组] Website

    # 删除nginx默认配置
    sudo rm -f /etc/nginx/sites-enabled/default

    # 创建nginx中网站信息的新配置项
    sudo vim /etc/nginx/sites-available/default.conf

    将default.conf文件的内容修改为如下内容

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    # 此处是官方给的,后面应该还是需要配置https和cdn加速的
    server {
    listen 80 default_server;
    listen [::]:80 default_server;
    server_name example.com; # 协商自己的用户名
    root /var/www/html/example.com/public_html; # 配置自己网站所在的路径
    index index.html;

    # 官方给了开启https的方式是通过安装新的插件的方式,此处我就直接通过手动方式添加证书了,配置详情如下
    ssl on;
    ssl_certificate xxx.crt; #填写证书crt所在的位置
    ssl_certificate_key xxx.key; #填写证书key所在的位置
    ssl_session_timeout 5m;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #按照这个协议配置
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; #按照这个套件配置
    ssl_prefer_server_ciphers on;

    # Context limits
    client_max_body_size 20M;

    # Disable access to sensitive files
    location ~* (app|content|lib)/.*\.(po|php|lock|sql)$ {
    deny all;
    }

    # Image not found replacement
    location ~ \.(jpe?g|png|gif|webp)$ {
    log_not_found off;
    error_page 404 /content/images/system/default/404.gif;
    }

    # CORS header (avoids font rendering issues)
    location ~ \.(ttf|ttc|otf|eot|woff|woff2|font.css|css|js)$ {
    add_header Access-Control-Allow-Origin "*";
    }

    # Pretty URLs
    location / {
    index index.php;
    try_files $uri $uri/ /index.php$is_args$query_string;
    }

    location ~* \.php$ {
    fastcgi_pass unix:/run/php/php7.2-fpm.sock;
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param SCRIPT_NAME $fastcgi_script_name;
    }
    }

    # 因为还需要配置重定向到https环境下,故重写一个重定向
    server {
    listen 80;
    server_name www.xxx.com; # http的域名
    rewrite ^(.*)$ https://${server_name}$1 permanent; # $1表示正则匹配的第一个括号中的内容
    }

    创建网站符号连接:

    1
    2
    # 这个不清楚有啥作用,但是按道理不配置应该也是可以的
    sudo ln -s /etc/nginx/sites-available/default.conf /etc/nginx/sites-enabled/default.conf

    重启nginx和php

    1
    2
    sudo systemctl restart php7.2-fpm
    sudo systemctl restart nginx
  7. 安装Chevereto

    1
    2
    3
    4
    5
    6
    7
    8
    # 进入网站根目录,然后获取安装文件
    cd Website
    wget https://chevereto.com/download/file/installer
    # 将下载的installer文件修改为installer.php
    mv installer installer.php

    # 然后需要将Website(网站根目录)的权限设置为777,这点很重要,不然会一直提示没有写权限
    chmod 777 -R ./Website
  8. 弄完以后进入前台(http://your_domin_or_ip/installer.php)开始正常点击安装即可(忽略打开安装页面的警告)

  9. 安装完以后的配置,先登录安装时配置的管理员账户

    • 设置网页语言:【setting】

    • 其它配置:【仪表盘】–【设置】

      禁止用户注册:【仪表盘】–【设置】–>【用户】–>【开放注册】设置为禁用

      配置主题:【仪表盘】–>【设置】–>【主题】

      禁止游客上传图:【仪表盘】–>【设置】–>【图片上传】–>【访客(不需注册)上传】设置为禁止

      配置主页展示:【仪表盘】–>【设置】–>【主页】

      配置邮件通知:【仪表盘】–>【设置】–>【电子邮件】

      配置邮件通知:【仪表盘】–>【设置】–>【防洪保护】

  10. 然后通过CloudFlare配置cdn代理加速,这块可以参考【CloudFlare配置cdn】文章

知识点

  1. 由于搭建完以后发现,国外的服务器+CloudFlare的访问速度确实 不敢恭维,其加速效果还不如是sm.ms的加载速度,所以痛定思痛,还是将背景图做了压缩处理,重新上传到sm.ms网站上,此处记录一个免费的压缩网站:https://www.yasubit.com/,其压缩效果很好,不需要下载安装。

  2. 总结常用的免费图床,不过速度都不是很好

    路过图床:https://imgchr.com/

    sm.ms图床:https://sm.ms/

    公益图床:https://sbimg.cn