起因:
博客目前使用的MWeb来生成静态文件,每次写完博客上传的时候,操作路径都很繁琐,需要先打包,再使用ftp工具上传,然后登录服务器解压缩。过程耗时且麻烦。 而MWeb提供了自动化脚本功能,期望期望生成html后自动部署博客到阿里云服务器上,不需要再手动压缩,上传,解压缩的过程。
实践:
Mweb提供了自动化脚本的功能:
在网站目录上点击右键,选择编辑-->高级设置-->发布脚本 即可编辑自动化部署脚本
部署脚本很简单,可以直接使用下方脚本即可。
#!/bin/bash
# SFTP配置信息
# IP
IP=服务器IP
# 端口
PORT=22
# 用户名
USER=服务器用户名
# 密码
PASSWORD=服务器密码
# 需要上传的文件所在目录,博客的本地文件所在路径
CLIENTDIR=/Users/zhangzhonghua/Documents/坚果云/我的坚果云/MWebSite/张二蛋博客
# 上传到目标服务器的目录,博客的服务器路径
SEVERDIR=/wwwroot/xxxxxx
# 临时目录
TMP_DIR=/opt/tmp/blog
cd ${TMP_DIR}
cp -rf ${CLIENTDIR}/* .
FILENAME="htmls.zip"
#压缩当前博客文件
zip -b${TMP_DIR} -r ${FILENAME} *
# 上传文件到服务器
lftp -u ${USER},${PASSWORD} sftp://${IP}:${PORT} <<EOF
cd ${SEVERDIR}/
lcd ${TMP_DIR}
put htmls.zip
by
EOF
# 服务器执行解压缩
ssh ${USER}@${IP} "cd ${SEVERDIR}; unzip -o ${FILENAME}"
# 完成部署
脚本填写完之后,后续部署即可通过: 右键--> 复制发布脚本命令并打开终端
然后使用终端,粘贴命令,直接回车即可部署。
过程:
操作方式很简单,但需要提前准备下环境:
- 上传过程使用的是lftp + sftp上传方式,所以需要先安装lftp。
- ssh远程执行服务器上的unzip命令,需要首先建立电脑与服务器的互信免登陆。
具体操作方式如下:
- 安装lftp
使用命令:sudo port install lftp
即可安装。
备注:port命令为MacPorts命令,MacPorts和apt-get、yum类似,用于在mac上安装些软件, 安装方式见:https://www.macports.org/install.php
- ssh设置与服务器互信免登陆
#### 生成密钥,一路回车即可。
ssh-keygen -t rsa -b 2048
### 拷贝密钥文件到服务器
ssh-copy-id 用户名@服务器IP
然后使用ssh 用户名@服务器IP
登录服务器试试看看,如果可以免密码登录,则证明已经设置成功。 如果仍需要密码,则往下看。
CentOS默认公钥登陆关闭状态需要开启,一般情况下,如果登录不成功,可确认下是否是公钥登录未开启。
## 编辑ssh的配置文件
vim /etc/ssh/sshd_config
##设置以下内容:
RSAAuthentication yes
PubkeyAuthentication yes
#AuthorizedKeysFile .ssh/knownhost
重启ssh
service sshd restart
备注: 不同版本Centos命令不同。可关注。 参见:https://www.cyberciti.biz/faq/how-do-i-restart-sshd-daemon-on-linux-or-unix/
重试 ssh 用户名@服务器IP
即可登录。
参考:
-
ssh远程:https://unusebamboo.top/protocol/protocol-ssh-command/
-
ssh免登陆设置
-
MacPorts安装:https://www.macports.org/install.php