文章目录
- Typora安装PicGo+云服务器搭建图床
- 1、前言
- 2、建立sftp用户
- 3、配置Nginx
- 4、安装PicGo
- 4.1、安装
- 4.2、使用
- 4.2.1、下载插件
- 4.2.2、配置插件
- 4.2.3、上传
- 5、配置Typora
- 6、小结
Typora安装PicGo+云服务器搭建图床
1、前言
目前大部分人都采用Markdown语法写博客,平时图片都是存在本地,当博客发布到服务器上时,图片无法限制。这时候我们就需要用到图床,这里介绍一种利用PicGo和云服务器搭建私有图床的方案。
2、建立sftp用户
出于安全原因,我们专门给图床应用建立一个单独的用户,禁止该用户通过ssh登录,同时也不建立家目录。
创建sftp组
groupadd sftp
创建sftp用户,同时添加到刚才的组,以及禁止登录
useradd -g sftp -s /sbin/nologin sftpuser
给用户sftpuser设置密码
passwd sftpuser
创建目录
mkdir -p /data/sftp
确保该目录及该目录以上的系统根目录的拥有者都只能是root用户,
给目录设置用户
chown root:sftp /data/sftp
给目录设置写入权限
chmod 755 /data/sftp
该目录权限最大为755,设置成777会报错
创建用户sftpuser根目录,目录名为用户名
mkdir /data/sftp/sftpuser
# 设置sftpuser目录权限
chown -R sftpuser:sftp /data/sftp/sftpuser
chmod -R 755 /data/sftp/sftpuser
配置sshd_config
vi /etc/ssh/sshd_config
修改如下内容,并保存退出
# 注释掉这行
# Subsystem sftp /usr/libexec/openssh/sftp-server
并在文件最后面添加以下配置
# 指定使用sftp服务使用系统自带的internal-sftp
Subsystem sftp internal-sftp
# 匹配用户,如果要匹配多个用户,多个用户之间用逗号分割
Match User sftpuser
# 指定该账户的根目录
ChrootDirectory /data/sftp/
# 下面这两行,如果不希望该用户能使用端口转发的话就加上,否则删掉
X11Forwarding no
AllowTcpForwarding no
# 指定sftp命令
ForceCommand internal-sftp
说最后面是因为,该文件通常末尾还有Ciphers配置,Ciphers配置需要在该配置之前
刷新配置
systemctl restart sshd.service
sftpuser用户登录测试
sftp -oPort=22 sftpuser@127.0.0.1
登录成功如下图:
3、配置Nginx
前面我们建好了我们图片上传的目录/data/sftp/sftpuser
,图片上传之后我们需要能被Typora或博客能访问到,我们给该目录配置一个访问域名,我们这里采用https二级域名访问。
之所以要采用https域名是,在很多你要发布博文的网站,如果不采用https域名,会无法加载图片。
我假定目前你已经具备了如下条件:
- 已部署nginx
- 已有域名及相应的SSL证书
如果没有,可以参考博主的其它文章准备。
修改nginx配置文件nginx.conf
,增加如下配置
server {
listen 80;
# 二级域名
server_name img.xing.com.cn;
#核心代码
rewrite ^(.*)$ https://${server_name}$1 permanent;
}
server {
listen 443 ssl;
# 二级域名
server_name img.xing.com.cn;
# ssl证书
ssl_certificate xing.com.cn.crt;
ssl_certificate_key xing.com.cn.key;
# ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
location / {
root /data/sftp/sftpuser/;
index index.html index.htm;
}
}
请把img.xing.com.cn
换成你的域名,xing.com.cn.crt
、xing.com.cn.key
换成你的ssl证书。
然后重启nginx。
此时可以上传一张图片到前面创建的 /data/sftp/sftpuser/
文件夹下,通过 域名/图片名
即可访问。
4、安装PicGo
4.1、安装
GitHub下载地址:https://github.com/Molunerfinn/PicGo/releases
选择相应的系统和位数下载即可
双击exe文件进行安装,一直默认即可(也可以自定义安装目标文件夹)。
4.2、使用
4.2.1、下载插件
打开PicGo,在左侧选择[插件设置],搜索sftp
,
安装sftp-uploader 1.3.0
4.2.2、配置插件
插件安装完成后,点击左侧[图床设置]->[SFTP 上传]进行配置。如图:
网站标识:随意定义
配置文件:为 SFTP 配置文件的路径,设置任意你想放置的路径。
点击[确定]和[设为默认图床]。
按上面设置的配置文件路径创建配置文件(我的是D:/config/MyPicBed.json
),设置如下内容:
{
"MyPicBed": {
"url": "https://img.xing.com.cn",
"path": "/uploads/{year}/{month}/{hash16}_{fullName}",
"uploadPath": "./sftpuser/uploads/{year}/{month}/{hash16}_{fullName}",
"host": "106.*.*.*",
"port": 22,
"username": "sftpuser",
"password": "password"
}
}
MyPicBed
:网站标识
url
:图片网站的域名
path
:图片在网址中的路径,即网站根目录下的路径
uploadPath
:图片在服务器的真实路径
host
:SSH 地址
port
:SSH 端口
username
:SSH 用户登录用户
password
:SSH 用户登录密码
详细配置文件说明请参考https://github.com/imba97/picgo-plugin-sftp-uploader
4.2.3、上传
点击左侧[上传区]
选择SFTP上传
,上传文件后,可以在文件服务器看到上传的文件:
此时也可以通过浏览器域名访问,浏览刚才上传的文件:
此时,PicGo已经配置完成。
5、配置Typora
在 Typora 中打开菜单[文件]->[偏好设置…],
在偏好设置界面左侧点击[图像],
插入图片时…选择上传图片
上传服务设定选择 PicGo (app)
,同时选择本地安装的 PicGo.exe 文件。
可以点击验证图片上传选项,验证是否能正常上传,和获取的url是否正确。
这样在 Typora 插入图片时即可自动上传到服务器上
6、小结
恭喜你,完成了自建图床!!!!!!