本教程将手把手进行配置云服务器。以腾讯云服务器为例,首先购买一个轻量云服务器。
SSH 连接
重置服务器
重置购买的服务器,这里选择 Ubuntu 20.04 LTS 镜像。可选择性地跳过此步骤。
点击登陆打开网页终端。
编辑 SSH 配置文件
sudo vim /etc/ssh/sshd_config
更改以下内容:
PermitRootLogin yes
PasswordAuthentication yes
重启 SSH 服务:
sudo service ssh restart
添加用户并登陆
为自己添加一个用户:
sudo adduser 用户名
输入密码(不会显示):
New password:
Retype new password:
passwd: password updated successfully
Changing the user information for wuhaonan:
Enter the new value, or press ENTER for the default
Full Name []:
Room Number []:
Work Phone []:
Home Phone []:
Other []:
Is the information correct? [Y/n] y
给予用户管理员权限:
sudo visudo
找到 root ALL=(ALL) ALL
,在下面添加一行:
用户名 ALL=(ALL) ALL
在本地使用用户名密码登陆:
ssh 用户名@服务器地址
此方法在每次进行部署时都需要输入密码,配置 SSH 密钥登陆可以免去输入密码的步骤,可以参考《SSH 密钥连接 Linux 服务器》。
服务器环境配置
搭建 Git 仓库
安装 Git:
sudo apt install git
git --version
创建用户 git:
sudo adduser git
切换到 git 用户:
su git
创建 Git 仓库:blog.git
cd ~
mkdir repo
cd repo
git init --bare blog.git
接着可以将仓库克隆到本地:
git clone git@服务器地址:/home/git/repo/blog.git
安装服务器程序
安装一个服务器程序,以 Apache2 为例。在 SSH 终端中使用 control + D
退出 git 用户,安装 apache2:
sudo apt install apache2
在浏览器中输入服务器的 IP 地址可以看到 apache2 程序的默认界面。
服务器的根目录位于 /var/www/html
目录,目录下有一个 index.html
文件,就是所看到的 Apache2 的默认程序界面。若要修改服务器程序的根目录,可以修改配置文件 /etc/apache2/sites-enabled/000-default.conf
更改其中的 DocumentRoot
项即可。
只需要将博客拷贝到该目录,就可以运行了。
配置 Git 钩子
在这里需要配置 Git 钩子。和其它版本控制系统一样,Git 能在特定的重要动作发生时触发自定义脚本。有两组这样的钩子:客户端的和服务器端的。客户端钩子由诸如提交和合并这样的操作所调用,而服务器端钩子作用于诸如接收被推送的提交这样的联网操作。
关于 Git 钩子,可以参考 Git 的官方文档。
我们需要做的,是在服务器端的 Git 仓库接收到新的 push 的时候,将仓库内容复制到服务器目录下,所以我们需要配置 post-receive 钩子。
vim /home/git/repo/blog.git/hooks/post-receive
粘贴以下内容:
#!/bin/bash
git --work-tree=/var/www/html --git-dir=/home/git/repo/blog.git checkout -f
使用 :wq
命令退出 vim。
加上权限:
sudo chmod +x /home/git/repo/blog.git/hooks/post-receive
为了使网站根目录可以被钩子修改,加上权限:
sudo chmod -R 777 /var/www/html
配置本地 Hexo
在配置好的 Hexo 环境中,打开网站配置文件 _config.yml
,加入以下内容。
Hexo 博客的配置可以参考《使用 Hexo 和 GitHub 搭建自己的个人博客平台》。
# Deployment
## Docs: https://hexo.io/docs/one-command-deployment
deploy:
type: git
repo: git@服务器地址:/home/git/repo/blog.git
branch: master
message: 'hexo commit'
部署博客
hexo g
hexo d