配对本地和服务器的密钥
前提:服务器安装好git工具和nginx服务器,本地安装好git工具,配置好hexo
生成本地密钥
本地终端运行命令ssh-keygen -t rsa
然后连续回车,会生成公钥存储到C…/user/.ssh文件夹里,pub结尾的公钥要用到
服务器增加git用户并给其权限
$ yum install git #没安装git的运行命令安装
$ adduser git #创建一个用户git
$ sudo passwd git #设置git用户密码
$ chmod 740 /etc/sudoers #修改文件权限为用户可读写执行
$ vim /etc/sudoers #编辑文件
root ALL=(ALL) ALL #找到这里,在下面添加git用户的权限
git ALL=(ALL) ALL
$ chmod 400 /etc/sudoers //保存退出改回权限
创建密钥文件
$ su git #切换git用户
$ mkdir ~/.ssh #创建.ssh文件夹
$ vim ~/.ssh/authorized_keys #创建authorized_keys文件
# 它们是密钥文件是隐藏的,文件管理器直接看不到,但是可以访问/root/.ssh路径来看到文件或者cd /root/.ssh ls来查找
# 然后将win10中生成的id_rsa.pub文件里的公钥复制到authorized_keys文件中,vim右键粘贴,不要用ftp管理器打开文件粘贴
$ chmod 600 /home/git/.ssh/authorized_keys #将文件设置为可读可写
$ chmod 700 /home/git/.ssh #将该文件夹设置为可自由访问
测试git连接
本地终端输入命令ssh -v git@服务器ip
,测试是否能不用输入服务器git用户密码就可以连接(我是后来才可以免密连接的)
第一步不成功也没事,就是每次部署需要密码来连接
服务器创建仓库
$ mkdir /var/repo #创建一个仓库目录,后面存放git裸库
$ chown -R git:git /var/repo #变更该目录的所有者,注意是chown
$ chmod -R 755 /var/repo #让该目录权限开放,可读写执行
$ mkdir /var/www/hexo #创建一个目录作为网站根目录存放网站静态文件
$ chown -R git:git /var/www/hexo #变更该目录的所有者为git用户
$ chmod -R 755 /var/www/hexo #开放权限
#nginx我用宝塔部署nginx直接创建该站点了,后期也可以方便管理站点
#也可以找到/etc/nginx的配置文件nginx.conf,设置里面的网站根目录
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
root /var/www/hexo;
index index.html index.htm;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
location / {
}
建立git裸库
$ cd var/repo
$ git init --bare hexoBlog.git #创建裸库,但里面不是没有内容
$ vim /var/repo/hexoBlog.git/hooks/post-receive #在hooks目录下新建一个新的钩子文件 post-receive并vim编辑
#vim编辑(按i)然后粘贴下面两句,window的粘贴模式可能会不一样
#!/bin/bash
git --work-tree=/var/www/hexo --git-dir=/var/repo/hexoBlog.git checkout -f
#该钩子的意思是当本地有提交到服务器时,会将文件放在网站根目录
$ chown -R git:git /var/repo/hexoBlog.git/hooks/post-receive
$ chmod +x /var/repo/hexoBlog.git/hooks/post-receive
配置Hexo站点文件
滑到最下面
# Deployment
## Docs: https://hexo.io/docs/deployment.html
deploy:
type: git
repo: git@服务器IP:/var/repo/hexoBlog.git #这个裸库单纯用来连接
branch: master
写在最后
这次部署流畅参照了下面这两篇博文,上面笔记记得这么详细主要在于它们两篇博客都有相同的错误——单词写错,而且还是错同一处…第二篇命令介绍写得详细,但在配对密钥的步骤那里好像错了,这两处错误害!掉了好些时间!
https://www.jianshu.com/p/0f9dfa9c141b
https://blog.csdn.net/weixin_41154636/article/details/99685965