最近某头部云厂商多次出现故障,导致在线文档使用受限,说明云服务并非百分百可靠,虽说影响不大,但我们有必要考虑一下是否有备用方案。
为自己搭建一个轻量级的在线文档备胎,是技术人的必备技能。在自己搭建在线文档方面,我们之前测试过部署Confluence(Confluence WiKi,在国产飞腾CPU的虚拟机上装起来了!),但是Confluence使用的系统资源稍微大了一些,像我这种使用轻量云主机的就有点应付不过来了(用轻量应用服务器的注意了,0.5GB内存的规格请谨慎使用)。
正好现在ChatGPT的4.0版本可用(快,跑快点,ChatGPT-4模型免费用了),我们去找他咨询一下。
从介绍上来看,Etherpad偏轻量化一些,那具体的虚拟机规格要多少呢?
确实,只有Etherpad的资源需求最少,最少512 MB内存即可,那我们就用这个项目来快速部署一个开源的实时协作编辑器吧。
首先,我们准备一台CentOS 7的虚拟机,因为我在公有云的轻量云主机也是这个系统。在开始之前,我们先更新一下系统和软件。
yum install -y epel-release
yum list && yum update -y
运行Etherpad需要Node.js环境,更新好系统之后,我们安装较新版本的Node.js和npm(Node Package Manager,用于JavaScript编程语言的包管理器)。
yum install -y nodejs npm
Etherpad默认使用文件系统级的数据库(dirtyDB),但这不适用于生产环境。对于生产环境,推荐使用MySQL或PostgreSQL等关系型数据库,能更好地保证数据一致性和可靠性,那我们就使用MySQL吧。
yum install -y mariadb-server mariadb
安装完MySQL之后,需要启动数据库并进行基本配置。
systemctl start mariadb
systemctl status mariadb
接下来,我们运行一个脚本,完成新MySQL实例的基本配置,包括修改一些不安全的默认设置,帮助保护数据库免受一些基本的攻击。我们可以视情况设置 root 用户密码、移除匿名用户、禁止 root 用户远程登录、移除测试数据库等,最后刷新权限表,确保所有的更改立即生效。
mysql_secure_installation
然后,我们就可以从Etherpad官方网站下载Etherpad的最新版本。
wget https://github.com/ether/etherpad-lite/zipball/master -O etherpad-lite.zip
安装包还是很小的,只有4.6 MB,我们解压一下,视情况将解压后文件夹移动到指定目录,因为是测试,我就不动了。
unzip etherpad-lite.zip -d etherpad-lite
接下来开始配置Etherpad,首先复制一份settings.json.template得到配置文件settings.json,这个文件控制着Etherpad的许多重要配置选项。
cp settings.json.template settings.json
nano settings.json
确认是否需要调整IP和端口配置,找到以下字段。
ip用于设置Etherpad监听的IP地址,默认值为0.0.0.0,即监听所有接口。port用于设置Etherpad监听的端口,默认值为9001。
因为我们使用的不是默认数据库,所以需要找到以下字段,调整数据库配置。
将dirty部分注释掉,取消mysql部分的注释,并按需调整数据库的连接配置信息,包括数据库地址、用户名、密码等。为了方便,我就直接用这套配置创建数据库好了。
“dbType” : “mysql”,
“dbSettings” : {
“user”: “etherpaduser”,
“host”: “localhost”,
“port”: 3306,
“password”: “PASSWORD”,
“database”: “etherpad_lite_db”,
“charset”: “utf8mb4”
},
先登录MySQL,使用以下命令并输入MySQL的root用户的密码:
mysql -u root -p
创建一个新的数据库,名称为etherpad_lite_db,字符集类型为utf8mb4:
CREATE DATABASE etherpad_lite_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
创建一个新用户etherpaduser,密码设置为PASSWORD,并授予访问刚创建的数据库的权限。在实际部署时,请务必使用高强度密码替换PASSWORD,并妥善保管。
CREATE USER ‘etherpaduser’@’localhost’ IDENTIFIED BY ‘PASSWORD’;
GRANT ALL PRIVILEGES ON etherpad_lite_db.* TO ‘etherpaduser’@’localhost’;
最后刷新权限表,并退出MySQL命令行。
FLUSH PRIVILEGES;
exit;
我们还可以在users部分添加用户名和密码,用来设置一个访问Etherpad管理员界面的管理员账户。
完成这些调整之后,我们还要让程序自己去安装必要的Node.js依赖,安装文件在bin文件夹下面。
./installDeps.sh
等待安装完成之后,Etherpad基本上就可以使用了,我们找到src/node/路径下的server.js,用以下命令启动Etherpad。
node server.js
查看端口9001是否开放,如果无法访问,请检查云服务器的安全组/防火墙规则,确保TCP 9001端口已开放。
然后打开Etherpad的管理页面。
奇怪,没有出现登录页面,直接就是创建或者打开记事本,那我们就先输入一个test1试一下。
好家伙,后台满屏幕的日志。
测试成功后,我们需要让Etherpad在后台持续运行。一个简单的方法是使用 nohup来实现:
nohup node server.js &
更规范的做法是配置一个systemd服务,这样可以实现开机自启和方便的状态管理。
前端页面比较简约,好像就是一个在线文档,不支持表格这些。
经查,Etherpad本身主要是一个实时协作的文本编辑器,它的核心功能集中在文本的协作编辑上。它的标准安装主要支持基本的文本编辑功能,如文字输入、格式设置、颜色标记等。至于对表格、或更复杂文档格式的支持,Etherpad的核心版本并不直接提供这些功能。但是,Etherpad拥有一个活跃的插件生态系统,我们后续可以通过安装特定的插件来扩展其功能,包括对表格、等的支持。
声明:来自铁军哥,仅代表创作者观点。链接:https://eyangzhen.com/3658.html