本地博客部署计划

关于这篇文章的意义

从某种意义上来讲,这玩意有点费力不讨好。

首先,网上的虚拟主机平台很多,且便宜

如织音云就提供了多种种类的虚拟主机套餐,还挺实惠的,其他的暂时不了解

但这种服务平台多半都是FTP传输服务,不如vps配置好了git连接更加方便

所以有了这种frp+本地服务器搭建的方式

但是这种方式成本颇高,但比vps便宜。

准备

  • 如果你是有这样需求的,应该至少是有编译设备的(pc或手机终端)

  • frpc服务商(樱花frp,Open frp等)

  • 本地服务器

  • 网线

  • 系统镜像

  • 简单的linux知识

开始

连接上你的服务器

我的服务器ip为192.168.21.128,所以ssh ubuntu@192.168.21.128

因为命令面板是有点麻烦,所以我们采用面板来开始配置静态环境

我推荐是1Panel或者宝塔

我这里使用的是1Panel ,主要是这个是现代化UI设计(简称:好看)

1
2
3
4
5
6
7
8
# RedHat / CentOS 安装脚本
curl -sSL https://resource.fit2cloud.com/1panel/package/quick_start.sh -o quick_start.sh && sh quick_start.sh

# Ubuntu 安装脚本
curl -sSL https://resource.fit2cloud.com/1panel/package/quick_start.sh -o quick_start.sh && sudo bash quick_start.sh

# Debian 安装脚本
curl -sSL https://resource.fit2cloud.com/1panel/package/quick_start.sh -o quick_start.sh && bash quick_start.sh

安装成功后,控制台日志会提示对应端口号,可通过浏览器访问如下页面登录 1Panel:

1
http://目标服务器 IP 地址:目标端口

配置用户名和密码

面板首页

根据提示我们先安装OpenResty

随便写一个名字开始安装

等待一会就安装完毕

选择网站,创建网站

选择静态网站,域名哪里随便填写,其他域名那里填写127.0.0.1:任意端口

访问创建的网站

git环境配置

创建一个名为blog的用户,用于管理Hexo项目

1
sudo adduser blog

给blog账号添加权限

1
2
3
4
5
6
sudo vim /etc/sudoers

# 找到User privilege specification部分,添加如下内容:
blog ALL=(ALL:ALL) ALL

# 使用wq!强制保存

切换至blog用户

1
su blog

配置git环境

1
2
3
4
5
6
7
8
# 创建repo文件夹
sudo mkdir /var/repo/
# 添加权限
sudo chown -R $USER:$USER /var/repo/
sudo chmod -R 755 /var/repo/
# 切换至/var/repo文件夹,创建git库
cd /var/repo/
git init --bare hexo.git

创建git钩子

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

写入下面内容

1
2
3
#!/bin/bash

git --work-tree=/opt/1panel/apps/openresty/jinghuashang/www/sites/hexo/index --git-dir=/var/repo/hexo.git checkout -f

注意:tree位置就是你的网站根目录

文件变为可执行文件

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

这样配置是无法上传的,得给网站根目录添加777权限

1
sudo chmod 777 /opt/1panel/apps/openresty/jinghuashang/www/sites/hexo/index

添加ssh公钥

每次上传都要输入密码,非常麻烦,所以添加一个免密验证

1
2
3
4
5
6
# 首先创建.ssh目录,并进入该目录
sudo mkdir .ssh
cd .ssh/

# 将你windows下的id_rsa.pub写入authorized_keys文件
sudo vim authorized_keys

给hexo 配置文件添加一下

1
2
3
-  type: git
repo: blog@你的服务器ip:/var/repo/hexo.git
branch: master

上传

1
hexo d

提示

如果无法上传,基本上都是路径的权限问题。

内网穿透服务 - frp

以上传了仅供本地访问,想要外网访问就需要frp

  • 推荐使用樱花Frp

windows 篇

因为都用windows了,直接就用图形界面点击下载Windows 安装程序

安装后去官网用户中心获取用户密钥

并将用户密钥复制到账户 - 访问密钥

接下来的配置相比已经挺简单了,就不一一赘述了

linux 篇

下载

点击下载你相对应的linux发行版的frpc

咱推荐直接获取下载地址,然后去你的linux服务器直接用wget下载

1
wget https://getfrp.sh/d/frpc_linux_amd64 -O frpc

这样你就获取到了一个frpc客户端,但是还不是可执行文件

1
2
3
4
5
6
7
8
9
# 设置775权限
chmod 755 frpc
# 校验文件是否损坏
ls -ls frpc
md5sum frpc

# 输入以下出现版本说明程序正常
./frpc -v
# 0.45.0-sakura-5.2

同时为了方便使用建议将frpc放到/usr/local/bin/目录,并且新建一个frpc的工作目录/usr/local/etc/natfrp
并且新建一个Systemd 的frpc文件,具体操作如下:

1
2
3
4
5
6
# 将frpc放到/usr/local/bin/目录
sudo mv frpc /usr/local/bin/
# 新建一个frpc的工作目录
sudo mkdir -p /usr/local/etc/natfrp
# 新建一个Systemd 的frpc文件
sudo vim /etc/systemd/system/frpc@.service

提示
如果您希望提高安全性,降低被入侵造成的危险,请反注释下面的DynamicUser配置项。 启用此功能将导致自动 HTTPS 等功能需要写入文件时出现不完全与教程相同的行为,请在确认您有相关能力的情况下启用。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[Unit]
Description=SakuraFrp Service
After=network.target

[Service]
Type=idle
#DynamicUser=yes
Restart=on-failure
RestartSec=60s
ExecStart=/usr/local/bin/frpc -f %i
WorkingDirectory=/usr/local/etc/natfrp

[Install]
WantedBy=multi-user.target

执行下面的命令重载 Systemd,这样服务就配置完成了

1
sudo systemctl daemon-reload

提示
请记住后续操作中用到的 Unit 名称frpc@<启动参数>,例如 frpc@wdnmdtoken666666:12345

下面本教程将介绍一些 Systemd 的基本操作

启动/停止隧道

启动/停止隧道非常简单,使用下面的命令即可,start 是启动,stop 是停止

1
sudo systemctl <start|stop> <Unit名称>

提示
如果您想开启多条不同隧道,只要更换 Unit 名称 中的启动参数并多次执行对应的指令即可

举个例子,开启访问密钥为 wdnmdtoken666666 的用户所拥有的 ID 为 12345 的隧道:

1
sudo systemctl start frpc@wdnmdtoken666666:12345
查看隧道状态

您可以通过下面的命令查看服务状态

1
sudo systemctl status <Unit名称>

举个例子,要查看上面开启的隧道状态可以使用
1
sudo systemctl status frpc@wdnmdtoken666666:12345

注意
绝对不要 开启重复的隧道,这会造成出现各种不可预计的 Bug
执行多次 systemctl start安全
配置好 Systemd 后,不要 再用 frpc -f <启动参数> 的形式开启隧道

如果您忘记了之前开启过哪些隧道,使用下面的命令可以列出当前运行中的隧道

1
sudo systemctl list-units "frpc@*"

下图中的信息表示我们开启了访问密钥为 wdnmdtoken666666 的用户所拥有的两条 ID 分别为 12345 和 67890 的隧道

这是一个勉强有点网络知识和经验的小博主的教程,或许有些不对的地方,欢迎到评论指出错误