服务器管理和维护是一件十分劳神费力的事情,我们亟需一个能够解放双手的自动化运维工具。它只要够使用简单的配置就能完成大部分日常的工作,又能提供比较全面的数据分析功能。
现阶段,已经有许多服务器管理工具,然而它们却有着很多的弊端。例如界面不好看(UI 颜值党);功能不完备(不如手动 SSH 方便);内存占用过大(反客为主);安全性差(很多漏洞暴露)等等。
1Panel: https://1panel.cn/
正好看到 1Panel 项目,这是一个新兴的服务器运维管理工具,界面和功能完全符合我的需求。它拥有自动化数据备份、容器编排和管理、SSL 证书自动续期、日志审计等功能。
没记错的话,1Panel 项目还获得了今年 Gitee 的最有价值开源项目。在上线短短一年,在 Github 已斩获 21K 的 Star。社区生态十分活跃,维护更新也做得很好。
安装文档: https://1panel.cn/docs/installation/online_installation/
官方提供了在线安装、离线安装和阿里云镜像安装三种方式。这里我推荐在线安装或阿里云镜像安装(如果是新购服务器的话)。
在线安装很方便,下面是 CentOS 系统安装的命令。
curl -sSL https://resource.fit2cloud.com/1panel/package/quick_start.sh -o quick_start.sh && sh quick_start.sh
安装后在浏览器中输入下方链接即可访问面板。
在服务器控制台输入 1pctl user-info
可以查看目标端口、安全入口、面板的账号密码。注意:云服务器需要开放端口的安全组。安全入口(entrance)是一个随机字符串。
http://目标服务器 IP 地址:目标端口/安全入口
最终路径例如:http://1.1.1.1:8090/bslchfskj
。进入面板,输入上面查看到的账号密码即可。
我用的是阿里云镜像安装方式,这需要是新购服务器,或者有打算重置原有服务器的计划才行。
在选购服务器时选择云市场镜像,勾选 1Panel Linux 面板即可。
接着,什么也不用做,只需要等到服务器启动,阿里云就给你内置好了 1Panel 服务了。
和上面一样,进入服务器,在终端输入 1pctl user-info
来查看目标端口、安全入口、面板的账号密码。之后,访问下述链接即可。
http://目标服务器 IP 地址:目标端口/安全入口
一、不推荐使用 docker 的方式安装。因为,使用 docker 安装会导致 1Panel 管理的不是宿主机而是 docker 容器,当然你可以使用挂载的方式把宿主机目录整个挂载出来。
二、1Panel 服务本身的运行内存较小,我观察下来在 100-200M 之间,还算可以了。但是,安装 1Panel 的服务器还是需要保证有 1G 以上的内存。
1Panel 的大部分应用都使用 docker 容器化部署的,其提供的应用商店也是如此。所以使用 1Panel 默认需要你掌握 docker 的一些基本操作。
1Panel 做的比较好的一点,是提供了可视化的容器管理,而不需要再切出终端来操作。
众所周知,这几年很多 docker 源加速已不再可用,但使用 docker 官方源又会比较慢。
1Panel 贴心地给我们提供了比较靠谱的 docker 源,默认是没有配置的。到容器 -> 配置中,填入镜像加速地址 https://docker.1panel.live
。这里也可以配置自己的阿里云源或腾讯云源。
1Panel 的文件管理可以很方便地上传文件和编辑文件。用其自带的文件管理器编写一个 docker-compose,接着,再通过 1Panel 的容器 -> 编排选择编写好的 compose。
等待镜像拉取和创建完成,就能在容器列表看到你所创建好的容器了。
在容器管理界面,你可以直接查看日志和操作终端。这个真的很方便,在此之前需要输入一堆命令才能操作。
在使用 1Panel 之前我的应用都是用 Nginx 进行反向代理,而这次我使用了官方推荐的 OpenResty 来进行网站部署。
由于 OpenResty 在 1Panel 上能够通过交互式配置,0 学习成本就可以上手,无痛配置 5 分钟就替换了我原先使用的 Nginx 服务。
实际观察下来 OpenResty 占用的内存极少,维持在 15-20M,真的非常轻量了!
OpenResty 是基于 Nginx 内核和 Lua 脚本的高性能 Web 服务器,1Panel 提供了一键安装的方式。
在应用市场 -> OpenResty,点击安装即可。
只有安装完成 OpenResty 后,才可以进入到导航的网站界面。
1Panel 为我们提供了好几种创建网站的方式,包括一键部署、反向代理和静态网站等。
由于我的业务使用 docker 部署,所以直接选择反向代理的方式即可。选择网站 -> 创建网站,填写相关的配置信息。代理地址填容器所映射出来的 IP 和端口地址即可。
操作完成后,需要将网站域名在你的 DNS 服务器厂商进行解析,解析完成后就能正常访问了。
今年开始许多云厂商已经不再提供 1 年期的免费 SSL 证书了,转而变成了 3 个月的证书,这极大增加了证书的维护成本,氪金上企业级证书请忽略。
原先 1 年一换的话,手动申请也还好,但 3 个月一换就变得非常的麻烦。
正好,1Panel 提供了 ACME 协议的证书申请,首次尝试部署,十分非常方便,三个月后在观察能否续上期。
ACME(Automated Certificate Management Environment)自动化证书管理环境,顾名思义,自动化申请和续期是其核心功能。
只需要在证书 -> Acme账户中填写自己的邮箱,其他选项默认即可创建。
证书颁发需要验证 DNS 服务器,所以这里需要配置一个 DNS 账户,类型选择你域名所在的 DNS 厂商,名称任取,Access Key 和 Secret Key 可以在阿里云的 AccessKey 管理中进行创建。
在证书 -> 申请证书中输入需要申请的域名,其他域名处可以写一个通配的域名 *.xxx.com
,这样你只需要申请一个证书就能用在多个子域名上了。
Acme 账户和 DNS 账号选择刚刚配置好的选项,自动续签这里记得打钩,其他默认即可。
申请后需要等待一段时间,当看日志提示证书申请成功后,就算完成了申请。
申请证书后,进入网站 -> 配置 -> HTTPS 为先前部署的网站配置证书,这里勾选启用 HTTPS,选择已有证书,Acme 账户选择先前配置的账户,证书选择刚刚申请的证书,其他配置可以根据实际情况按需配置。
完成证书配置后,就可以通过 HTTPS 的方式访问你的站点了。
数据安全对于服务器至关重要,在不使用 1Panel 时,一般自己编写脚本来完成备份。而 1Panel 提供了多种数据备份任务类型,例如Shell 脚本、备份应用、备份网站、备份数据库等。
我采用的是备份数据库的方式,首先要做的就是创建数据库连接。
选择对应的数据库类型和版本,输入数据库地址和相关信息,最后测试连接通过即可。
在计划任务 -> 创建计划任务,选择类型为备份数据库,名字任取,设置好执行的周期,选择备份数据库为刚刚连接的数据库,可以指定到某一个库,也可以选择所有,备份账号可以选择磁盘或者 OSS 对象存储账号。
创建完成后,点击执行,跑一次看看是否已经成功执行。
1Panel 还有许多功能,我基本都摸索了一遍。例如日志审计 + Fail2ban 可以有效 ban 掉暴力登录的 IP。
Fail2ban 需要手动安装。更多更高阶的功能例如 WAF 可以购买专业版使用。
当然万物并非都十全十美,1Panel 也存在着改进的空间。
例如,我在使用 1Panel 时,出现了几次磁盘 IO 读取爆满的情况。该问题已反馈在了社区的 discussions 中。
我怀疑是某个地方存在内存泄漏,使得服务器读取磁盘 SWAP 区所致。不过,官方提供了调整 SWAP 大小的方式。如下图所示,我将大小调整为 4G 后,暂未出现过上述情况。
最后,建议 1Panel 可以增加一个报警功能,在资源不足或者有异常情况时,能够通知到管理员,这样整一个自动化运维才算闭环。
后续我会跟进观察 1Panel 的运行和更新,希望国内有更多优秀的开源项目涌现!