个人图床Chevereto搭建全记录
部署Docker版Chevereto,博客图片再也不会丢链了
前言
开始写博客了,发现图片存放是个问题,尝试了七牛云、又拍云,速度都不错,也在typora上使用PicGo通过api实现这两个的自动上传,但最后还是决定自己在服务器搭建图床。
找了挺久,本来在找到 auxpi 这个项目,由go编写的,聚合好几个图床,但是在服务器上部署后通过配置的端口访问不到它的页面,也懒得去找原因了,后面又找到chevereto这个项目,由PHP写的,下面我们开始通过他的官方镜像部署到服务器
docker部署
拉取镜像
docker pull nmtan/chevereto
这个是官方镜像,具体使用说明可参照 dockerhub -> nmtan/chevereto
部署
docker run -it --restart=always --name chevereto -d \
--link mysql:mysql \
-p 7480:80 \
-v "/data/chevereto/images":/var/www/html/images \
-e "CHEVERETO_DB_HOST=172.17.0.1" \
-e "CHEVERETO_DB_USERNAME=root" \
-e "CHEVERETO_DB_PASSWORD=xxxxxxxxxx" \
-e "CHEVERETO_DB_NAME=chevereto" \
-e "CHEVERETO_DB_PREFIX=chv_" \
nmtan/chevereto
部分参数解释
option | description |
---|---|
-v “/data/chevereto/images”:/var/www/html/images | 持久化存储,将容器内的images文件夹同步到宿主机的images文件夹中 |
CHEVERETO_DB_HOST | 连接MySQL的ip |
CHEVERETO_DB_USERNAME | MySQL用户名 |
CHEVERETO_DB_PASSWORD | 登录密码 |
CHEVERETO_DB_NAME | 数据库名称 |
CHEVERETO_DB_PREFIX | 表前缀 |
这里需用到mysql容器,如没安装的可执行
docker run -itd --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=password mysql
默认用户是root,密码由上设置
数据库需自己创建,表则会自动创建
连接的mysql host应是docker的虚拟化ip,可通过语句查看
ip addr show docker0
# 得到的返回结果中,此处为ip
inet **172.17.0.1**/16 brd 172.17.255.255 scope global docker0
站点设置
初始化
部署没有问题的话,访问站点ip:port可如下界面
按需填写内容,website mode选择personal
中文设置
中文设置可在setting中修改
配置图片上传限制大小
chevereto默认图片上传最大不能超过2MB,因此需要我们进行参数设置
首先将容器内的***.htaccess***文件拷贝到宿主机docker cp chevereto:/var/www/html/.htaccess /home/
接着在宿主机对拷贝的文件进行修改,在ServerSignature Off
行下添加如下代码
php_value post_max_size 24M # post限制
php_value upload_max_filesize 10M # 文件上传限制
max_execution_time 120 # 执行时间限制
具体值可自定义
然后重启容器
docker restart chervereto
接着还需在前台设置里面修改图片上传最大限制,在仪表盘中选择如下,可见上传限制已经修改成功
修改最大上传文件大小并保存
若上传大图片出现***Server error (Internal server error)***的错误,可能是代理出现问题,例如我使用nginx进行代理,则在nginx.conf 中的http结构中添加
client_max_body_size 100m;
client_body_temp_path /tmp;
之后重启nginx,其他代理应用可能也是相同类型的问题,具体可自行百度(谷歌)
至此初始化设置基本结束,后续一些设置可以自己探索
将chevereto作为typora图床使用
我写博客实在windows下用typora写的,现在可以将图片上传到图床,这里使用PicGo配置chevereto图床
获取api和相册ID
api同样在仪表盘中
相册ID则在相册详情中的详细信息里
保存两者后面会用到
设置chevereto api upload 用户及相册
chevereto默认api上传相册是不可见的,且上传用户为guest,这里先修改用户及相册
首先进入容器docker exec -it chevereto /bin/bash
将route.api.php复制到同级的overrides文件夹中,overrides文件夹中的文件会替换同名文件运行
cp app/routes/route.api.php app/routes/overrides/
接着修改overrides中的route.api.php文件
找到$uploaded_id = CHV\Image::uploadToWebsite($source);
这一行
将其替换为$uploaded_id = CHV\Image::uploadToWebsite($source, '用户名', array('album_id'=>相册ID));
记住这里用户名和相册ID需做好修改,保存退出后重启容器
安装PicGo及其插件
通过 PicGo官网 下载并安装,由core版本和app版本,core为命令行操作,这里仅用app版本做演示
搜索并安装Chevereto Uploader插件
设置PicGo
设置Chevereto Uploader
填入图床域名和刚才找到的api key
url的格式为
http(s)://你的域名/api/1/upload
,不可省略哪一部分
其他参数可不填,将其设为默认图床,并点击确定
接着上传图片尝试一下
typora设置
在文件–偏好设置中选择图像,插入图片时选择上传图片,下面五个选项可根据需要勾选,上传服务选择PicGoapp,之后可以点击验证按钮上传图片验证一下,自此就已经成功地将chevereto配置为typora的图床了
后记
整个搭建及配置过程中遇到了不少问题,比如代理配置问题、图片上传大小限制,解决方案都已经融合到教程里面了,其实域名绑定配置部分我没写进去,是因为这一部分也算是比较独立的,以后会出相关教程