vps与hexo 建站

写在前面

很久之前,在开始写blog的时候,第一篇就是如何用hexo以及github搭建自己的个人博客。当时是参照的朋友的博客写的,其中还有一部分是关于绑定自己域名的。不过当时因为自己懒就没写。现在刚好填个坑.

git服务器搭建

之前是上传到GitHub上,现在自然是上传到自己的git服务器上。至于服务器自己选择购买就可以了,具体还需要安装nginx以及git。至于安装步骤这里就略过了。然后一般来讲是为git单独创建一个用户。具体命令如下,比如用户名就是git。

1
2
3
4
# root下创建git用户
useradd git
# 修改密码
passwd git

然后切换到git用户并切换到对应目录。这里选择使用ssh认证,所以要做相应的准备。并将公钥上传至服务器.

1
2
3
4
5
mkdir .ssh && chmod 700 .ssh
touch .ssh/authorized_keys && chmod 600 .ssh/authorized_keys
# 将公钥文件追加到认证文件中。需要预先将公钥文件上传至服务。
cat xxxx.pub >> ~/.ssh/authorized_keys

然后为了安全考虑,将git用户限制仅能使用git-shell,也就是禁止ssh登陆进行操作,比如多人协作的情况下就有必要做这样的限制了。这里自己考虑设置即可。使用chsh git -s $(which git-shell)指令即可,一般来说,安装git都会自带git-shell的。这里就直接使用了。

到此,服务器的认证工作就准备结束。接下里就是新建git仓库.
以blog为例.在git用户目录下执行以下操作.

1
2
3
4
5
# 创建仓库文件夹
mkdir blog.git
cd blog.git
# bare 是仅仅支持git更新,本地是不能直接操作git仓库的 --share则是默认权限
git init --bare --shared

这时候就可以在本地机器中git clone检查下是否生效。

git clone ssh://git@host:port/home/userName/blog.git

这里如果是默认端口的话可以省略协议名,但是因为部分vps会屏蔽一些常用端口,所以如果有这方面的限制的话可以参照上面的格式。
如果是之前已经有hexo项目的话,修改_config.yml 文件中的repo使其与上面git clone的地址一致即可。修改完成后执行hexo 相关命令校验。

最后一步就是如何将hexo 博客项目部署到nginx了。当然前提是安装好nginx.这里就不多做描述。(其中需要注意的是如果想仅仅在git用户下就完成所有操作的话,需要注意nginx安装时–prefix指定安装目录.还有就是非root用户不能使用1024以下端口问题,可以考虑使用以下命令,

1
2
# xxx为nginx启动文件目录
setcap cap_net_bind_service=ep xxxx

这样就能以git用户启动nginx了。当然还有其他解决方法,这里不多说了。
最后则是修改blog.git/hooks中的post-update文件实现每次更新时自动将html文件部署到nginx。具体内容如下

1
2
3
4
5
6
7
cd /
# 自己替换nginx目录
cd xxxx/nginx/html/
# 自己替换仓库目录
git clone xxxx/blog.git
cp -rf blog/* .
rm -rf blog

这样就实现每次提交后自动发布的功能了,这时候已经可以直接用vps的ip访问看看了。

当然这里可以考虑在nginx中增加限流设置。常见的比如:
http下
limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s;
server下
limit_req zone=one burst=5 nodelay;
(限制请求数策略平均10/s )

http下:
limit_conn_zone $binary_remote_addr zone=addr:10m;
server下:
limit_conn addr 1
(限制单ip连接数1)

…等等等等依据自己实际情况设置。

这里为止,git服务器就搭建好了。

域名绑定

这时候依旧只能通过ip访问,我们需要去购买一个域名,这个可以参考开头给出的我朋友的博客内容。重点是如何绑定呢。这里以godaddy为例。先点击用户下的我的产品进入以下页面
sorry,the pic is missing

接着点击图中框出的DNS按钮,接着点击右下角的添加.出现如下图的界面

sorry,the pic is missing

其中类型选择A,主机@就是默认域名,如果填充内容的话就类似是二级域名。比如填充test就是test.xxx….指向就是vps的公网地址了。填写完成之后保存。就可以等待生效了。这时候还记得上面提到的git clone的地址以及config文件中修改的remote地址吗。这里就可以用域名替换ip地址了,不过依旧会被转换回来..

具体的域名绑定可以参考这篇文章

至此,所有的内容就都结束了~

最后

很久没更了,刚好重新开始,顺便填个坑。内容不多,写的很难受,表达的也很奇怪。但是作为新的开始,希望自己能够坚持下去。其实这种方式费时费力,不如买个域名直接链接到简书一类的网站,那就轻松很多了~

客官扫码领红包哟~