这个博客是怎么建成的

  1. 一、准备工作
  2. 二、具体设置
    1. 1.创建域名并修改DNS
    2. 2.创建VPS
    3. 3.机器端设置
    4. 4.服务器端设置
      1. 1 登录服务器端
      2. 2 安装Screen软件
      3. 3 安装
      4. 4 建立用户和静态仓库
      5. 5 配置git用户和SSH
      6. 6 创建git库
      7. 7 配置Nginx
      8. 8 指向git地址

虽然说很多年以前就有点想自己写东西了,也曾经在某些网站上写过,但是最后都不了了之。
这一次建立了这个网站(拖延症晚期患者),记录一下这个网站是怎么建成的。

也算是给自己以后做个备份(?)

一、准备工作

首先,我们需要域名和VPS。具体来说,注册以下两个网站的账号:
域名: Godaddy.com
VPS: Vultr.com
总之,注册,进入,付款,一气呵成。
选取了HEXO作为框架。别问为什么,问就是我也是萌新。

这一部分特别感谢Moon在很多年前(?)的指导。

二、具体设置

1.创建域名并修改DNS

域名的选择什么的全部看个人兴趣,没有太多可以说的地方。
选好付款就可以了。

然后把Vultr的DNS地址复制过去进行修改就可以了。具体来说,是:

1
2
ns1.vultr.com
ns2.vultr.com

2.创建VPS

在 Vultr.com中Create Server就可以了。
地区选择:考虑到以后还想做个SSR,就没有选择大家通常选择的日本,而是选择了美西。
美西有3个站点,分别是硅谷,洛杉矶,西雅图,三个随便选一个就好。
(这里选择了西雅图。)

由于搭建SSR使得西雅图的地址被墙了,临时换到了法兰克福。
法兰克福真的太慢了,又换到了东京。
最后SSR还是自己买了,所以也没什么用了=。=

系统配置就是选择了$5/Month的配置,基本上也够用了,每个月30块钱也承担得起。
具体配置:单核CPU,1G内存,25G SSD, 1000G的带宽。
选操作系统就不好玩了。本来想选Windows,但是似乎操作起来没有Linux系统简单,因此作罢。
随便选了个CentOS 8,但是后面的安装过程中全部是坑,被迫降级到了CentOS 7。
在这一步操作之后,稍等片刻,IP地址和Root账户的密码应该就都可以拿到了。

3.机器端设置

下载并安装Git-Bash和Node.js。因为机器端是Windows 10系统,下载安装都很方便。
注意:Node.js版本不要太高(高版本有一大堆坑),这里使用的是12.22.12.
为了方便的和VPS联通,这里还下载了PuTTY软件。可以远程登录服务器端,而且可以右键粘贴密码,避免了使用Vultr.com时每次手打几十个字母数字符号的感觉。
(理论上用Git-Bash也可以,懒得自己尝试了。)
下载HEXO。简单易懂,不多说。

1
$ npm install -g hexo-cli

配置SSH。

1
$ ssh-keygen -t rsa -C "xxxxx@xxxxx.com"

4.服务器端设置

1 登录服务器端

使用PuTTY软件登录服务器端,输入IP即可,进入后使用root账户和第2步给出的密码即可成功登录。

2 安装Screen软件

远程操作容易因为网络问题而导致过程失败。因此安装Screen软件是一个很好的解决方案。

Screen是一个可以在多个进程之间多路复用一个物理终端的全屏窗口管理器。
Screen中有会话的概念,用户可以在一个screen会话中创建多个screen窗口,在每一个screen窗口中就像操作一个真实的telnet/SSH连接窗口那样。

CentOS 7 没有自带Screen软件。 (这里存疑,因为之前使用CentOS 8安装的,而8没有。不记得7有没有了。)
没有也问题不大,安装就是了。

1
2
$ sudo yum install epel-release
$ sudo yum install screen

3 安装

首先运行screen命令创建会话。

1
$ screen -S lnmp

然后安装lnmp。

1
$ wget http://soft.vpser.net/lnmp/lnmp1.6.tar.gz -cO lnmp1.6.tar.gz && tar zxf lnmp1.6.tar.gz && cd lnmp1.6 && ./install.sh lnmp

相当于自动安装了Nginx,MySQL,PHP,觉得还是不错的。过程中按照提示操作即可。
这里安装了MySQL 5.5.62, PHP 5.6.40, 没有安装内存优化, 回车安装即可。时间大约为半个小时左右。

当屏幕上出现

1
2
3
Nginx: OK
MySQL: OK
PHP: OK

意味着安装成功,可以进入下一步了。

4 建立用户和静态仓库

没有必要平时上传博客还用root账户,也不安全。因此创建一个git账户用于操作,并修改对应权限。

1
2
3
$ adduser git  
$ chmod 740 /etc/sudoers
$ vim /etc/sudoers

在打开的编辑器中,找到

1
2
## Allow root to run any commands anywhere
root ALL=(ALL) ALL

在下面添加一行

1
git ALL=(ALL) ALL

保存即可。(Shift+;进入模式,输入wq即可退出保存。)最后把文件权限修改回去。

1
chmod 400 /etc/sudoers

5 配置git用户和SSH

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 切换到git用户
$ su git
# 切换到git用户目录
$ cd /home/git
# 创建.ssh文件夹
$ mkdir ~/.ssh
# 创建authorized_keys文件并编辑
$ vim ~/.ssh/authorized_keys
# 再将公钥复制粘贴到authorized_keys
# 注意:如果在第3步正确配置了SSH,则公钥应该在
# C:\users\[username]\.ssh\id_rsa.pub文件中,复制即可。
# 保存关闭authorized_keys后,修改相应权限
$ chmod 600 ~/.ssh/authorized_keys
$ chmod 700 ~/.ssh

在本机执行以下命令,若成功登陆,则说明配置成功。

1
$ ssh  git@服务器ip地址

6 创建git库

1
2
3
4
5
# 回到git目录
$ cd /home/git
# 使用git用户创建git裸仓库,以blog.git为例
$ git init --bare blog.git
$ vim ~/blog.git/hooks/post-receive

在打开的编辑器中,输入以下内容并保存。

1
2
3
4
5
6
7
8
9
#!/bin/bash
GIT_REPO=/home/git/blog.git
TMP_GIT_CLONE=/tmp/blog
#这里我用 /var/www/blog 目录作为网站的根目录
PUBLIC_WWW=/var/www/blog
rm -rf ${TMP_GIT_CLONE}
git clone $GIT_REPO $TMP_GIT_CLONE
rm -rf ${PUBLIC_WWW}/*
cp -rf ${TMP_GIT_CLONE}/* ${PUBLIC_WWW}

赋予可执行权限。

1
chmod +x post-receive

注意以下blog.git、.ssh、blog目录的用户权限组是否都为git:git。

1
2
3
ll -a /var/www/
ll -a /home/git/
ll -a ~/.ssh

如果有不是的,更改一下就可以。(其他目录以此类推)

1
2
sudo chown git:git -R /var/www/blog
sudo chown git:git -R /home/git/blog.git

7 配置Nginx

打开配置文件。

1
2
$ cd /usr/local/nginx/conf/
$ vim nginx.conf

修改以下内容:

1
2
3
4
5
6
7
8
9
10
11
server
{
listen 80 default_server;
#listen [::]:80 default_server ipv6only=on;
server_name _;
index index.html index.htm index.php;
#修改这里为我们的 blog 目录
root /var/www/blog;

...
}

wq保存退出vim即可。
保存修改后使用 nginx -t 查看配置是否有错误,若无误,则执行 lnmp restart 即可让配置生效。

8 指向git地址

本机打开C:\hexo\_config.yml文件
在最后编辑成:

1
2
3
4
deploy:
type: git
repo: git@服务器ip:/home/git/blog.git #注意:ip后面的冒号不能省略,我也不知道为什么。
branch: master

就可以使用hexo g -d 命令去上传自己的博文啦。
注意:用Git-Bash需要在Public文件下hexo g -d,否则会报错(403 Forbidden),具体表现为服务器端没有index.html文件。

本教程到此结束。

作为0基础的Linux用户,不得不说这个过程还是挺麻烦的~不过配置好了就好。


这篇博文参考了以下文章:
使用Vultr搭建个人Hexo博客
vultr搭建hexo博客
感谢他们的无私分享。