Hexo自驾服务器教程
Hexo自驾服务器教程
一、自驾服务器环境搭建
安装 git、nginx
Git 用于版本管理和部署,Nginx 用于静态博客托管。
1 | [root@10-7-89-87 ~]# yum install git nginx -y |
添加用户并创建密码
1 | [root@10-7-89-87 ~]# adduser git |
创建git仓库
进入 /srv目录(如果有)或者自己定义在/var下面等,
1 | # 创建目录 |
添加一个web服务目录
拥有者改为git用户,增加git全仅限
1 | [root@10-7-89-87 repo]# mkdir -p /srv/www/hexo |
给blog.git添加添加Hooks
Hook 就是在执行某个事件之前或之后进行一些其他额外的操作
1 | [root@10-7-89-87 repo]# vim /srv/repo/blog.git/hooks/post-receive |
添加
1 | #!/bin/sh |
然后保存退出,并设置权限
1 | [root@10-7-89-87 repo]# chmod +x /srv/repo/blog.git/hooks/post-receive |
二、配置与测试
服务器配置公钥
1 | # 先切到git用户,这个公钥是给git用户配置的 |
客户端创建密钥和git测试
客户端可能是windows或者其它,生成公钥和私钥后,把公钥添加到服务器的authorized_keys
ssh-keygen.exe
文件在安装git后就会有,在如C:\Program Files\Git\usr\bin\ssh-keygen.exe
这样的路径,如果添加了环境变量则直接执行即可
1 | # 当前为wondows平台,在命令行运行 |
然后到客户端的C:\Users\Administrator/.ssh/
下查看,会看到有两文件
1 | id_rsa.pub |
其中id_rsa.pub
就是公钥,相当于锁子,私钥相当于钥匙,都要保存好
将id_rsa.pub
用记事本打开并全部复制,再在服务器上以git用户登录
1 | [git@10-7-89-87 ~]$ vim .ssh/authorized_keys |
再客户端测试当前搭建的git服务器是否正常,打开命令行
1 | # 当前为wondows平台,创建一个MyBlogDic目录并拉取blog.git |
如果能拉下来东西,则说明配置正常,但可能有你有老的内容没清的话会有报错如下
1 | Add correct host key in /c/Users/Administrator/.ssh/known_hosts to get rid of this message. |
原因是运行第一次通过ssh去连接远程服务器的时候生成了一个认证信息,存储在客户端上。更换了远程服务器的系统之后(服务器远程重装系统了),需要更新我们的认证信息,否则会报错
1 | # ssh-keygen -R 服务器地址 |
再做一次提交测试
1 | D:\MyBlockDoc>cd blog |
服务器配置nginx
nginx的默认设置,使用root用户修改
1 | # ubuntu |
将root指令指向 /srv/www/hexo 目录(钩子目录),同时可配置域名
1 | server { |
重启服务
1 | service nginx restart |
目录下添加一个文件看是否生效
1 | echo "CaiDog" > /srv/www/hexo/index.html |
客户端浏览器打开,可以看到主页内容
如果主页内容是RedHat的欢迎页面,根据提示把etc/nginx/nginx.conf
下的server{}
配置部分用#
注释
客户端Hexo配置发布地址
打开 hexo 博客目录,编辑_config.yml文件修改 repository 为:
1 | deploy:type: git |
执行
1 | hexo g -d |
会直接发布到当前git服务器上并且部署到 /srv/www/hexo
服务器安全性配置
安全考虑,禁用git用户的shell登录权限配置
首先你必须确保 git-shell 已存在于 /etc/shells 文件中使用命令 which git-shell
判断系统是否安装了 git-shell
如果已经安装,则返回 git-shell 的安装目录,如:/usr/bin/git-shell
1 | [root@10-7-89-87 .ssh]# which git-shell |
如果未安装则需要安装 git-shell 命令,安装命令
1 | yum install git |
判断 shells 文件是否存在,判断命令:
1 | cat /etc/shells |
如果文件不存在或没有/usr/bin/git-shell
,则需要使用 vim 增加这个路径:sudo vim /etc/shells
,在最后一行添加 git-shell 路径
1 | /bin/sh |
现在可以使用chsh
命令修改任一系统用户的 shell 权限了,现在我们修改第一步中创建的 git 用户的登录权限,禁止 git 用户使用 shell 权限:终端中输入chsh git
,再接着输入/usr/bin/git-shell
1 | [root@10-7-89-87 .ssh]# chsh git |
再到
1 | vim /etc/passwd |
找到类似
1 | git:x:1000:1000::/home/git:/usr/bin/git-shell |
看看 git 用户是否是以 git-shell 结尾这样,git 用户就只能使用 SSH 连接对 Git 仓库进行推送和拉取操作,而不能登录机器并取得普通 shell 命令
1 | # 换成 git 用户会报错, 如果用 git 用户登录 shell 会自动关闭终端 |
三、服务器和域名
域名和和备案说明
只要服务器在国内,跳向服务器的域名都是要备案的,所以要租用国内的服务器,一般都要在国内服务器商购买域名,因为它要求实名认证。
如果域名商和服务器商不是一个服务器商,则域名提交到管理局要3天时间,所以3天后才能开始在服务器商这边进行备案
基本流程如下图所示
购买域名并备案后,在nginx配置中增加当前域名,并且在域名服务器商中,给域名添加A记录,转到当前服务器。