Hexo是一款基于Node.js的静态博客框架,它可以将markdown文件解析成静态网页托管在github上。由于特殊原因国内访问github特别慢,于是我打算把hexo部署到个人服务器上。
一、环境安装
如果你服务器中有这些环境,请跳过此步骤。我的服务器是Debian系统,使用apt作为包管理器。
首先更新软件列表
1 | sudo apt-get update |
1.1 安装Node环境
1 | sudo apt install nodejs |
node -v
和 npm -v
验证是否安装成功
1.2 安装Nginx、Git
1 | sudo apt install nginx |
二、配置Git环境
2.1 在云服务器上创建一个git用户
使用adduser git
创建一个名为git的系统用户
2.2 配置证书
切换到git用户:su git
创建.ssh目录:mkdir .ssh && chmod 700 .ssh
然后在云服务创建authorized_keys
公钥保存文件:touch .ssh/authorized_keys && chmod 600 .ssh/authorized_keys
使用ssh生成访问服务器的公钥和私钥:ssh-keygen -t dsa -P ‘’ -f ~/.ssh/id_dsa
生成 authorized_keys
文件 :cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
2.3 创建git仓库目录
创建一个名为blog的git仓库
1 | mkdir /hexo |
2.4 配置
参考:GIT HOOKS
1 | vim /hexo/blog.git/hooks/post-receive |
添加
1 |
|
然后保存退出,并设置执行权限
1 | chmod +x /hexo/blog.git/hooks/post-receive |
改变blog.git用户的拥有者为git用户
1 | chown -R git:git /hexo/blog.git |
2.5 创建静态文件目录
创建静态文件目录,并赋予权限
1 | mkdir /www/hexo |
2.6 限制git用户的shell
上面创建的git用户可以通过ssh连接,进行任何操作。为了安全性,我们需要将git用户的活动限制在与Git相关的范围,也就是把git用户的shell改成 git-shell
。
- 使用命令
which git-shell
查看git-shell
的安装位置。(通常git-shell
在/usr/bin/git-shell
中) - 查看
cat /etc/shells
中是否添加了git-shell
的路径,如果没有使用sudo vim /etc/shells
编辑文件,将git-shell
添加进去
1 | /bin/sh |
使用 chsh 命令修改git用户的shell权限
终端中输入
sudo chsh git
, 然后在Login Shell [/bin/bash]
: 后输入git-shell路径/usr/bin/git-shell
。这样,git用户就只能使用SSH连接对Git仓库进行推送和拉取操作,而不能登录机器并取得普通shell命令
修改完成后验证: vim /etc/passwd
找到类似git:x:1000:1000:,,,:/home/git:/usr/bin/git-shell
,看看git用户是否是以git-shell结尾
2.7 测试
配置完git后,可以通过git clone git@<ip地址或域名>:/hexo/blog.git
来测试git
三、hexo配置
打开hexo博客目录,编辑_config.yml
文件。修改repository为:
1 | deploy: |
然后执行hexo g -d
将文件上传到你部署的服务器上
四、配置Nginx
现在云服务器上有静态网页了,只需要配置nginx就能从网络访问了。
1 | vim /etc/nginx/sites-available/default |
注意:不同版本的nginx或系统,nginx的配置文件不一定相同,根据具体情况来修改配置
修改nginx指向的目录,如果有域名解析,也可以加上。这样就可以通过ip或者域名访问hexo博客了。
1 | server { |