本地博客部署计划

关于这篇文章的意义

在互联网服务的选择上,确实存在多种方案,各有利弊。虚拟主机平台因其价格便宜、配置简单而受到许多用户的青睐。例如,织音云提供了多种类型的虚拟主机套餐,这些套餐通常价格实惠,适合预算有限或者需求不高的用户。虚拟主机通过FTP进行文件传输,对于一些简单的网站或者应用来说,这已经足够使用。
然而,对于那些追求更高自定义性、灵活性和便捷性的用户来说,传统的FTP传输可能显得不够高效。这时,VPS(Virtual Private Server,虚拟私有服务器)搭配Git进行版本控制和部署的方式会更加方便。VPS提供了更高的权限和更灵活的配置选项,允许用户按照自己的需求进行服务器配置和管理。
FRP(Fast Reverse Proxy)加上本地服务器搭建的方式是另一种选择。这种方式通过在内网穿透工具FRP的帮助下,使用本地服务器来提供服务,可以实现一些特殊需求,比如在本地服务器上运行一些特定的服务或应用。虽然这种方式在成本上可能高于虚拟主机但低于VPS,它在某些场景下可能是一个折中的解决方案。
总的来说,选择哪种服务取决于用户的具体需求、预算以及对技术操作的熟悉程度。虚拟主机适合入门级用户和小型项目,而VPS和FRP+本地服务器搭建则更适合那些需要更多控制权和定制化服务的用户。每种方案都有其优势和局限性,用户需要根据自己的实际情况做出选择。

准备

如果你是一个有特殊需求,例如需要运行自己的服务或应用,并且希望这些服务能够通过互联网访问的用户,那么你可能需要具备一些基本的技术设备和知识。以下是你可能需要准备的一些条件和技能:

  1. 编译设备:无论是个人电脑(PC)还是智能手机,你需要一个能够进行编译和运行服务的设备。这个设备需要足够的处理能力和内存来满足你的服务需求。
  2. FRP服务提供商:FRP(Fast Reverse Proxy)是一种内网穿透工具,它允许外网访问你本地服务器上的服务。你可以选择一个FRP服务提供商,如樱花FRP、Open FRP等,来帮助你实现这一功能。
  3. 本地服务器:这可以是一台物理服务器或者一个虚拟机,用于运行你的服务或应用。它需要足够的硬件资源来支持你的服务运行,并且需要安装一个合适的操作系统。
  4. 网线:用于连接你的本地服务器和路由器,确保服务器能够接入互联网。
  5. 系统镜像:这是安装操作系统的预配置文件。你需要根据你的服务器硬件和需求选择合适的系统镜像。
  6. Linux知识:为了配置和管理你的服务器,你需要具备一些基本的Linux知识。这包括了解如何使用命令行界面、管理文件系统、安装软件包以及进行基本的网络配置。

通过这些准备,你将能够搭建一个本地服务器,并通过FRP服务将其暴露到互联网上,从而实现远程访问和管理。这种方式虽然需要一定的技术知识和初始设置,但它提供了高度的灵活性和控制力,允许你根据个人需求自定义服务。

开始

连接上你的服务器

我的服务器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 的隧道

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