Hexo 博客部署到私有云服务器

CodeLuminaX
• 阅读 2329

前言

喜欢分享是程序员的天性,所以大部分的程序员都会有一个自己的博客,里面的内容可以是一些工作中遇到的问题和解决思路,也可以是最近学习到的新技术的总结,也可以是对生活的思考和感悟。搭建个人博客的方式也有很多,可以直接在第三方博客平台上写作,如掘金、博客园、CSDN 等等,也可以使用 hexo 搭建博客部署到 github pages,当然如果拥有私有云服务器的还可以在上面借助 wordpress 博客系统搭建一个博客。本文要介绍的是使用 hexo 搭建博客,但是部署到私有云服务器。

准备工作

本文重点介绍的是将博客部署到私有云服务器上,所以一些准备工作默认是已经做好了。具体包括以下几点:

  • 一台已经安装Nginx的私有云服务器,安装 Nginx 推荐使用军哥的LNMP一键安装包
  • 一个博客域名:如果服务器是国外购买的,域名就不需要工信部备案,如果服务器是在阿里云/腾讯云等平台购买的,则域名需要工信部备案。并将域名解析到私有云服务器。
  • 本地已经安装node.js、hexo博客环境、git

部署步骤

搭建git仓库

新建git用户并设置密码
adduser git
passwd git

修改权限

chmod 740 /etc/sudoers
vim /etc/sudoers

找到root ALL=(ALL) ALL并在其下面添加

git     ALL=(ALL)       ALL

保存后改回sudoer权限:

chmod 400 /etc/sudoers
创建免密登陆证书

在服务器中打开RSA认证

vim /etc/ssh/sshd_config

找到以下三项并开启,若没有找到则添加

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile  .ssh/authorized_keys

切换到git用户并开始配置ssh

su git
cd ~
mkdir .ssh && chmod 700 .ssh

接着,要为git用户里的.ssh添加开发者公钥,以便免密向git仓库推送数据。

在本地电脑通过 C盘用户目录/.ssh/id_rsa.pub找到ssh的公钥,在服务端.ssh里新建authorized_keys文件并将其复制到里面。

注意:公钥在authorized_keys文件中是一行添加一个

touch /home/git/.ssh/authorized_keys
sudo chmod 600 /home/git/.ssh/authorized_keys
vim /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,则

sudo vim /etc/shells

在最下面添加

/usr/bin/git-shell
创建仓库

在/var/repo创建空仓库(切换为root用户)

mkdir /var/repo
cd /var/repo
git init --bare blog.git

配置git hooks使得在仓库更新的时候,nginx配置文件中root指向的目录同步更新(这里root指向的是/home/wwwroot/www.blogdomain.com/)

vim /var/repo/blog.git/hooks/post-receive

添加

#!/bin/sh
git --work-tree=/home/wwwroot/www.blogdomain.com/ --git-dir=/var/repo/blog.git checkout -f
/home/wwwroot/www.blogdomain.com/
chmod -R 777 *

保存退出并设置权限

chmod +x /var/repo/blog.git/hooks/post-receive

更改blog.git拥有者

sudo chown -R git:git blog.git
使用chsh命令修改任意系统用户的shell权限
sudo chsh git

在 Login Shell [/bin/bash]后输入:

/usr/bin/git-shell

修改完后验证cat /etc/passwd是否以git-shell结尾,例如:

git:x:1003:1003:,,,:/home/git:/usr/bin/git-shell

修改后,在本地客户端使用ssh git@serverip登陆将被拒绝(第一次登陆该网址会提示continue connecting,输入yes):

$ ssh git@gitserver
fatal: Interactive git shell is not enabled.
hint: ~/git-shell-commands should exist and have read and execute access.
Connection to gitserver closed.
git测试

完成上述步骤后,通过测试判断git服务器是否部署成功,在本地客户端执行

git clone git@serverip:/var/repo/blog.git

如果远程服务器禁用22端口登陆,则可以使用如下语句:

git clone ssh://git@serverip:port/var/repo/blog.git

输入密码后(如果秘钥配置成功则不用输入密码)若blog.git中没有内容将会提示:

···
git@serverip`s password:
warning: You appear to have cloned an empty repository

Nginx 配置

本文假定你是使用了 lnmp 一键安装包,可使用以下命令将博客域名添加到虚拟主机:

lnmp vhost add

具体选项可按需要选择配置:

Hexo 博客部署到私有云服务器

最后回车,即可完成虚拟主机的添加。

hexo 本地配置

在本地hexo博客根目录修改_config.yml文件

# Deployment
## Docs: https://hexo.io/docs/deployment.html
deploy:
  type: git
  repo:
        vps:    git@serverip:/var/repo/blog.git
  branch: master

将博客部署到私有云服务器

在 hexo 博客根目录依次执行以下命令即可:

hexo clean
hexo g
hexo d

到这里就完成了hexo博客的配置和部署了,在浏览器输入域名(文章中示例用的是 www.blogdomain.com ) 即可访问博客了。

点赞
收藏
评论区
推荐文章
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
科工人 科工人
4年前
博客园的整改了,我们还能去哪些技术社区写博客
前几天突然技术群里有人说,博客园好多文章页面打不开了,上网一查,原来,博客园在整改,至少一周的时间博客园都处于关站状态作为技术社区里面知名的博客写作网站,里面有很多干货,突然一下子整改了,影响还是挺大的。对于广大程序猿来说,写文章既可以理清思路,又可以通过分享技术结交到朋友。一个专业的技术社区对程序员的职业生涯来说,是很重要的,可以这么说,技术社区一般会陪伴
Jacquelyn38 Jacquelyn38
4年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Johnny21 Johnny21
4年前
博客园整改了,我们还能去哪里写博客
不知道大家有没有收到博客园整改的消息...目前来看,至少一周的时间,博客园都处于关站状态。  对于广大程序猿来说,写文章既可以理清思路,又可以通过分享技术结交到朋友。那么作为一名博客狂热者,现在还有哪些地方可以写博客(搬家)?  0、helloworld新时代的下的博客网站,主打简约、共享、开放给程序员提供一片思想遨游的空间。1、C
徐小夕 徐小夕
5年前
从零开发一款自动提取网页html并一键转换为md文件的工具(vue源码版)
最近几年涌现出了很多技术博客和技术社区,也有很多技术同仁开始打造自己的博客,我们可以把自己的博客同步到不同的技术平台,但是随着技术平台的增多,我们文章同步所花费的
Elvis757 Elvis757
4年前
Gin + Vue全栈开发实战
   尝试地写了第一篇自己学习GoWeb框架的感受和入门的文章,发现反响还不错,大家也提出了很多的问题来一起交流。近期也渐渐地出现了很多有关go语言开发的相关文章,包括有在蚂蚁金服的大牛的分享,我也一直有在看博客园和学习,这里越来越多人的去学习
Stella981 Stella981
4年前
Hexo+Kaze+Gitee Pages 搭建静态博客网站
前言建网站本身是一个很大的工程,涉及前端页面的搭建,网站数据的存储,还要购置服务器资源,甚至是后期的维护,过程相当繁琐。不过如果仅仅是想搭建个人的网站,写写博客,想要美观,又不想操心太多和写博客无关的事情。那么,HexoKazeGiteePages的方式就很适合你。本文就讲下如何借助这三样免费的技术或服务,来搭建一个可访问的
Easter79 Easter79
4年前
SpringMVC+Spring+MyBatis个人技术博客源码
项目描述Hi,大家好,又到了源码分享时间啦,今天我们分享的源码一个《个人技术博客》,该博客是基于SSM实现的一个个人博客系统,适合初学SSM和个人博客制作的同学学习。有了这个源码,直接买了阿里云或腾讯服务器,就可以部署独立个人技术博客啦。博客源码主要涉及技术包括的包括Maven、Spring、SpringMVC、MyBatis、Redis、J
Wesley13 Wesley13
4年前
Mysql事务以及InnoDB和MyISAM区别讲解
【辰兮要努力】:hello你好我是辰兮,很高兴你能来阅读,博客昵称是希望自己能不断精进,向着优秀程序员前行!博客来源于项目以及编程中遇到的问题总结,偶尔会有读书分享,我会陆续更新Java前端、后台、数据库、项目案例等相关知识点总结,感谢你的阅读和关注,希望我的博客能帮助到更多的人,分享获取新知,大家一起进步!吾等采
待兔 待兔
2年前
博客作者可以上传自己的网站了
先说结论重要的事情说三遍:结论一:博客作者可以上传自己的个人独立网站和个人的微信号了结论一:博客作者可以上传自己的个人独立网站和个人的微信号了结论一:博客作者可以上传自己的个人独立网站和个人的微信号了之前我在各大平台写技术博客的时候,比如在csdn,掘金或
CodeLuminaX
CodeLuminaX
Lv1
羁鸟恋旧林,池鱼思故渊。
文章
3
粉丝
0
获赞
0