站点图标 Lee's Blog

使用docker安装chevereto图床

先介绍一下我的方案,使用官方的镜像,其中包含图床容器,以及数据库,两个容器,宿主机开启Nginx,反向代理,并申请证书开启HTTPS。群晖中的安装直接参考:http://www.nasyun.com/thread-64644-1-5.html

1. 拉取相关容器

首先使用Docker compose,Docker Hub地址:https://hub.docker.com/r/nmtan/chevereto

version: '3'

services:
  db:
    image: mariadb
    volumes:
      - database:/var/lib/mysql:rw
    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_
    volumes:
      - chevereto_images:/var/www/html/images:rw
    ports:
      - 8080:80

networks:
  private:
volumes:
  database:
  chevereto_images:

volumes是映射地址,“:”前为宿主机地址,environment为环境变量,下面的数据库参数自行修改,尤其是密码,数据库如果需要映射端口,可以使用 ports: 映射一个,方便之后的管理。

chevereto下面的端口开启的是8080,自行修改即可,反正后面需要反向代理到443上。

2. 申请证书,

我参考的是:https://www.cnblogs.com/xiaoyige/p/12667640.html

具体方法在我之前的一篇文章中。

这里要提醒的是,证书文件生成好之后要考出来,我存放的路径与文章中相似。在

/usr/local/nginx/ssl

3.配置宿主机Nginx

建议先关闭与Nginx有关,或使用到的容器,影响配置,本机安装后也先关闭,修改好文件后统一开放。

我使用的是yum或者apt-get,也就是包管理安装,没有编译安装。

相关配置参考:https://segmentfault.com/a/1190000019622293

https://www.cnblogs.com/tuyile006/p/12819302.html

我本机运行着几个服务,因此有几个对外端口,域名是A.com,并且这个域名到期可能就不会再用了,因此图床网站要放在一个一直续费的域名上的子域中,pic.B.com

那么直接使用反向代理80,443端口即可。

Nginx的配置文件在

/etc/nginx/nginx.conf

打开上面文档后发现具体配置是”sites-available“文件夹中的“default”

server {
    listen 80;
    server_name  XXX.com;
    return 301 https://XXX.com$request_uri;
}

server {
    listen 443 ssl;
    gzip on;
    server_name  XXX.com;

    ssl_certificate /usr/local/nginx/ssl/XXX.com.cer;
    ssl_certificate_key /usr/local/nginx/ssl/XXX.com.key;

    access_log /var/log/nginx/pic.log combined;
    error_log  /var/log/nginx/pic.log;

    location / {
        proxy_redirect off;
        proxy_pass http://127.0.0.1:8080;

        proxy_set_header  Host                $http_host;
        proxy_set_header  X-Real-IP           $remote_addr;
        proxy_set_header  X-Forwarded-Ssl     on;
        proxy_set_header  X-Forwarded-For     $proxy_add_x_forwarded_for;
        proxy_set_header  X-Forwarded-Proto   $scheme;
        proxy_set_header  X-Frame-Options     SAMEORIGIN;

        client_max_body_size        100m;
        client_body_buffer_size     128k;

        proxy_buffer_size           4k;
        proxy_buffers               4 32k;
        proxy_busy_buffers_size     64k;
        proxy_temp_file_write_size  64k;
    }
}

首先第一块server中把80端口进行跳转,都转到https上,然后配置443端口,把证书存放的位置指一下,log日志文件位置指一下,然后在proxy_pass中指出服务容器的端口,这样访问就会直接跳转了。

最后要解除上传2M的限制。

docker ps -a

查看下容器的ID,复制容器的配置文件到本地(3dec77ff864f)为容器id

docker cp  3dec77ff864f:/var/www/html/.htaccess /root/

然后编辑文件,添加

php_value post_max_size 24M
php_value upload_max_filesize 10M

在”“之前。

然后把改好的配置文件重新传回容器中。

docker cp /root.htaccess 3dec77ff864f:/var/www/html/

然后在网站仪表盘设置中修改上传图片大小即可。

退出移动版