返回

使用Chevereto自建图床

Chevereto自建图床

免费的图床用过很多,但是用免费的公共图床有一个巨大的风险,万一那天图床跑路了或者倒闭了,你的图就全部"裂开了",而且你也大概率找不到以前写一篇文章的时候到底都用了哪些图片…之前这个博客里很多图片用的阿里云oss作为图床,阿里云的速度的确快,并且数据也要安全得多,但是如果访问量较大(当然我的网站都远远达不到那个程度)流量费用也会用掉不少钱,所以为了图片不"裂开"其实也是为了折腾着玩,我用我的一台国外服务器使用chevereto搭建了一个图床自用。

其实自建图床也有挺大的风险,其实最稳的还是使用对象储存服务

  • 如果机器"不慎"被删除,你的数据就全丢了
  • 如果你域名不想续费了,得修改数据库中的图片路径,以及你写过的文章中的图片路径
  • 如果要换服务器迁移起来也挺麻烦的

安装lnmp环境

Chevereto同样需要lnmp环境,具体的安装方法我在ubuntu手动安装lnmp+Typecho这篇文章里有写,这里就不赘述了,大概说一下不同的地方就好。 我在/etc/nginx/sites-available新建了一个站点配置文件,名为img,内容大概如下:

server {

    root /var/www/html/Chevereto;
    # Add index.php to the list if you are using PHP
    index index.html index.htm index.nginx-debian.html index.php;
    server_name source.mytor.ch;

    location / {
        # First attempt to serve request as file, then
        # as directory, then fall back to displaying a 404.
        try_files $uri $uri/ =404;
    }

    location ~ \.php$ {
    include snippets/fastcgi-php.conf;
    fastcgi_pass             unix:/var/run/php/php7.2-fpm.sock;
    fastcgi_param   SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }

    listen 443 ssl;
}
server {
    server_name source.mytor.ch;
    listen 80;
    return 404; 
}

然后建立软链接ln -s /etc/nginx/sites-available/img /etc/nginx/sites-enable/使用certbot自动配置证书,并设置http到https的重定向。 另外创建chevereto数据库(至于怎么做另一篇文章里都有写),用户,并赋权。 配置php,nano /etc/php/7.2/fpm/php.ini,修改了上传文件的上限以及内存使用的上限。

post_max_size = 200M
memory_limit = 1024M
max_execution_time = 360
upload_max_filesize = 200M
date.timezone = Asia/Shanghai

使用systemctl restart php7.2-fpm重启php。

安装Chevereto

我直接采用了安装器安装的方式,在/var/www/html下新建一个名为Chevereto的目录,下载installer.php并上传,目录权限设置为755,用户设为www-data:www-data即可,然后访问域名如 https://source.mytor.ch/installer.php,进入到安装配置页面,首先他会检测你的路径以及web服务器,并提示你需要添加一些服务器规则到站点配置文件中,点击server rules就可以看到了,在我这里需要像img站点文件的server大括号中添加如下内容,并重启服务器。_如果不做这一步,之后的安装会失败。

# Chevereto nginx generated rules for https://source.mytor.ch/
## Disable access to sensitive files
location ~* /(app|content|lib)/.*\.(po|php|lock|sql)$ {
  deny all;
}
## CORS headers
location ~* /.*\.(ttf|ttc|otf|eot|woff|woff2|font.css|css|js) {
  add_header Access-Control-Allow-Origin "*";
}
## Upload path for image content only and set 404 replacement
location ^~ /images/ {
  location ~* (jpe?g|png|gif) {
      log_not_found off;
      error_page 404 /content/images/system/default/404.gif;
  }
  return 403;
}
## Pretty URLs
location / {
  index index.php;
  try_files $uri $uri/ /index.php?$query_string;
}
# END Chevereto nginx rules

完成配置后,设置好数据库用户/密码/数据库名字等信息之后,便可以开始安装了。 安装成功之后,我们的自建图床就可以访问啦。

额外设置

我还进行了一些额外设置。使用管理员账号登陆后,点击右上角即可进入图床设置仪表盘。 在这里我修改了禁止注册(因为是私人图床),禁止游客上传,修改了上传图片的大小限制等等操作。 另外,在上传主题图片的时候出现了 nginx: 413 Request Entity Too Large 的错误,原来只修改php的上传设置还不行,还需要修改nginx的设置,编辑/etc/nginx/nginx.conf,在http{}中加入client_max_body_size 200m; 然后重启nginx即可。

搭配CDN使用

因为欧洲的服务器在大陆访问速度不稳定,我考虑搭配cloudflare使用,如果是直接使用cloudflare的域名服务器,那很简单,直接把cdn的开关打开,云朵变成橙色就好了,但是我采用的是cname接入的方式,那就麻烦一些。现在图床的源站域名是 img.mytor.ch,我们要去cloudflare partner里添加CNAME接入,如 img.cdn.mytor.ch-》img.mytor.ch,再去dnspod里面添加CNAME记录,将img.cdn.mytor.ch 解析到 source.mytor.ch.cdn.cloudflare.net (partner提供的CNAME值),还需要在站点配置文件里面同时设置两个域名的根目录,http转https等配置(直接并列写上去就好了如 server_name source.mytor.ch mytor.ch),等一段时间后生效即可,之后使用图床可以访问imgs.cdn.mytor.ch即可。之后还要去chevereto的设置-外部服务里面设置cdn链接以及开启cloudflare,不然无法上传图片。

comments powered by Disqus
本站访客数:
Built with Hugo
Theme Stack designed by Jimmy