前言
喜欢分享是程序员的天性,所以大部分的程序员都会有一个自己的博客,里面的内容可以是一些工作中遇到的问题和解决思路,也可以是最近学习到的新技术的总结,也可以是对生活的思考和感悟。搭建个人博客的方式也有很多,可以直接在第三方博客平台上写作,如掘金、博客园、CSDN 等等,也可以使用 hexo 搭建博客部署到 github pages,当然如果拥有私有云服务器的还可以在上面借助 wordpress 博客系统搭建一个博客。本文要介绍的是使用 hexo 搭建博客,但是部署到私有云服务器。
准备工作
本文重点介绍的是将博客部署到私有云服务器上,所以一些准备工作默认是已经做好了。具体包括以下几点:
- 一台已经安装Nginx的私有云服务器,安装 Nginx 推荐使用军哥的LNMP一键安装包
- 一个博客域名:如果服务器是国外购买的,域名就不需要工信部备案,如果服务器是在阿里云/腾讯云等平台购买的,则域名需要工信部备案。并将域名解析到私有云服务器。
- 本地已经安装node.js、hexo博客环境、git
部署步骤
搭建git仓库
新建git用户并设置密码
1 | adduser git |
修改权限
1 | chmod 740 /etc/sudoers |
找到root ALL=(ALL) ALL并在其下面添加
1 | git ALL=(ALL) ALL |
保存后改回sudoer权限:
1 | chmod 400 /etc/sudoers |
创建免密登陆证书
在服务器中打开RSA认证
1 | vim /etc/ssh/sshd_config |
找到以下三项并开启,若没有找到则添加
1 | RSAAuthentication yes |
切换到git用户并开始配置ssh
1 | su git |
接着,要为git用户里的.ssh添加开发者公钥,以便免密向git仓库推送数据。
在本地电脑通过 C盘用户目录/.ssh/id_rsa.pub找到ssh的公钥,在服务端.ssh里新建authorized_keys文件并将其复制到里面。
注意:公钥在authorized_keys文件中是一行添加一个
1 | touch /home/git/.ssh/authorized_keys |
若之前未有上传文件至github等仓库的经历,本地客户端无ssh的keys,则要先生成一下。
修改git用户权限
给git用户设置权限,限制其只能使用git-shell向git仓库push或pull等,而不能登陆机器并取得普通shell命令控制系统。
使用which git-shell判断是否安装了git-shell。如果未安装,则yum install git
判断shells文件路径是否存在:cat /etc/shells,如果shells文件不存在或者文件中没有/usr/bin/git-shell,则
1 | sudo vim /etc/shells |
在最下面添加
1 | /usr/bin/git-shell |
创建仓库
在/var/repo创建空仓库(切换为root用户)
1 | mkdir /var/repo |
配置git hooks使得在仓库更新的时候,nginx配置文件中root指向的目录同步更新(这里root指向的是/home/wwwroot/www.blogdomain.com/)
1 | vim /var/repo/blog.git/hooks/post-receive |
添加
1 | #!/bin/sh |
保存退出并设置权限
1 | chmod +x /var/repo/blog.git/hooks/post-receive |
更改blog.git拥有者
1 | sudo chown -R git:git blog.git |
使用chsh命令修改任意系统用户的shell权限
1 | sudo chsh git |
在 Login Shell [/bin/bash]后输入:
1 | /usr/bin/git-shell |
修改完后验证cat /etc/passwd是否以git-shell结尾,例如:
1 | git:x:1003:1003:,,,:/home/git:/usr/bin/git-shell |
修改后,在本地客户端使用ssh git@serverip登陆将被拒绝(第一次登陆该网址会提示continue connecting,输入yes):
1 | $ ssh git@gitserver |
git测试
完成上述步骤后,通过测试判断git服务器是否部署成功,在本地客户端执行
1 | git clone git@serverip:/var/repo/blog.git |
如果远程服务器禁用22端口登陆,则可以使用如下语句:
1 | git clone ssh://git@serverip:port/var/repo/blog.git |
输入密码后(如果秘钥配置成功则不用输入密码)若blog.git中没有内容将会提示:
1 | ··· |
Nginx 配置
本文假定你是使用了 lnmp 一键安装包,可使用以下命令将博客域名添加到虚拟主机:
1 | lnmp vhost add |
具体选项可按需要选择配置:
最后回车,即可完成虚拟主机的添加。
hexo 本地配置
在本地hexo博客根目录修改_config.yml文件
1 | # Deployment |
将博客部署到私有云服务器
在 hexo 博客根目录依次执行以下命令即可:
1 | hexo clean |
到这里就完成了hexo博客的配置和部署了,在浏览器输入域名(文章中示例用的是 www.blogdomain.com ) 即可访问博客了。