本文记录了本站的建立过程,并添加了部分说明。
本地系统:
- 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 | npm uninstall -g hexo-cli |
初始化 Hexo
在本地目标文件夹下使用“ Git Bash Here ”。输入以下命令以初始化 Hexo :
1 | hexo init |
注意:如果想新建文件夹以建站,可以在其父目录下使用带参数的命令以生成文件夹:
1 | hexo init <目标文件夹> |
此时会生成新文件夹并将其初始化,然后使用以下命令进入目录:
1 | cd <目标文件夹> |
更换主题[可选]
若想美化自己的网站,可以在此时进行主题更换。也可以在之后通过更换、迁移等方式操作。具体方法参见相关 Hexo 主题站。
配置SSH密钥
为了使本地内容与远程 github 建立联系,可以选择在本地配置 SSH 密钥。这样便可以在本地直接提交代码到 GitHub 上或者远端 git 仓库。
如果是第一次配置 SSH ,需要配置 git 的 username 和 useremail :
1 | git config --global user.name "<用户姓名>" |
之后生成 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 | chmod 740 /etc/sudoers |
这时会进入编辑界面,按I键进入编辑模式,通过方向键找到下述行:
1 | ## Allow root to run any commands anywhere |
在上述行下添加该行:
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 | su git |
将 id_rsa.pub 文件中的内容复制进 authorized_keys 文件中,也可以将 id_rsa.pub 文件传输至对应位置并改名 authorized_keys。复制方法参见5.1.3。
输入以下命令赋予对应权限:
1 | chmod 600 /home/git/.ssh/authorized_keys |
在本地 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 | chown -R git:git /var/repo |
创建 hexo 目录作为网站根目录,并赋予权限:
1 | mkdir /var/hexo |
创建一个空白的 Git 仓库:
1 | cd /var/repo |
创建一个新的 Git 钩子,用于自动部署。在 /var/repo/hexo.git 下有一个自动生成的 hooks 文件夹。在里面新建一个新的钩子文件 post-receive:
1 | vim /var/repo/hexo.git/hooks/post-receive |
进入编辑模式,输入以下内容然后保存退出:
1 |
|
修改权限:
1 | chown -R git:git /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 | Bt-Panel: http://******** |
复制地址并在浏览器中访问,输入账号密码。若无法登录可以在阿里云控制台内确认8888端口是否开放。
若忘记了账号密码,可以在服务器终端输入:
1 | cd /www/server/panel && python tools.py panel testpasswd |
修改密码、端口等问题参见相关文章。
通过宝塔面板安装 Nginx。
部署完成后点击“网站” - “添加站点”,在“域名”框中填写域名或服务器 IP 地址,其他保持默认。然后点击“提交”。
提交完成后点击对应站点后的“设置”。再点击“配置文件”:
1 | server |
保存之后选择“设置” - “网站目录”,修改网站目录后保存:
1 | /var/hexo |
回到服务器终端重启宝塔服务:
1 | service bt restart |
修改 hexo 配置
进入本地电脑 hexo 博客的根目录,编辑站点配置文件 _config.yml。找到 deploy 项,修改为以下内容:
1 | deploy: |
最后在本地电脑 hexo 博客的根目录使用 git bash,输入以下命令部署:
1 | hexo clean |
若出现权限问题,在服务器终端输入以下命令即可:
1 | chown -R git:git /var/repo |
然后再输入部署命令。