一、前言

突然好想写一些废话🤨,要不你把这个前言跳了?

我小时候就一直想有一个自己的网站,想起来当时找教程的方式是直接上百度直勾勾的搜索怎么建网站就有一点想笑😂,哪怕是现在你直接在百度搜,这私人玩意也只会给你弹一坨垃圾信息出来😅。

大一的时候刚学 HTML 的时候还挺激动,想着终于能有一个自己的网站了。在网上搜了一下,说网站要云服务器,就花了 99 块大洋给阿里云,买了一年的 2 核 2G 长期同价续费的云服务器。当时不怎么了解价格,我游戏一次性冲 100 的次数都不过 10 次,还挺心疼的,不过现在看这个套餐其实挺划算的🤓。最后写了一个超级简陋的,直接用IP地址访问的静态 HTML 页面放上去,感觉像小时候往U盘里面放文件的快捷方式,有点不明所以了哈🙄。

后面学了 Vue 之后也想过自己写一个博客网站的,有点高看自己了哈🙄,后端反正搞不明白,释怀了,直接用现成的去了😅。但是后面还想部署一些云服务,想用 Nginx,配置文件难得搞,反正就是怎么也访问不上。

之后知道了宝塔面板,我看挺方便的,本来打算用了。但我看,看那些介绍视频,wok!这 UI 丑死了(卡颜,不好意思哈🤗),而且部署在我本地的东西为什么用的时候还要登你的账号😡(这就是 NTR)。于是我想到了万能的开源社区,像这种商业化挺高的东西,开源社区一般都会有更好的代替品。

于是,这篇文章的标题出场了😃👆。酷炫的外观已经吸引我了,我想都没想就直接用了(卡颜,不好意思哈🤗),并且使用起来也真的非常方便。我现在这个网站和部署的一些云服务(像 code-server、QQ群里的聊天机器人、软件的后端)都是用 1Panel 管理的。

这篇文章将介绍怎么用 1Panel 搭建博客网站和部署云服务,希望大家看了能有所收获🥰。

在开始前我先说明一下,博主使用的连接到服务器终端的工具是 MobaXterm,比从云服务器官网使用的终端(我觉得🤨)要好用一点, MobaXterm 使用教程可以参考我之前写的 MobaXterm:强大的远程网络工具,SSH 远程连接功能的使用 | 滕王阁。只是推荐一下,不用也没关系。

二、1Panel 介绍

1Panel 提供了一个直观的 Web 界面,帮助用户轻松管理 Linux 服务器中的网站、文件、容器(docker)、数据库以及大型语言模型(LLMs)。

yfbCCspf-1.png

三、部署 1Panel

官方部署链接:在线安装 - 1Panel 文档,看官方的文档还是下面我写的教程都可以,自己选一个🥰。

1、选择一台主机作为你的服务器

如果家用宽带外网IP或者有内网穿透的手段,技术理论上是可以将本地主机作为服务器的,但法律弥补了这一点😅。所有对中国大陆境内提供服务的网站/APP都必须先进行 ICP 备案,而个人服务器是拿不到备案资格的,只能去买提供云服务厂商的云服务器。拿家用宽带建站被发现了直接就给你 BAN 了,还可能被请去喝茶😋(毕竟中国的家用宽带是很便宜的,拿家用宽带建站无疑是在薅羊毛🐏)。

所以建站一般真的要买一台云服务器,云服务器的选择上一般就是 阿里云 或者 腾讯云 这种老牌服务器供应商,他们经常有超级划算的🥰 [2核2G] 99元/年 和 [2核4G] 199元/年 的长期同价续费优惠(我这个网站服务器就选的腾讯云的 [2核4G],这种活动一般找一找就有了,都快成常驻的了🤤)。规格的话如果建博客网站就 [2核4G],一些小型的云服务选 [2核2G] 就够了。但真的推荐 [2核4G] 一步到位,入了这个坑肯定会忍不住折腾一些别的东西,不要像博主一样买了 [2核2G] 的服务器后发现运存不够,又买了一台 [2核4G] 的,导致 [2核2G] 的那台直接空在那里了😭。

购买之后安装一个 Linux 系统就可以了。这里只推荐 CentOS Stream、Ubuntu、Debian,千万不要选 Windows(没人会用 Windows 做服务器服务器😅)和云服务器厂商自行修改的 Linux 发行版(比如腾讯云的 OpenCloudOS,这种系统的问题是不知道会改些什么东西,出了问题你网上找都找不到解决方案🙄)。

2、远程登录你的云服务器

进入服务器控制台,选择登录。这里推荐直接用 root 用户登录,这样权限高一点。如果使用的 ubuntu 系统,root 用户是默认不开放的,解决方法见腾讯云官方文档 Ubuntu 系统如何使用 root 用户登录实例 。(如果选用的其他厂商的服务器或其他 Linux 操作系统无法使用 root 登录,可以在服务器厂商网站中搜索教程,一般都会有的🥰)

yfbCCspf-2.png

yfbCCspf-3.png

当然如果你觉得每次登录都需要进入控制台不是很方便(直接用也不是不可以,只是每次都要打开网页很不方便),也可以下载其他的提供 SSH 连接的软件,比如博主用的 MobaXterm(如果使用了其他能连接到服务器终端的方法可以跳过这一步), MobaXterm 使用教程可以参考我之前写的 MobaXterm:强大的远程网络工具,SSH 远程连接功能的使用 | 滕王阁

3、安装 1Panel

根据你云服务器安装的系统在终端输入对应的指令,跟随它的安装脚本提示一步步来就行了(真的是傻瓜式安装🤤)。

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

4、开放 1Panel 防火墙端口

如果你这时直接访问 1Panel 安装脚本给出的网址时会发现无法访问,这是因为云服务厂商为了安全考虑,关闭了一些非常用端口,我们需要自行将它打开。

登录云服务器控制台,选择防火墙。

yfbCCspf-4.png

选择添加规则,将 1Panel 面板端口按下图添加进去。

yfbCCspf-5.png

yfbCCspf-6.png

5、访问 1Panel

访问 1Panel 安装脚本给出的网址,输入账户密码就能成功登录了😘。

yfbCCspf-7.png

五、博客网站搭建与云服务部署

1、安装 Web 服务器

你的服务器如果想在互联网提供 Web 服务需要在上面先安装 Web 服务器。当前使用最广泛的 Web 服务器是 Nginx,而 OpenResty 是一个基于 Nginx 的高性能 Web 应用服务器,它将 Nginx 与 Lua 编程语言集成在一起,提供了强大的功能和灵活性(就是 Nginx 的升级版)。这也是使用 1Panel 网站管理功能所必须安装的。

进入应用商店,找到 OpenResty 点击安装。

yfbCCspf-8.png

2、安装博客框架

博客框架简单来说就是搭建博客网站的一套工具,它帮助你快速搭建、管理和发布文章内容,自动实现排版、导航、归档等功能。

1Panel 的应用商店提供了很多搭建网站的应用,不只是博客网站。这里推荐 Halo(博主网站就是用的这个),一个新兴强大的建站工具(和 1Panel 都是这个叫 飞致云 的公司研发的,感兴趣的可以去他们的开源社区看看🥰),拿这个建博客网站还是很容易的,而且里面有很多好看的主题。然后就是 WordPress,老牌开源博客软件了,资源非常的多,用来建博客也是不错的选择。还有一个 Hexo 也很流行,但 1Panel 的应用商店里面没有,感兴趣的可以自行去它的官网查看。

这里我就用 Halo 来演示了。

进入应用商店,点击数据库,选择 MySQL 进行安装。

yfbCCspf-9.png

再点击建站,点击 Halo 进行安装。如果你没有在绑定域名前想先访问 Halo,需要勾选端口外部访问。如果在安装时忘记勾选可在参数的高级设置里面找到。

yfbCCspf-10.png

yfbCCspf-11.png

在云服务器控制台的防火墙里把 Halo 的运行端口添加进去。

yfbCCspf-12.png

如果此时勾选了 Halo 的端口外部访问,可以在浏览器通过 [服务器IP]:[Halo运行端口] 来访问了。然后根据指引完成创建,你的博客网站就搭建完成了😘。如果你不想使用IP地址的方式访问,想为你的博客绑定域名,那就请往下看。

yfbCCspf-13.png

yfbCCspf-14.png

控制台的功能就自行摸索吧,以后看有没有时间写一篇博客美化的文章😃👆。

yfbCCspf-15.png

3、部署云服务

实际上博客网站也算是一种云服务,上面给他专门划分出来只是为了起强调作用😗。

什么是云服务?简单片面的说就是部署在云服务器上,能让用户在互联网上访问到的服务。

我们都知道用户是通过IP地址来找到服务器的,但一个服务器上可能提供了多个服务,要使用特定的服务则还需要另一个东西 —— 端口号

云服务器上安装的应用,只要写了 Web 管理的页面(有的可能是通过自带的命令行工具或者特定命令或者修改配置文件来管理的,所以一定要看官方文档),都可以通过在浏览器使用 [服务器IP]:[服务运行端口] 这样的形式访问。而且现在基本上服务应用都有 Web 页面来管理后台,毕竟 UI 界面比黑乎乎的终端更简单明了🤔。

code-server 是一款运行在浏览器上的 VSCode,这里用它作为例子。

我在之前写过一篇博客是关于怎么手动下载 code-server 进行部署的,这篇:code-server:浏览器上远程运行的 Visual Studio Code 的搭建与使用 | 滕王阁。由于它是支持在浏览器上访问的,所以知道了服务器IP和端口就可以网页打开。

而 1Panel 是支持在应用商店一键部署的,显然会比之前手动部署的方便。

进入应用商店搜索 code-server 进行安装。如果你没有在绑定域名前想先访问 code-server,需要勾选端口外部访问。如果在安装时忘记勾选可在参数的高级设置里面找到。

yfbCCspf-16.png

在云服务器控制台的防火墙里把 code-server 的运行端口添加进去。

yfbCCspf-17.png

如果此时勾选了 code-server 的端口外部访问,可以在浏览器通过 [服务器IP]:[code-server运行端口] 来访问了。如果你不想使用IP地址的方式访问,想为你的 code-server 绑定域名,那就请往下看。

yfbCCspf-18.png

3、绑定域名

首先购买一个域名,域名购买厂商最好和你的云服务器厂商保持一致(不然会很麻烦)。域名没什么讲究,各大厂商的价格也基本一样,在他们的购买界面输入你喜欢的前缀,再选一个喜欢的后缀就行了🙂。

yfbCCspf-19.png

然后购买的域名还需要进行备案,在你的服务器厂商那跟着指引完成就行了。不过备案的时间会在半个月左右,在这期间你的域名是用不了的,用了也会强制给你跳警告😡

根据国务院令第292号《互联网信息服务管理办法》和《非经营性互联网信息服务备案管理办法》规定,国家对经营性互联网信息服务实行许可制度,对非经营性互联网信息服务实行备案制度。未获取许可或者未履行备案手续的,不得从事互联网信息服务,否则属于违法行为。

yfbCCspf-20.png

进入域名控制台,找到你要绑定的域名,点击解析。

yfbCCspf-21.png

这里先解释一下什么是子域名:以百度为例,baidu.com 是他的主域名,访问的是百度的主站。可以在主域名的前面加上不同的前缀来区分不同的服务板块,像 pan.baidu.com 访问的是百度网盘 yiyan.baidu.com 访问的则是文心一言。

但我们会发现很多网址输入它的主域名结果会变成前缀为 www 的子域名,这其实是由于历史原因(和万维网 World Wide Web 的兴起有关),www 开头的子域名一般代表着这个网站的主要板块,就像百度是做搜索引擎起家的(虽然非常垃圾🤮),www 开头的子域名理所应当是百度搜索的首页,所以很多网站都会将主域名重新定向到以 www 开头的子域名。

yfbCCspf-22.png

yfbCCspf-23.png

yfbCCspf-24.png

这里再解释一下什么是域名解析。域名解析就是将一个子域名绑定到一个IP地址上。注意解析的是IP,不是IP加端口!这里我们先用子域名将我们不同的云服务分好类,如何实现不同子域名访问不同的云服务之后再讲🤔。

默认一般会有两个域名,一个是 www 开头子域名,一个就是主域名,等下我们让这两个域名都访问我们的博客网站,同时让主域名自动跳转 www 开头的子域名。

我们再添加一个以 vscode 开头的子域名来访问我们的 code-server。

yfbCCspf-25.png

yfbCCspf-26.png

然后打开 1Panel,找到网站选项,按照下面图片将子域名和对应端口的服务绑定。(原理是安装的 Nginx 监听到通过特定子域名访问服务器时,会返回对应端口所运行服务的页面)

yfbCCspf-27.png

yfbCCspf-28.png

yfbCCspf-29.png

yfbCCspf-30.png

4、申请 SSL 证书

为什么需要 SSL 证书?你会发现,不管你在浏览器的地址栏中输入什么网址,加载时都会在前面带上 http:// 或者 https:// 的前缀,这个 http 和 https 都是一种通信协议,我们本地主机和远程服务器通信都需要遵守这个协议。

但是 http 协议是一种明文协议。比如你在网站输入密码提交给网站时,如果有人截获了你和网站之间的通信,它就知道了你的密码是什么,很不安全。所以当你访问使用 http 协议的网站时浏览器会警告甚至于不让你访问😅。

而 HTTPS 是一种更安全的通信协议,它在 HTTP 的基础上加入了 SSL/TLS 加密层(TLS 是 SSL 的后继版本,但习惯继续称为 SSL),用于加密本地主机与远程服务器之间传输的信息。而使用 https 协议则需要为我们的网站申请 SSL 证书。

打开 1Panel,找到网站下的证书选项。

yfbCCspf-31.png

创建 Acme 账户。

yfbCCspf-32.png

yfbCCspf-33.png

点击云服务器厂商官网的个人头像,找到访问管理之类的选项,再选择带有密钥的选项,点击创建,记住 Access key 和 Secret key。再在 1Panel 创建 DNS 账户。

yfbCCspf-34.png

yfbCCspf-35.png

申请证书。

yfbCCspf-36.png

进入网站页面,点击配置,将刚刚创建的三个网站绑定证书。

yfbCCspf-37.png

这样你的网站和云服务就搭建成功😋。