你笑了

你的笑,是星星跳跃浪花的笑

0%

云服务器搭建博客

hexo

  • Hexo是一个快速,简单和强大的博客框架

架构

本地部分

  • 负责博客的建站

安装 git

安装 node

安装 hexo

1
npm install hexo -g # 全局安装

建站

1
2
3
hexo init blog # 在当前目录创建blog项目
cd blog # 进入 blog 目录
npm install # 安装blog项目依赖

测试

生成一篇文章

1
hexo new "Hello Hexo"

在根目录下的 source/_posts 目录中创建”Hello Hexo.md”文件,打开文件并添加内容

编辑完毕后, 使用hexo generate.md文件渲染成静态文件,然后通过 hexo server 启动服务

1
2
hexo g
hexo s

打开 http://localhost:4000 预览

配置

  • 参考下一篇《hexo配置》

相关命令

FAQ

自动化部署

安装hexo-deployer-git

1
npm install --save hexo-deployer-git

修改 hexo 目录下的 _config.yml,找到 deploy,修改为:

1
2
3
4
deploy:
type: git
repo: git@1xx.2x.9x.1xx:/xx/xx/blog.git
branch: master

服务器部分

  • 负责博客静态页面的托管和博客的访问

安装git

创建裸仓库

  • 在 root 账户下创建一个git用户用来管理git仓库

创建git用户

1
2
useradd git # 添加一个新用户
passwd git # 设置git用户密码

创建git裸仓库

1
2
3
su git # 切换用户进行后续操作
cd # 进入 git HOME目录 /home/git
git init --bare blog.git # 创建裸仓库
1
2
# 在本地试一下能不能把空仓库拉下来,如果能拉下来,说明配置成功。
git clone git@server_ip:/home/git/blog.git

这里需要输入git账户的密码才能拉取成功。如果服务器sshd已经禁止密码登录,这里会拉取失败,需要先开启密码登录,重启sshd服务。

如果服务器修改了 sshd 的默认端口,则本地ssh的config文件中需要给该服务器配置相应的端口

添加 git hooks

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 创建博客静态页面部署目录
mkdir /usr/share/nginx/html/blog
# 将目录的所有者更改为 git 用户
sudo chown -R git:git /usr/share/nginx/html/blog

# 创建一个钩子
cd blog.git/hooks
vim post-receive
# 输入以下内容
#!/bin/sh
# --work-tree 为博客静态页面部署目录;--git-dir 为git仓库目录
git --work-tree=/usr/share/nginx/html/blog --git-dir=/home/git/blog.git checkout -f

# 保存后添加可执行权限
chmod +x post-receive

post-receive 钩子

git用户建立密钥登录

在允许密码登录前提下,在本地执行如下命令

1
2
ssh-copy-id git@server_ip # 建立信任关系
ssh git@server_ip # 试一下能不能登录

ssh-copy-id 会自动在git用户的HOME目录/home/git下创建.ssh目录和authorized_keys文件,设置合适的权限,并把本地的公钥添加进去

git 用户的密钥登录成功后,可以退回root账户,修改sshd,禁止密码登录并重启sshd服务

配置 git 用户权限

1
2
3
# root用户下操作
# 将 /home/git/blog.git 目录及其所有子目录和文件的所有者改为 git 用户,所属组改为 git 组
chown -R git:git /home/git/blog.git

禁止 git 用户远程登录

1
2
3
4
5
6
7
8
9
10
# root用户下操作
cat /etc/shells # 查看 git-shell 是否在登录方式里面,如果不在
which git-shell # 找到git-shell的路径,记下来
vim /etc/shells
# 把刚才记下来的路径添加进去,保存

vim /etc/passwd
# 把 git:x:1000:1000::/home/git:/bin/bash 修改为 git:x:1000:1000:,,,:/home/git:/usr/bin/git-shell。
# 或
# 执行 sudo chsh -s /usr/bin/git-shell git 命令修改

如果本地 ssh key 发生改变,修改git的 authorized_keys 时会因为上面的改动,导致无法执行shell命令。需按以下步骤修改

  1. git 用户的 shell 更改回 /bin/bash

    1
    sudo chsh -s /bin/bash git
  2. 使用 ssh-copy-id 将本地公钥复制到 git 用户:

    1
    ssh-copy-id git@remote_host
  3. git 用户的 shell 再次更改为 /usr/bin/git-shell

    1
    sudo chsh -s /usr/bin/git-shell git

安装nginx

  • 安全组要开启 80 和 443 端口

域名解析

  • 添加公网IP的A记录,指向博客域名