抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

本文记录了本站的建立过程,并添加了部分说明。

本地系统:

  • OS:Windows 10
  • git:2.33.1.windows.1
  • Node.js:14.18.1

远程服务器:

  • OS:CentOS 8.2
  • git:2.27.0

环境部署

本地安装 git 和 node.js

使用 Hexo

本地安装 Hexo

在任意位置右键,使用“ Git Bash Here ”。输入命令以安装 Hexo :

1
npm install -g hexo-cli

注意:如果之前有安装过 Hexo ,可以使用以下命令卸载:

1
2
npm uninstall -g hexo-cli
npm uninstall -g hexo

初始化 Hexo

在本地目标文件夹下使用“ Git Bash Here ”。输入以下命令以初始化 Hexo :

1
hexo init

注意:如果想新建文件夹以建站,可以在其父目录下使用带参数的命令以生成文件夹:

1
hexo init <目标文件夹>

此时会生成新文件夹并将其初始化,然后使用以下命令进入目录:

1
cd <目标文件夹>

更换主题[可选]

若想美化自己的网站,可以在此时进行主题更换。也可以在之后通过更换、迁移等方式操作。具体方法参见相关 Hexo 主题站。

配置SSH密钥

为了使本地内容与远程 github 建立联系,可以选择在本地配置 SSH 密钥。这样便可以在本地直接提交代码到 GitHub 上或者远端 git 仓库。

如果是第一次配置 SSH ,需要配置 git 的 username 和 useremail :

1
2
git config --global user.name "<用户姓名>"
git config --global user.email "<用户邮箱>"

之后生成 SSH 密钥:

1
ssh-keygen -t rsa -C "<上面的邮箱>"

具体的复杂设置可以查询相关资料,为简单起见,此处输入三个回车。之后会在个人用户路径下的 .ssh 文件夹中生成两个文件:id_rsa 和 id_rsa.pub。

可以将 id_rsa.pub 复制到服务器上,也可以复制其内容通过远程连接创建 id_rsa.pub 文件。

服务器部署

通过阿里云的远程连接操作服务器。输入以下命令切换到 root 账号:

1
sudo su root

git 配置

安装 git

输入以下命令以在服务器中安装 git :

1
yum install git

途中会需要确认,按Y后按Enter

显示“ Complete! ”表示 git 安装成功。

创建 git 账户

输入以下命令以在服务器中创建 git 账户:

1
adduser git

添加 git 账户权限

1
2
chmod 740 /etc/sudoers
vim /etc/sudoers

这时会进入编辑界面,按I键进入编辑模式,通过方向键找到下述行:

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

在上述行下添加该行:

1
git     ALL=(ALL)     ALL

然后按Esc键退出编辑模式,最下方的“–INSERT–”消失,然后输入“:wq”回车以保存退出。

改回权限

1
chmod 400 /etc/sudoers

设置git账户密码

1
sudo passwd git

随后输入两次密码。在输入密码期间终端上是不会显示密码内容或‘*’等密码掩码的。显示以下内容表明密码设置成功:

1
passwd: all authentication tokens updated successfully.

创建公钥

切换至 git 用户,创建 SSH 文件夹和授权密钥:

1
2
3
su git
mkdir ~/.ssh
vim ~/.ssh/authorized_keys

将 id_rsa.pub 文件中的内容复制进 authorized_keys 文件中,也可以将 id_rsa.pub 文件传输至对应位置并改名 authorized_keys。复制方法参见5.1.3。

输入以下命令赋予对应权限:

1
2
chmod 600 /home/git/.ssh/authorized_keys
chmod 700 /home/git/.shh

在本地 git 终端中测试是否能登录 git:

1
ssh -v git@<服务器外网IP地址>

注意:若曾经配置过 git 可能会出现“ offending ECDSA key ”错误,可以通过删除或修改 .ssh 文件夹中的 known_hosts 文件解决问题。

若出现以下行说明连接成功:

1
welcome to Alibaba Cloud Elastic Compute Service !

创建仓库目录及相关配置

创建目录

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

1
mkdir /var/repo

赋予权限:

1
2
chown -R git:git /var/repo
chmod -R 755 /var/repo

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

1
2
3
mkdir /var/hexo
chown -R git:git /var/hexo
chmod -R 755 /var/hexo

创建一个空白的 Git 仓库:

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

创建一个新的 Git 钩子,用于自动部署。在 /var/repo/hexo.git 下有一个自动生成的 hooks 文件夹。在里面新建一个新的钩子文件 post-receive:

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

进入编辑模式,输入以下内容然后保存退出:

1
2
#!/bin/bash
git --work-tree=/var/hexo --git-dir=/var/repo/hexo.git checkout -f

修改权限:

1
2
chown -R git:git /var/repo/hexo.git/hooks/post-receive
chmod +x /var/repo/hexo.git/hooks/post-receive

至此 Git 仓库搭建完毕。

配置 Nginx

在服务器端配置 Nginx 的方法有很多,本文使用宝塔面板来部署 Nginx:

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

中途可能需要输入“ y ”来确认。最后会出现以下行,记录下地址,账号和密码:

1
2
3
Bt-Panel: http://********
username: ********
password: ********

复制地址并在浏览器中访问,输入账号密码。若无法登录可以在阿里云控制台内确认8888端口是否开放。

若忘记了账号密码,可以在服务器终端输入:

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

修改密码、端口等问题参见相关文章。

通过宝塔面板安装 Nginx。

部署完成后点击“网站” - “添加站点”,在“域名”框中填写域名或服务器 IP 地址,其他保持默认。然后点击“提交”。

提交完成后点击对应站点后的“设置”。再点击“配置文件”:

1
2
3
4
5
6
7
8
server
{
listen 80;
# server_name填写你自己的域名,没有的话填ip
server_name <域名或 IP 地址>;
index index.php index.html index.htm default.php default.htm default.html;
# 这里root填写自己的网站根目录,修改为/var/hexo
root /var/hexo;

保存之后选择“设置” - “网站目录”,修改网站目录后保存:

1
/var/hexo

回到服务器终端重启宝塔服务:

1
service bt restart

修改 hexo 配置

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

1
2
3
4
deploy:
type: git
repo: git@[域名或IP地址]:/var/repo/hexo.git
branch: master

最后在本地电脑 hexo 博客的根目录使用 git bash,输入以下命令部署:

1
2
hexo clean
hexo d -g

若出现权限问题,在服务器终端输入以下命令即可:

1
2
chown -R git:git /var/repo
chown -R git:git /var/hexo

然后再输入部署命令。

评论



This is a picture without description

This is a picture without description This is a picture without description This is a picture without description