为服务器创建Git账户发布Hexo博客内容

为服务器创建Git账户发布Hexo博客内容
老刘博客做Hexo博客有一个避免不了的问题,就是如何更快更好地发布到网站上,因为Hexo是本地静态博客,发布到网站上就需要与服务器链接,常见的链接种类很多但是最常用的还是Git链接,毕竟安全有效,可问题如果使用Git链接发布,就需要给服务器创建Git用户并给与相关的权限。
今天这篇文章,主要是介绍如何给服务器创建Git账户,和利用宝塔面板创建hexo博客网站。
1.配置SSH
配置SSH密钥,实现免密登录(首次提交时仍需要验证密码),如之前配过可跳过此步。首先是使用本地的Git软件,桌面右键选择Git Bash Here
1 | $ ssh-keygen -t rsa -C "邮箱地址" |
设置好邮箱之后,就是连续敲回车确定,然后看到提示秘钥以保存在本地的xxx/用户/xxx路径下,如果没有出现提示就多敲几次回车,在提示路径下找到id_rsa文件,记住复制文件内容,下面配置Git时会用到。下图是使用服务器登录对话框创建公钥,同样需要记住公钥生成的文件路径,准备复制。
如果使用的服务器的SSH链接,这个文件路径是服务器的路径,此时复制文件内容的过程,可以借助提前安装好的宝塔面板来实现,可以在宝塔面板左侧边栏中找到“文件”,进入根目录文件夹之中,按照文件路径查找对应文件,双击打开之后复制里面的内容。
2.配置Git
如果没有特别说明,安装过程中如有出现选择,一律选择yes(y),(即输入yes(y)然后点击回车)
点击登录,在弹出的面板中输入以下代码,切换到root用户
1 | # sudo su root |
3.安装Git
1 | # yum install git |
这个过程不需要过多的操作,如果已经安装过Git,出现的提示可以借助SSH的提示进行解释,安装过或者安装之后,可以查看Git版本
1 | git --version |
如果有对应提示,则表示安装成功,如果已经安装过版本低,可以使用以下代码查看信息
1 | git help |
或者使用下面的代码进行升级
1 | sudo apt upgrade git |
实在有问题的话,可以使用下面的代码进行清除,然后重新安装。
1 | Ubuntu/Debian:sudo apt-get purge git |
1 | Fedora:sudo dnf remove git |
1 | CentOS:sudo yum remove git |
1 | Arch Linux:sudo pacman -R git |
顺便做一下记录,停止相关服务使用命令:
1 | sudo systemctl stop git |
以上命令需于鏊根据实际服务名称调整,在解决不了问题,就需要咨询空间商进行商议,询问问题出在哪里,然后在进行安装。
4.配置Git
创建git账户,并修改权限,这个过程只需要按照下面的步骤复制粘贴代码进行操作就可以
1 | # adduser git |
1 | chmod 740 /etc/sudoers |
第二段代码的意思,是将etc文件夹下面的sudoers文件权限修改为740方便我们在里面添加Git账户,修改完权限之后,进入文件对其进行编辑
1 | # vim /etc/sudoers |
点击键盘“i”建进入编辑模式,然后通过方向键对文件进行编辑,在里面找到root ALL=(ALL) ALL在其下方以相同格式添加git ALL=(ALL) ALL
1 | root ALL=(ALL) ALL |
点击Esc后输入:wq,保存退出,然后将文件改回权限
1 | # chmod 400 /etc/sudoers |
5.重置Git密码
1 | # sudo passwd git |
密码输入过程中不会显示,输完后直接回车即可,输入两次,密码需要包含大写加小写字母加数字,添加账户时不使用大写字母,也可以设置成功,密码文本可以提前设置好。
6.配置SSH
切换为git用户,配置SSH
1 | # su git |
1 | $ mkdir ~/.ssh |
1 | $ vim ~/.ssh/authorized_keys |
切换到git账户,然后利用mkdir命令在当前用户主目录下创建.ssh文件夹,我测试时这个目录在根目录/home/git文件夹中找到.ssh文件夹,在.ssh文件夹里创建并打开authorized_keys文件,在打开的文件中,点击键盘“i”建进入编辑模式,然后通过方向键编辑,将本地或者服务器生成的id_rsa.pub文件公钥复制进去,需要注意的是,如果之前配置过SSH,建议将同路径下的known_hosts文件删除,否则可能会报错,点击Esc后输入:wq保存退出
7.赋予权限:
1 | $ chmod 600 /home/git/.ssh/authorized_keys |
1 | $ chmod 700 /home/git/.ssh |
这两段代码,就是把authorized_keys文件权限修改为600,把.ssh文件夹权限修改为700,从这里可以看出,git用户默认主目录根目录/home/git文件夹。
8.测试连接
在本地使用Git测试是否配置成功,桌面右键Git Bash Here,在里面输入
1 | $ ssh -v git@服务器ip |
服务器ip为你的服务器公网ip,执行过程中出现选择,一律选择yes,如果执行过程中需要输入密码,就输入设置好的git账户密码,如果过程中无报错,即为配置成功。有教程说不需要输入Git密码,估计是版本问题,我本地测试时需要输入设置好的Git密码。
因为教程写的时间比较长,服务器版本更新迭代的比较快,每个大商家服务器系统也不同,所以连接成功之后出现的欢迎信息也不同,和Git窗口底部出现账户连接样式。如果连接不成功的话,就看一下自己本地电脑的用户名文件夹里的.ssh文件夹,把里面的known_hosts文件删除之后在进行测试,基本上就连接成功。
9.创建Git仓库
切换回root用户
1 | $ sudo su root |
为Hexo博客创建一个目录,赋予所有权限并设置所有者为git
1 | # mkdir /home/hexo |
1 | # chown -R git:git /home/hexo |
1 | # chmod -R 755 /home/hexo |
在服务器根目录的home文件夹中穿件hexo文件夹,修改hexo文件夹的所有者位git,权限位755,注意这个hexo文件夹是博客目录,想把博客目录设置在其他路径下,就需要修改mkdir指令后面的文件夹目录为自己的文件夹目录,例如
1 | # mkdir /www/wwwroot/hexo |
1 | # chown -R git:git /www/wwwroot/hexo |
1 | # chmod -R 755 /www/wwwroot/hexo |
如果你创建的目录文件夹已经存在,就会提示相关的错误,此时可以借助rm命令代码将其删除
1 | rm [-r -f] 参数...参数 |
参数:支持多个,每一个表示被删除的,空格进行分隔
选项:-r,删除文件夹使用
选项:-f,强制删除,不会给出确认提示,一般root用户会用到
在这里需要注意,使用rm命令很危险,特别是切换到root用户的时候,慎重之慎重在敲下回车,要注意做好相关文件的备份工作,避免丢失信息,
10.配置git仓库
1 | # mkdir /home/repo |
1 | # cd /home/repo |
1 | # git init --bare hexo.git |
用mkdir命令在home文件夹里创建repo文件夹,然后进入repo文件夹,在里面创建一个名为 hexo.git 的裸Git 仓库,作为远程中心仓库供 push/pull,但是这个仓库不提供工作区,不能直接在此目录进行 commit/checkout 等日常操作。裸仓库的根目录直接包含 HEAD、config、objects、refs 等版本库内容,常用于部署与协作。需要自己修改路径的,可以对应修改路径,例如
1 | # mkdir /www/wwwroot/repo |
1 | # cd /www/wwwroot/repo |
1 | # git init --bare hexo.git |
此时创建的博客目录hexo和repo是同级目录,也就是两个文件夹并列存在,至于大家修改成最后什么样看自己喜好,但是路径一定要设置好,避免和其他网站发生冲突。
11.创建Git钩子
1 | # vim /home/repo/hexo.git/hooks/post-receive |
点击键盘i建进入编辑模式,然后通过方向键编辑,将以下代码复制进去
1 | #!/bin/bash |
需要注意的是,里面的博客目录hexo和裸git仓库repo一定要修改成自己设置的路径,例如我的路径
1 | #!/bin/bash |
点击Esc后输入:wq保存退出,然后接着修改权限
1 | # chown -R git:git /home/repo/hexo.git/hooks/post-receive |
1 | # chmod +x /home/repo/hexo.git/hooks/post-receive |
第一代码是修改用户组和用户,第二行代码是修改文件权限,同样注意将路径修改为自己博客的路径。修改git仓库的所有者为git
1 | # chown -R git:git /home/repo |
写到这里,git账户就创建好了,修改Hexo配置文件中的推送地址
1 | repo: git@域名或IP:/home/repo/hexo.git |
如果你会安装网站,且已经安装好网站,此时我们就可以使用Hexo的发布命令进行测试。如果不会创建网站,接着向下看。
12.安装宝塔面板
可以使用通用脚本安装
1 | if [ -f /usr/bin/curl ];then curl -sSO https://download.bt.cn/install/install_panel.sh;else wget -O install_panel.sh https://download.bt.cn/install/install_panel.sh;fi;bash install_panel.sh ssl251104 |
准确一些,清除自己服务器是那种镜像的,例如Centos/OpenCloud/Alibaba,可以使用
1 | url=https://download.bt.cn/install/install_panel.sh;if [ -f /usr/bin/curl ];then curl -sSO $url;else wget -O install_panel.sh $url;fi;bash install_panel.sh ssl251104 |
Debian镜像系统
1 | wget -O install_panel.sh https://download.bt.cn/install/install_panel.sh && bash install_panel.sh ssl251104 |
Ubuntu/Deepin镜像系统
1 | wget -O install_panel.sh https://download.bt.cn/install/install_panel.sh && sudo bash install_panel.sh ssl251104 |
大家可以参照宝塔的官方,进行相关指导安装。
安装过程中出现的选择问题,一律选择yes或者y
安装成功之后,一定要保存好给出的宝塔面板登录信息,包括地址、账户、账户密码,这些是日后经常用的信息。如果忘记宝塔账号密码可以输入以下指令查看账号密码(需要在root用户下)
1 | # cd /www/server/panel && python tools.py panel testnamewd |
1 | # cd /www/server/panel && python tools.py panel testpasswd |
或者直接进入宝塔目录,用指令进行操作
1 | # cd /www/server/panel |
1 | # bt |
进入宝塔面板后,按照提示安装Nginx
上面的一些网站环境,对于Hexo来说除了Nginx其他用不到,例如MySQL数据库和PHP环境,Ftp可能会用到,不想安装就可以不安装。
13.添加站点
宝塔面板点击网站,选择添加站点,输入域名,根目录设为/home/hexo,也就是前面预设的博客目录,php版本选择纯静态,
点击提交之后,别忘了将域名解析到服务器,
14.本地配置
修改Hexo配置文件中的推送地址,一般在本地Hexo博客文件中的_config.yml文件中
1 | repo: git@域名或IP:/home/repo/hexo.git |
注意指向自己的裸Git仓库地址。如果Git配置失败,可以尝试使用root推送:
1 | repo: root@域名或IP:/home/repo/hexo.git |
然后,将本地仓库与远程仓库关联:
1 | $ git remote add origin git@服务器IP:/home/repo/hexo.git |
最后三连(hexo clean && hexo g && hexo d)上传,输入域名访问即可
15.添加SSL证书
为网站设置SSL证书并强制HTTPS,但是开启HTTPS时需要放行443端口。大家可以去服务器账号里添加设置安全组,宝塔面板同样需要放行443端口。
放行443端口之后,在宝塔面板点击网站,找到刚才添加的站点,点击设置,选择SSL,可以在这里免费申请Let's Encrypt免费三个月的SSL证书,如果你已有证书的话,点击其它证书,将你的证书复制进去,点击保存,将右上角的强制HTTPS开启,至此完成所有步骤。
16.添加404界面
修改nginx.conf的server项,或者直接在宝塔面板的目标站点操作,添加如下代码:
1 | #开启error_page |
17.后记错误
hexo d 时known_hosts报错,提示冲突
解决方法:根据报错给出的地址,找到known_hosts文件,因为我这里是第三行报错,所以就直接把known_hosts文件第三行删除即可
hexo -d时报错:
1 | ! [remote rejected] HEAD -> master (unpacker error) |
这种情况多半是目录所有者不是git,解决方法就是设置Hexo仓库目录所有者为git,设置博客目录的所有者为Git
1 | # chown -R git:git /home/hexo |
设置git仓库目录所有者为git:
1 | # chown -R git:git /home/repo |
然后再上传;如果还是不行,建议使用root推送,在hexo配置文件中修改:
1 | repo: root@域名或IP:/home/repo/hexo.git |
如何判断文件夹所有者是否正确呢?回到/home目录,查看git仓库和hexo仓库的文件夹所有者:
1 | # cd /home |
1 | # ll |
正常情况可以看到git仓库和hexo仓库的文件夹所有者全为git
如果在权限或者所有者问题上,还是有令人费解的问题,就看一看自己的服务器是否安装过保护类插件,把所有防护类插件关闭或者卸载之后在进行安装,重新进行权限的设置。好了,今天的教程就到这里,后续问题会陆续在这篇文章进行更新。
写在最后:大家可以参与下面的两篇文章


















