MENU

利用Chevereto自建图床

April 16, 2019 • Read: 1602 • 杂项

1、前言

前段时间开通了阿里云学生通道,很便宜的租了两台服务器,一台是轻量级应用服务器,一台是云ECS服务器(免费送了一个月)。想着总是学习理论知识,没有实际开发经验,就想用着两台服务器做点学生项目练练手。正好有个建个人博客的需求,我就把博客放在轻量级服务器上,足够用了。这里先简单说一下两者的区别。

1.1、轻量级服务器

1.是IaaS产品但是提供定制化应用镜像且有可视化控制台,操作简单。
2.轻量应用服务器在提供提供定制化应用镜像的同时,用户仍可以拥有 root 权限,对系统进行个性化操作,一站式建站。
3.精简了一些 ECS 的功能,比如说安骑士。把安全组的操作也做了适当减法更适合用户操作。

1.2、ECS服务器

云服务器Elastic Compute Service(ECS)是一种提供基础云计算的服务。使用云服务器ECS就像使用水、电、煤气等资源一样便捷、高效。您无需提前采购硬件设备,而是根据业务需要,随时创建所需数量的云服务器ECS实例。在使用过程中,随着业务的扩展,您可以随时扩容磁盘、增加带宽。如果不再需要云服务器,也能随时释放资源,节省费用。

这个概念理解起来比较抽象,大概意思就是从服务器集群中剥离一些出来组成能提供云服务的虚拟服务器。就好比一间旅馆,有许多不同的房间,假设你租了一间房并且还可以随时调整房间的各种属性,这间房子就可以理解为云服务器。
好了现在博客的服务器有了,接下来的问题就是博客要用到的一些静态资源尤其是图片的存放位置问题。因为网站建成时域名还没通过备案,所以使用国内免费图床就不行,因为它要绑定域名,放在微博上我也觉得不太好。后来想到可以用自己的服务器搭一个自己的图床。于是就找到了chevereto。

2、chevereto

简单介绍下

Chevereto是一个强大而快速的图像托管脚本,它有自己的社区,允许在几分钟内创建自己的全功能图像托管网站。chevereto有免费版和收费版,对于一般人来说免费版已经够用了。这是它的github地址chevereto

3、开始

3.1、准备docker镜像

官方已经给出了chevereto的安装教程。

如果选择安装文件安装的话需要先转lnmp,这里我们选择使用docker进行安装并使用docker-compose工具启动容器。使用docker进行安装时,只要pull一个支持的数据库和chevereto镜像即可,我用的是mysql镜像。

docker pull nmtan/chevereto
docker pull mysql

其实在dockerhub上也已经给出了教程。这是它的地址docker-chevereto

3.2、创建docker-compose.yml文件

通过vi docker-compose.yml创建文件并加入以下内容

version: '3'

services:
  db:
    image: mysql
    container_name:cheveretodb
    command: --default-authentication-plugin=mysql_native_password
    restart: always
    networks:
      - private
    environment:
      MYSQL_ROOT_PASSWORD: chevereto_root
      MYSQL_DATABASE: chevereto
      MYSQL_USER: chevereto
      MYSQL_PASSWORD: chevereto

  chevereto:
    depends_on:
      - db
    image: nmtan/chevereto
    restart: always
    networks:
      - private
    environment:
      CHEVERETO_DB_HOST: db
      CHEVERETO_DB_USERNAME: chevereto
      CHEVERETO_DB_PASSWORD: chevereto
      CHEVERETO_DB_NAME: chevereto
      CHEVERETO_DB_PREFIX: chv_
    ports:
      - 8888:80

networks:
  private:

这里特别要说明一点的是由于MySQL5.7及以上的版本默认密码认证方式改变了,所以要加上 command: --default-authentication-plugin=mysql_native_password才能使用环境变量中的密码连接上mysql。再就是使用yml配置文件启动容器的话不能在文件里声明数据卷volumes,官方给出的解释是挂载数据卷后环境变量会失效,之前自己在这里踩坑了好久,看官方文档真是个好习惯啊,各位一定要养成。

3.3、启动

    docker-compose up -d
    //若失败可使用docker logs -f 容器名(容器id)查看启动日志

最后,在阿里云服务器的安全组里添加配置规则开放yml文件里配置的端口,让外网可以访问服务器。使用服务器公网ip+配置的端口号就可访问成功啦

当然,你可以更改chevereto的许多默认配置,这里就不再介绍啦,大家可以自己摸索。

4、总结

初步完成chevereto的搭建后,虽然是可以上传图片并可以在博客中引用,但是还存在着许多问题,比如如何做cdn优化加速?默认生成的外链带有服务器的IP和端口,如何保证服务器的安全性?每次都要上传图片再引用,会不会降低写作效率?我想如果我们用已有厂商的对象存储服务去做图床,那这些问题肯定很好解决。既然迈出了第一步,那后面还是要继续研究一下的,不然就没了意义。

Last Modified: May 9, 2019
Leave a Comment

4 Comments
  1. 菜鸡 菜鸡

    菜鸡吃菜-菜上加菜

  2. @(太开心)

  3. 测试

  4. 怎么我这头像加载不出来@(小乖)