Nginx+PicGo建立图床【Docker部署Nginx】
你必须要有:一台云服务器
以前是使用Typora写MarkDown笔记都是保存在本地,后来也有了像网上大部分开发者那样将笔记上传到自己部署的博客上面的想法。我是使用HALO部署的博客,远程使用这个博客的编辑器感觉到很卡,就想着安装插件直接上传到HALO上面。
接着遇到新的问题,MarkDown的图片都保存在本地,直接上传图片不会随着一起上传,上传的笔记无法访问图片,但是Typora导出的其他格式的文件目前HALO不支持上传。恰好看到B站UP的一个视频,第一次了解到图床这个概念,也从他这了解到如何通过Nginx部署一个图床。
UP主的视频链接:【把Github当成图床不太道德,干脆用Nginx做个图床】
Gitee貌似也禁用图床。
1. Docker部署nginx
1.1 拉取镜像
docker pull nginx
默认拉去tag为latest的nginx镜像
1.2 启动镜像,拷贝文件
如果你觉得麻烦,可以在本地下载好nginx,然后把相应的文件设置好,然后拷贝到云服务器上的以下目录中。
在你喜欢的目录下创建以下目录,我的是usr/niginx
mkdir usr/nginx/conf # 存放配置文件
mkdir usr/nginx/html # 静态资源
mkdir usr/nginx/log # 存放日志
mkdir usr/img # 以后存放图片
启动容器,然后拷贝文件
# 启动容器
docker run -d --name nginx -p 80:80 nginx
# 拷贝容器当中的文件到宿主机
dockers cp nginx:/etc/nginx/nginx.conf usr/nginx/conf/nginx.conf
dockers cp nginx:/etc/nginx/conf.d usr/nginx/conf/conf.d
dockers cp nginx:/usr/share/nginx/html usr/nginx/html
# 关闭容器
docker stop nginx
# 删除容器
docker rm nginx
配置文件,打开nginx.config
- 如果你有购买域名,把
server_name
设置为你的域名就行 /usr/img/
是代理到容器当中的这个位置- 上传后你就可以通过
ip/img/图片名字
获取图片,如果有域名就是域名/img/图片名
1.3 启动容器
docker run -d \
--name nginx \
-p 80:80 \
-v /usr/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /usr/nginx/html:/usr/share/nginx/html\
-v /usr/nginx/log:/var/log/nginx \
-v /usr/nginx/conf.d:/etc/nginx/conf.d \
-v /usr/img:/usr/img \
nginx:latest
[!NOTE]
就算容器当中没有
usr/img
也没事,Docker会为我们在容器中创建
2. 下载并设置PicGo
PicGo是一个文件上传工具,在GitHub中下载
2.1下载PicGo
选择适合你的版本,然后按步骤安装即可
2.2安装sftp插件
2.3在config.json中设置
- PicGo上传后返回的地址是:URL+Path
- uploadPath:上传到服务器的路径
- username:ssh连接的用户名
- password:ssh连接的密码
- 如果你有域名,url和host:设置为你的域名即可。没有域名就写服务器的公网IP
其他参数说明,更详细的可以查看插件的文档
上一步插件安装好之后,就会有一个SFTP设置
3.设置Typora
设置好之后,可以点击验证图片上传选项测试是否能正常上传
这样就可以将本地图片直接粘贴到md文件中,Typora会帮我调用PicGo然后上传文件,并且返回我们设置好的文件链接。
直接从剪切板粘贴的图片Typora无法上传到图床,需要我们先保存到本地,然后粘贴到md文件当中。
如果有朋友知道怎么能让Typora直接上传剪切板粘贴的图片,可以在评论区说说
但是PicGo可以直接上传剪切板中的图片。
4.使用TinyPng压缩文件
如果你的图片太大了,为了节省空间你可以使用TinyPng压缩一下文件