无标题

无标题

本文由 简悦 SimpRead 转码, 原文地址 hjxlog.com

1 前言

作为有梦想的,有追求的程序员,有一个自己的个人博客简直就是必须品。你可以选择 wordpress 这种平台,直接使用,在任何地方只要有网络就能写博客。还可以选择 hexo 这种静态博客,但是发文章就没有那么随心所欲了,要在你部署的电脑上写才行。

本人之前使用的是 hexo+github pages 这种方式搭建博客,简单方便,感兴趣的同学可以看我之前写的这篇文章:Hexo+github pages 搭建个人独立网站,绑定域名全教程

由于 github 是在国外的,访问速度确实慢了一些,体验有些不好。正巧上学的时候用学生优惠价格购买了几年阿里云轻量服务器,闲着也是闲着,就用来部署 hexo 好了,加快访问速度。

因为我是先部署了 github pages,所以 git 安装、NodeJs 安装等等都已经实现了,还没安装的有需要可以看我上面那个教程链接。

在部署的过程中,看了网上很多教程,大多是抄来抄去的,看了很多篇照着做也没有成功过,所以这篇博文是综合网上很多篇博文,加上自己的探索写出来的。网上普遍没有贴图片,看着头大,为了照顾纯小白,我这里贴上图片,一步一步来,保姆级教程。

2 环境介绍

我本地电脑安装的是 win10(64) 位。

服务器使用的是阿里云轻量服务器,配置是:

1核、2GB内存,系统盘 40GB SSD云盘

操作系统是 CentOS 7.3。

3 本地环境部署

这部分在我之前写的 Hexo+github pages 搭建个人独立网站,绑定域名全教程这里也有,为了方便我直接拿过来这边了。

3.1 安装 nodejs

因为 Hexo 需要 nodejs 环境,因此需要先下载安装 Nodejs。点击 NodeJs 官网,下载最新版本。

[外链图片转存失败,源站可能有防盗]!链机制,建(https://img-cUblog.ysdnimg.cn/g_convert/c78963ce85ce3b-118ef768f0cd226dcbe.png#align=left&display=inline&height=643&margin=[object Object]&originHeight=683&originWidth=1132&size=)&status=done&style=none&width=1132htps://imgblog.csdnimg.cn/img_convert/c78963ce85ce3b11ef467f7cd226dcbe.png#align=left&display=inline&height=683&margin=[object Object]&originHeight=683&originWidth=1132&size=0&status=done&style=none&width=1132)]

下载好一直 next,选择一个文件夹位置在一直 next 即可完成,这个步骤很简单,就不放图了。

3.2 安装 git

点击 git 官网,下载安装包。
![](https://www.icode9.com/i/ll/?i=img_convert/24acc934fbd80bdb18bd85a485cfb7a1.png#align=left&display=inline&height=722&margin=[object Object]&originHeight=722&originWidth=1220&size=0&status=done&style=none&width=1220)

点击 next,选择文件夹位置,然后一直 next 到底就行了,选择默认配置就好,默认配置会将环境变量配置好的,不需要搞得花里胡哨的。安装好后鼠标右击应该有下图这两个选项了,出现就代表安装成功了。
![](https://www.icode9.com/i/ll/?i=img_convert/de34b93da0304c43af0dff0324291586.png#align=left&display=inline&height=497&margin=[object Object]&originHeight=497&originWidth=392&size=0&status=done&style=none&width=392)

4 使用 Hexo

4.1 安装 Hexo

上面环境搭建好之后,在桌面点击鼠标右键,点击 “Git Bash Here” ,输入以下两条命令。

$ npm install -g hexo-cli

提示:输入的时候不要输入 $ 了,因为命令行本来就已经有了。下载需要几分钟,请耐心等待一下。

可以在复制之后在 git 窗选择 Shift+Insert 粘贴。有一些警告 WARN 是不影响使用的,放心。

![](https://www.icode9.com/i/ll/?i=img_convert/89ab201517863bc51c19ea401d593e08.png#align=left&display=inline&height=360&margin=[object Object]&originHeight=360&originWidth=721&size=0&status=done&style=none&width=721)

4.2 初始化 Hexo

安装好 Hexo 之后,新建一个文件夹,如 E:\HEXO ,然后在该文件夹内鼠标右击,选择 “Git Bash Here” ,输入以下命令。

$ hexo init

稍等片刻即可完成,如图:

![](https://www.icode9.com/i/ll/?i=img_convert/a0d96f391aab3c5552226e46f1f177fd.png#align=left&display=inline&height=628&margin=[object Object]&originHeight=628&originWidth=744&size=0&status=done&style=none&width=744)

文件结构如图所示:

![](https://www.icode9.com/i/ll/?i=img_convert/14b68d1b70125461fc270fa5518d3556.png#align=left&display=inline&height=277&margin=[object Object]&originHeight=277&originWidth=759&size=0&status=done&style=none&width=759)

scaffolds 是模版文件夹,当你新建文章时,Hexo 会根据 scaffold 来建立文件。

source 文件夹是存放用户资源的地方。

themes 是主题文件夹,Hexo 会根据主题来生成静态页面,待会我们会更换成比较流行的 nexT 主题。

然后再输入命令行进行本地调试,即可看到初始效果啦~

$ hexo s --debug

访问 http://localhost:4000/ 即可看到效果:

![](https://www.icode9.com/i/ll/?i=img_convert/c9de074ad63729e8c20a8661f560334c.png#align=left&display=inline&height=867&margin=[object Object]&originHeight=867&originWidth=1882&size=0&status=done&style=none&width=1882)

4.3 更换主题为 NexT

上面虽然本地可以调试成功了,但是默认的主题实在不是特别好看。你可以选择去官网选择自己喜欢的主题,官网主题链接 https://hexo.io/themes/

本篇教程选择的是当前流行的 NexT 主题,这个主题是我感觉用过的最好的一个了。

4.4 下载 NexT 主题

进入刚刚你创建的文件夹的 themes 里,比如我的 E:\HEXO\themes ,鼠标右击选择 “Git Bash Here” 输入以下两条命令中的一个:(这两个是一样的,只是有同学反应第一条命令不行,第二条就可以。)

|

1

|

$ git clone git@github.com:iissnan/hexo-theme-next.git

|
|

2

|  |
|

3

|

$ git clone https://github.com/iissnan/hexo-theme-next

|

![](https://www.icode9.com/i/ll/?i=img_convert/7007df862144ef654135d0e9451aaea8.png#align=left&display=inline&height=239&margin=[object Object]&originHeight=239&originWidth=694&size=0&status=done&style=none&width=694)

此时 themes 文件夹便多了一个 next 主题的文件夹。

![](https://www.icode9.com/i/ll/?i=img_convert/39baf40c09fe08ee4eaa769baba0f83e.png#align=left&display=inline&height=165&margin=[object Object]&originHeight=165&originWidth=637&size=0&status=done&style=none&width=637)

4.5 修改配置

打开 E:\HEXO (你的 hexo 根目录)下的 _config.yml 配置文件
![](https://www.icode9.com/i/ll/?i=img_convert/296a61692f8e783027fd5f7d483edbbc.png#align=left&display=inline&height=421&margin=[object Object]&originHeight=421&originWidth=790&size=0&status=done&style=none&width=790)

找到下面这段代码

|

1

|

# Extensions

|
|

2

|

## Plugins: https://hexo.io/plugins/

|
|

3

|

## Themes: https://hexo.io/themes/

|
|

4

|

theme: landscape

|

将 langscape 替换成 hexo-theme-next

theme: hexo-theme-next

重新在项目根目录下进行本地部署调试

$ hexo s --debug

即可看到效果
![](https://www.icode9.com/i/ll/?i=img_convert/1b502f9efb31de50732eedd43324117e.png#align=left&display=inline&height=876&margin=[object Object]&originHeight=876&originWidth=1117&size=0&status=done&style=none&width=1117)

5 配置 SSH 密钥

为了使本地可以跟远程的 github 建立联系,需要在本地配置 SSH 密钥,这样我们就可以在本地直接提交代码到 GitHub 上或者远端 git 仓库。
如果你是第一次配置 SSH,则配置一下 git 的 username 和 email

|

1

|

$ git config --global user.name "你要设置的名字"

|
|

2

|

$ git config --global user.email "你要设置的邮箱"

|

之后生成 SSH 密钥:

$ ssh-keygen -t rsa -C "你刚刚设置的邮箱"

如果不需要设置密码的话,连续三个回车就好了。在这之后会得到两个文件: id_rsa 和 id_rsa.pub

找到 id_rsa.pub 文件,用记事本打开,复制其内容。路径: C:\Users\J(你的用户名).ssh

![](https://www.icode9.com/i/ll/?i=img_convert/c4f7521af07d20c7e1012b99ca2c9d41.png#align=left&display=inline&height=167&margin=[object Object]&originHeight=167&originWidth=727&size=0&status=done&style=none&width=727)

6 服务器部署

注意:服务器是 centOS 7.3

阿里云截图如下:

![](https://www.icode9.com/i/ll/?i=img_convert/12d4113d7cf013af11acd1a19c3d7cdf.png#align=left&display=inline&height=378&margin=[object Object]&originHeight=378&originWidth=739&size=0&status=done&style=none&width=739)

点击右上角的” 远程连接”。

![](https://www.icode9.com/i/ll/?i=img_convert/98b22697b38597ee15943754abe885c3.png#align=left&display=inline&height=672&margin=[object Object]&originHeight=672&originWidth=2163&size=0&status=done&style=none&width=2163)

输入以下命令,切换到 root 账号

sudo su root

![](https://www.icode9.com/i/ll/?i=img_convert/612958fe950348cc668b1d9e616693a3.png#align=left&display=inline&height=272&margin=[object Object]&originHeight=272&originWidth=1025&size=0&status=done&style=none&width=1025)

6.1 git 配置

1、安装 git

在刚刚的黑框里输入,然后回车:

yum install git

等待一下就安装好了。中途会出现

|

1

|  |
|

2

|

Is this ok [y/d/N]:

|

输入 : y 回车即可

![](https://www.icode9.com/i/ll/?i=img_convert/9364bf61a620e7f84fdc34b96895d4f9.png#align=left&display=inline&height=747&margin=[object Object]&originHeight=747&originWidth=1422&size=0&status=done&style=none&width=1422)

此时 git 已经安装成功。

2、创建 git 账户

在命令框输入(下面不做重复提示了)

adduser git

3、添加 git 账户权限

|

1

|

chmod 740 /etc/sudoers

|
|

2

|

vim /etc/sudoers

|

![](https://www.icode9.com/i/ll/?i=img_convert/830bf25a4fad4da9c4a1b0e79db8942c.png#align=left&display=inline&height=415&margin=[object Object]&originHeight=415&originWidth=1388&size=0&status=done&style=none&width=1388)

输入上面的命令,回车之后,进入编辑界面。

![](https://www.icode9.com/i/ll/?i=img_convert/b84ec1b71d8eb4a96fb47a90a8b6360f.png#align=left&display=inline&height=757&margin=[object Object]&originHeight=757&originWidth=1428&size=0&status=done&style=none&width=1428)

这里要先点击 “i” 键,进入编辑模式,然后找到一下内容的地方:

|

1

|

## Allow root to run any commands anywhere

|
|

2

|

root    ALL=(ALL)     ALL

|

![](https://www.icode9.com/i/ll/?i=img_convert/666ffc198dca16b41706d92cf66dff66.png#align=left&display=inline&height=759&margin=[object Object]&originHeight=759&originWidth=1406&size=0&status=done&style=none&width=1406)

添加以下内容:

git     ALL=(ALL)     ALL

然后按 “Esc” 键,此时最底下的—INSERT—消失,再输入 “:wq”,即保存退出。

4、改回权限

chmod 400 /etc/sudoers

5、设置 git 账户密码

sudo passwd git

输入两次密码就设置成功了。注意,linux 下输入密码是不显示 ** 的,你直接输入,输完回车就行了。

![](https://www.icode9.com/i/ll/?i=img_convert/ab76bf4edf923e383b4adc5fb6cd8064.png#align=left&display=inline&height=371&margin=[object Object]&originHeight=371&originWidth=1181&size=0&status=done&style=none&width=1181)

6、切换至 git 用户,创建 ~/.ssh 文件夹和 ~/.ssh/authorized_keys 文件,并赋予相应的权限

|

1

|

su git

|
|

2

|

mkdir ~/.ssh

|
|

3

|

vim ~/.ssh/authorized_keys

|

按”i” 进入编辑模式,将我们在 win10 中生成的 id_rsa.pub 文件中的公钥复制到 authorized_keys 中,按”esc”,然后按”:wq”,保存退出。

![](https://www.icode9.com/i/ll/?i=img_convert/741dea0f87b190facf2f8a8d8fe0112c.png#align=left&display=inline&height=98&margin=[object Object]&originHeight=98&originWidth=892&size=0&status=done&style=none&width=892)

接着,输入一下命令,赋予权限

|

1

|

chmod 600 /home/git/.ssh/authorized_keys

|
|

2

|

chmod 700 /home/git/.ssh

|

在本地 Git 终端中测试是否能免密登录 git,其中 SERVER 为填写自己的云主机 IP,执行输入 yes 后输入你之前配置的 git 密码,无报错就说明好了。

在电脑本地桌面,右键”Git Bash Here”,输入一下命令,其中 SERVER 填写自己的云主机 ip,执行输入 yes 后不用密码说明配置成功了。

ssh -v git@SERVER

如果你之前配置过 git,可能你会出现以下这种错误。

![](https://www.icode9.com/i/ll/?i=img_convert/a78111e83cc9a9e0e36c90c5ca9825c4.png#align=left&display=inline&height=900&margin=[object Object]&originHeight=900&originWidth=1624&size=0&status=done&style=none&width=1624)

可以看到

Offending ECDSA key in /c/Users/jonty/.ssh/known_hosts:2

是. ssh/known_hosts 这个文件第二行出现冲突了。只要用笔记本打开,将这个文件的第二行删掉即可。

![](https://www.icode9.com/i/ll/?i=img_convert/9dc96a10200fa4ca25c425a936b5e56f.png#align=left&display=inline&height=323&margin=[object Object]&originHeight=323&originWidth=1161&size=0&status=done&style=none&width=1161)

重新执行刚刚的命令

ssh -v git@你的服务器ip

![](https://www.icode9.com/i/ll/?i=img_convert/ec2b614a2d10a8a20699266518c70439.png#align=left&display=inline&height=125&margin=[object Object]&originHeight=125&originWidth=768&size=0&status=done&style=none&width=768)

这说明已经连接成功了。

6.2 创建仓库目录及相关配置

1、创建目录
在 var 目录下创建 repo 作为 Git 仓库目录,返回服务端命令行切换到 root 账户,然后输入:

mkdir /var/repo

![](https://www.icode9.com/i/ll/?i=img_convert/af77a912582ff2a7e3fe9f229b945082.png#align=left&display=inline&height=122&margin=[object Object]&originHeight=122&originWidth=993&size=0&status=done&style=none&width=993)

赋予权限:

|

1

|

chown -R git:git /var/repo

|
|

2

|

chmod -R 755 /var/repo

|

接下来创建 hexo 目录作为网站根目录,并赋予权限:

|

1

|

mkdir /var/hexo

|
|

2

|

chown -R git:git /var/hexo

|
|

3

|

chmod -R 755 /var/hexo

|

接下来创建一个空白的 git 仓库

|

1

|

cd /var/repo

|
|

2

|

git init --bare hexo.git

|

![](https://www.icode9.com/i/ll/?i=img_convert/0f43ea468624be43c458e2e42280e024.png#align=left&display=inline&height=160&margin=[object Object]&originHeight=160&originWidth=1171&size=0&status=done&style=none&width=1171)

创建一个新的 Git 钩子,用于自动部署.

在 /var/repo/hexo.git 下,有一个自动生成的 hooks 文件夹。我们需要在里边新建一个新的钩子文件 post-receive。

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

进入编辑模式,然后将下面那两行代码粘贴进去,保存退出。

|

1

|

#!/bin/bash

|
|

2

|

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

|

修改权限:

|

1

|

chown -R git:git /var/repo/hexo.git/hooks/post-receive

|
|

2

|

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

|

到这里 Git 仓库已经搭建完毕了。

7 配置 Nginx

为了部署和维护,我们使用宝塔面板来一键部署 Nginx

yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && bash install.sh

中途输入”y” 回车等待一会就好了。在执行结果最后会出现地址,用户名,密码等。

![](https://www.icode9.com/i/ll/?i=img_convert/0c00819ccb1b5e6c9fd5f33044209bd3.png#align=left&display=inline&height=402&margin=[object Object]&originHeight=402&originWidth=1322&size=0&status=done&style=none&width=1322)

复制这个地址打开,输入账号密码即可进入宝塔面板。

![](https://www.icode9.com/i/ll/?i=img_convert/87afa3882bd384360327b7eb6cdc6836.png#align=left&display=inline&height=894&margin=[object Object]&originHeight=894&originWidth=1017&size=0&status=done&style=none&width=1017)

注意:这里也有可能你进不去面板页面,是因为你的服务器没有开 8888 这个端口(具体看你的宝塔面板连接的端口),去阿里云轻量服务器控制台中的 “安全”->“防火墙”,右上角的” 添加规则”,添加相应的端口即可。看下面的第二张图。

![](https://www.icode9.com/i/ll/?i=img_convert/9a667423167876c5033c0a301356bf9c.png#align=left&display=inline&height=565&margin=[object Object]&originHeight=565&originWidth=365&size=0&status=done&style=none&width=365)

![](https://www.icode9.com/i/ll/?i=img_convert/b89131d28d0b7f69332dd643e2e53f2a.png#align=left&display=inline&height=641&margin=[object Object]&originHeight=641&originWidth=941&size=0&status=done&style=none&width=941)

另外如果忘记了宝塔用户名密码,可以去你服务器终端输入:

cd /www/server/panel && python tools.py panel testpasswd

下图为宝塔解决方案,链接忘记 Linux 3.X/4.x/5.x/6.x 宝塔面板密码的解决方案

![](https://www.icode9.com/i/ll/?i=img_convert/f961bda99b5e09b3d07cd92994d752b2.png#align=left&display=inline&height=692&margin=[object Object]&originHeight=692&originWidth=1371&size=0&status=done&style=none&width=1371)

进入面板之后,会提示叫你修改端口,点击” 立即修改”, 可以看到” 面板端口” 这时候是 8888,自己选一个值,然后先去服务器防火墙上开放这个端口,跟刚刚的” 添加规则” 操作一样。

再回到宝塔面板页面将” 面板端口” 的值修改成你刚刚开放的端口值。

然后需要用新端口,重新进入宝塔面板,就是将原有的链接”:” 后面的值改成你的端口即可。

![](https://www.icode9.com/i/ll/?i=img_convert/74019769dc48f492b1fca9956759ccf0.png#align=left&display=inline&height=729&margin=[object Object]&originHeight=729&originWidth=2174&size=0&status=done&style=none&width=2174)

在宝塔面板,进入软件商店,输入”Nginx”,然后搜索,安装免费的那个。

![](https://www.icode9.com/i/ll/?i=img_convert/c4bb1503d819cbb12721b6630282aaf8.png#align=left&display=inline&height=1075&margin=[object Object]&originHeight=1075&originWidth=2515&size=0&status=done&style=none&width=2515)

等待部署完成。

部署完成之后,点击网站,添加站点,填写你的域名,没有的话写你的服务器 ip 地址。其他的不要改。

![](https://www.icode9.com/i/ll/?i=img_convert/b8d647eb18f5c9593320b1d6c05bfa47.png#align=left&display=inline&height=1139&margin=[object Object]&originHeight=1139&originWidth=1883&size=0&status=done&style=none&width=1883)

填写完之后提交,然后点击” 设置”

![](https://www.icode9.com/i/ll/?i=img_convert/412ca1813f925b46dd9bccd1b7efb056.png#align=left&display=inline&height=280&margin=[object Object]&originHeight=280&originWidth=2109&size=0&status=done&style=none&width=2109)

点击” 配置文件”

|

1

|

server

|
|

2

|

{

|
|

3

|

    listen 80;

|
|

4

|

    # server_name填写你自己的域名,没有的话填ip

|
|

5

|

    server_name hjxlog.com;

|
|

6

|

    index index.php index.html index.htm default.php default.htm default.html;

|
|

7

|

    # 这里root填写自己的网站根目录,修改为/var/hexo

|
|

8

|

    root /var/hexo;

|

保存,然后选择 “设置”-“网站目录”,将网站目录修改成以下,保存。

/var/hexo

![](https://www.icode9.com/i/ll/?i=img_convert/af4373fc5f95c4b61fc5784f3a417ddd.png#align=left&display=inline&height=586&margin=[object Object]&originHeight=586&originWidth=1115&size=0&status=done&style=none&width=1115)

回到服务器终端,重启宝塔服务,使之生效。

service bt restart

8 修改 hexo 配置

进入本地电脑 hexo 博客的根目录,编辑站点配置文件 _config.yml,找到 deploy,修改成以下

|

1

|

deploy:

|
|

2

|

  type: git

|
|

3

|

  #repo改为repo: git@你的域名:/var/repo/hexo.git

|
|

4

|

  repo: git@hjxlog.com:/var/repo/hexo.git

|
|

5

|

  branch: master

|

最后在本地电脑 hexo 博客的根目录右击,Git Bash Here,输入以下命令部署

hexo clean
hexo d -g

这时候可能出现权限问题,导致部署到 git 失败。

![](https://www.icode9.com/i/ll/?i=img_convert/2090f825935b597692840ba8305e3bce.png#align=left&display=inline&height=298&margin=[object Object]&originHeight=298&originWidth=1481&size=0&status=done&style=none&width=1481)

在服务器终端输入以下命令即可:

|

1

|

chown -R git:git /var/repo/

|
|

2

|

chown -R git:git /var/hexo/

|

最后再 hexo d -g 部署,应该就可以看到部署成功了。

![](https://www.icode9.com/i/ll/?i=img_convert/9ff4bc91ff820e8c35d94322b1c27514.png#align=left&display=inline&height=149&margin=[object Object]&originHeight=149&originWidth=1401&size=0&status=done&style=none&width=1401)

自此,已经将博客从 GitHub pages 搬到阿里云服务器了。

![](https://www.icode9.com/i/ll/?i=img_convert/723f23e6ac5842eda4d1fd6d244b5b94.png#align=left&display=inline&height=1316&margin=[object Object]&originHeight=1316&originWidth=2560&size=0&status=done&style=none&width=2560)

9 将网站添加 https 访问

去阿里云申请一个免费的 SSL 证书,好像要备案,有点忘记了,很快就申请下来了。

进入宝塔面板,” 网站”,” 设置”,”SSL,” 其他证书”

![](https://www.icode9.com/i/ll/?i=img_convert/411034d0f1d904d603d4e83ba4935752.png#align=left&display=inline&height=1035&margin=[object Object]&originHeight=1035&originWidth=2062&size=0&status=done&style=none&width=2062)

将你申请的证书_.key 以及_.pem 内容,粘贴进去然后保存即可。

![](https://www.icode9.com/i/ll/?i=img_convert/ed9796a0f0e75ff540679eb99b42fc4e.png#align=left&display=inline&height=197&margin=[object Object]&originHeight=197&originWidth=1087&size=0&status=done&style=none&width=1087)

10 持续更新

2020-03-15 根据评论和邮件反馈遇到的常见问题更新

根据有同学遇到上图这种情况,如果提示

|

1

|

Could not resolve hostname ***.com: Name or service not known

|
|

2

|

Please make sure you have the correct access rights

|

那么看一下自己的域名是否实名验证成功了,如果已验证。可以 ping 一下域名看能不能 ping 得通,有可能是你没有把域名解析到服务器 ip 地址上了。

另外,Mac OS 可能在配置方面和 Windows 不太一样。具体问题要具体分析,具体解决了。

11 总结

在部署网站的时候,由于之前对 Linux 没有经验,网络上看到几篇博客,还是没能部署成功,有些博客比如命令中的单词拼写错误,或者前后不衔接,导致部署一直有问题。

还好在部署的同时去网上学一些 Linux 基本命令,学到了进入编辑模式,编辑完怎么退出等等。之前看了一篇博客,可能作者默认大家都会了,结果我卡在这里了一下。

总的来说,部署还是比较简单的,第一次没成功的同学不要轻易放弃,多去网上找找答案,努力解决问题,加油!

如果因为看我的博客,在部署过程当中出现任何问题,请私信我或者邮箱联系我,帮助大家一起解决问题。

上一篇:WebForm基础


下一篇:SpringBoot日期转换器