首先庆祝一下~~

吼姆小行星终于有了自己的域名
不需要再翻墙访问原地址
GitHub Page 的项目会同步更新… 所以哪个都一样啦
国内的话还是推荐访问https://space.shirofune.cn/

记录 hexo 部署流程

github.io 访问起来很慢…所以萌生了想要把博客放在国内服务器上的想法
购买服务器…购买域名…备案…尤其是备案,真的好麻烦
但是以上都是很简单的
接下来的部署充满了摸索的过程…
我不怎么会 Nginx 和 Linux…
这些基本都是我通过搜索引擎得到的
这个过程学到了很多东西,更重要的是利用 git 上线项目的简单流程
做的配置都是最低需要的(大概)毕竟用的是 root 权限…
如果有错误..欢迎指出,在留言板或者评论区都可以~
感激不尽!

Ubuntu-Git 项目部署流程

  • 更新系统
  • 安装 nginx 网页服务器
  • 安装 git 版本控制
  • 安装 node(通过 nvm)
  • nginx 配置监听文件目录
  • 创建一个 git 空仓库
  • 配置 git 空仓库(远程仓库)
  • 配置 git/hook
  • 配置 ssh 免密提交
  • nginx 配置 Https
  • nginx 其他配置(如二级域名)
  • 配置 hexo

命令操作记录

首先,更新服务器套件

apt-get 是 ubuntu 的包管理工具

1
apt-get update -y && apt-get upgrade -y

安装 nginx 网页服务器

1
apt-get install nginx -y

此时,复制自己的公网 IP,放在浏览器地址栏,应该可以看到 Nginx 的默认页面

如果不能(例如阿里云 ECS),注意配置一下服务器安全组

安装 git 版本控制

1
apt-get install git -y

安装 nvm

nvm 是一个 node 版本管理工具

1
wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.33.0/install.sh | bash

安装完成之后重启一下终端
验证安装

1
nvm --version

安装 node.js

1
nvm install 14.17.6

验证 node 安装

1
2
node -v
npm -v

创建一个仓库目录

1
2
3
mkdir /var/repo/
cd /var/repo/
git init --bare hexo-blog.git

配置 Nginx 托管目录

1
2
3
# 创建已给Nginx
mkdir -p /var/space/hexo
sudo vim /etc/nginx/sites-available/default

然后将会打开 Vim
键入 i 进入编辑模式

1
2
3
4
5
6
7
8
# 找到server
server{
listen 80 default_server;
listen [::]:80 default_server

root /var/space/hexo # 需要修改的位置
index index.html index.htm
}

ESC 退出编辑模式
shift+: wq 保存编辑
重启 Nginx 服务

1
sudo service nginx restart

创建 git 钩子

1
2
# hooks目录下创建一个新的钩子文件
vim /var/repo/hexo-blog.git/hooks/post-receive

在这个文件里添加两行代码
指定 git 工作树(源代码)和 git 目录(配置文件)

1
2
3
#!/bin/bash

git --work-tree=/var/space/hexo --git-dir=/var/repo/hexo-blog.git checkout -f

保存退出,将该文件设置为可执行文件

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

配置 ssh 免密提交

在/root/.ssh 中 有一个 authorized_keys 的文件,修改它

1
2
cd /root/.ssh
vim authorized_keys

在自己的电脑上,生成 ssh_key

1
ssh-keygen

一般在 C:\Users\用户名\.ssh 文件中
打开.pub 文件,将其中的内容复制进去即可

Nignx 配置 HTTPS 和域名前缀

在域名解析控制台,找到自己的证书详情页面
下载ssl证书
解压后,会有一个 Nginx 的文件夹,里面有两个文件
把这两个文件放到服务器的/etc/nginx/conf目录下
配置 nginx

1
sudo vim /etc/nginx/sites-available/default

找到 server_name

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
server {
# 同时记得在安全组中打开443端口
listen 443 ssl;
# 设定域名和域名前缀
server_name space.shirofune.cn;
# 开启ssl
ssl on;
# 设置证书和密钥
ssl_certificate /etc/nginx/conf/1_space.shirofune.cn_bundle.crt;
ssl_certificate_key /etc/nginx/conf/2_space.shirofune.cn.key;
# 指定文件目录
root /var/space/hexo;
index index.html;

location / {
try_files $uri $uri/ =404;
}
}
server {
# 重定向80端口
listen 80;
server_name shirofune.cn;
#将请求转成https
rewrite ^(.*)$ https://$host$1 permanent;
}

本地配置 hexo

1
2
3
4
5
6
7
deploy:
- type: git
repo: # 地址1
branch: master
- type: git
repo: root@ip:/var/repo/hexo-blog.git
branch: master

补充一些

Nginx 设置自定义 404 页面

博客项目托管到服务器上之后发现了一个小 bug
404 页面是 Nginx 默认的那个白底黑字儿 404
好丑啊
所以找了找设置 Nginx 自定义 404 界面的方法

1
2
cd /etc/nginx
vi nginx.conf
1
2
3
# nginx.conf
# http中添加
fastcgi_intercept_errors on;

然后设置 server,指定 404 错误页面

1
2
cd /etc/nginx/sites-available
vi default
1
error_page 404 = /404.html;

重启服务

1
sudo service nginx restart