在线文档频繁故障不稳定,其实可以自己搭一个Etherpad在线文档

5aa87058f5e1c1123150bf9dbbdf7053.gif

正文共:1116 字 20 图,预估阅读时间:2 分钟

最近某头部云厂商多次出现故障,导致在线文档使用受限,虽说影响不大,但我们有必要考虑一下是否有备用方案。

在自己搭建在线文档方面,我们之前测试过部署ConfluenceConfluence WiKi,在国产飞腾CPU的虚拟机上装起来了!,但是Confluence使用的系统资源稍微大了一些,像我这种使用轻量云主机的就有点应付不过来了阿里云9块5主机的“开箱作业”

正好现在ChatGPT的4.0版本可用快,跑快点,ChatGPT-4模型免费用了,我们去找他咨询一下。

9986c76caee33803d88a96af775a7ddd.png

从介绍上来看,Etherpad偏轻量化一些,那具体的虚拟机规格要多少呢?

0427c20a66e5bf4a3fb553b7fe1f1ee5.png

确实,只有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

80938380fa2fad5ae224b850bd75b37c.png

Etherpad默认使用文件系统级的数据库(dirtyDB),但这不适用于生产环境。对于生产环境,推荐使用MySQL或PostgreSQL,我们就使用MySQL吧。

yum install -y mariadb-server mariadb

d7e589212c7f354d84416acf86dac688.png

安装完MySQL之后,需要启动数据库并进行基本配置。

systemctl start mariadb
systemctl status mariadb

24bc11570653423870ef9c6122127d63.png

接下来,我们运行一个脚本,完成新MySQL实例的基本配置,包括修改一些不安全的默认设置,帮助保护数据库免受一些基本的攻击。我们可以视情况设置 root 用户密码、移除匿名用户、禁止 root 用户远程登录、移除测试数据库等,最后刷新权限表,确保所有的更改立即生效。

mysql_secure_installation

176706a471e48d71c4b1900bffd2d620.png

然后,我们就可以从Etherpad官方网站下载Etherpad的最新版本。

wget https://github.com/ether/etherpad-lite/zipball/master -O etherpad-lite.zip

96b16ac9b69296aff46a772edfd3117d.png

安装包还是很小的,只有4.6 MB,我们解压一下,视情况将解压后文件夹移动到指定目录,因为是测试,我就不动了。

unzip etherpad-lite.zip -d etherpad-lite

988659fb4f4c38fe3ad3100c24ea39cb.png

接下来开始配置Etherpad,首先复制一份settings.json.template得到配置文件settings.json,这个文件控制着Etherpad的许多重要配置选项。

cp settings.json.template settings.json
nano settings.json

c7e67abbe21d73bd125d8eef928e59c6.png

确认是否需要调整IP和端口配置,找到以下字段。

86fc8bf9a4a46f1aead128795dea4786.png

ip用于设置Etherpad监听的IP地址,默认值为0.0.0.0,即监听所有接口。port用于设置Etherpad监听的端口,默认值为9001。

因为我们使用的不是默认数据库,所以需要找到以下字段,调整数据库配置。

f96949e48fdb0de9a8020bdb15341ade.png

将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,并授予访问刚创建的数据库的权限。

CREATE USER 'etherpaduser'@'localhost' IDENTIFIED BY 'PASSWORD';
GRANT ALL PRIVILEGES ON etherpad_lite_db.* TO 'etherpaduser'@'localhost';

最后刷新权限表,并退出MySQL命令行。

FLUSH PRIVILEGES;
exit;

5d3579d0c43b9af1e03f5e21804f7be5.png

我们还可以在users部分添加用户名和密码,用来设置一个访问Etherpad管理员界面的管理员账户。

85ade3449f4622d1a60e1cba2c29aab1.png

完成这些调整之后,我们还要让程序自己去安装必要的Node.js依赖,安装文件在bin文件夹下面。

./installDeps.sh

9285d116cbfcb3a49e77ffaa1ccb2739.png

等待安装完成之后,Etherpad基本上就可以使用了,我们找到src/node/路径下的server.js,用以下命令启动Etherpad。

node server.js

5781dc3bb337b62e5dc0b00baa8ecd10.png

查看端口9001是否开放。

fcd6608048e827dbf7bba46b40e882cb.png

然后打开Etherpad的管理页面。

ae705041fb90bb6014513f77a269a060.png

奇怪,没有出现登录页面,直接就是创建或者打开记事本,那我们就先输入一个test1试一下。

好家伙,后台满屏幕的日志。

352269fb185d548c86e5fc32aebc398c.png

页面比较简约,好像就是一个在线文档,不支持表格这些。

d008d3788d09f63a176a5abf2557cd6d.png

经查,Etherpad本身主要是一个实时协作的文本编辑器,它的核心功能集中在文本的协作编辑上。它的标准安装主要支持基本的文本编辑功能,如文字输入、格式设置、颜色标记等。至于对表格、图片或更复杂文档格式的支持,Etherpad 的核心版本并不直接提供这些功能。但是,Etherpad 拥有一个活跃的插件生态系统,我们后续可以通过安装特定的插件来扩展其功能,包括对表格、图片等的支持。

d156d4259df2e2585d5bae4a6a7a18c8.gif

长按二维码
关注我们吧

2b97da0594fc0800dbbbac6c0db25f0c.jpeg

f6197a1f84488c4b907c240a4264fc94.png

快,跑快点,ChatGPT-4模型免费用了

手把手教你在天翼云部署一台FortiGate云主机

PVE8.0-2安装使用快速指导

借PVE8.0的Debian 12系统配置一下NFS服务器

CentOS 7搭建NFS服务器

不想用了PVE了怎么办?那就迁移到VMware呗!

准备搞OpenStack了,先装一台最新的Ubuntu 23.10

如何在Ubuntu 23.10部署KVM并创建虚拟机?

Ubuntu部署OpenStack踩坑指南:还要看系统版本?

HPE服务器通过显卡直通安装Tesla M4,这算亮机成功了吗?

切换到WDDM模式,Tesla M4可以用于本地显示输出了!

能找到Hyper-V和VMware共存的方法吗?

豁出去了,真机带业务演示一把ESXi 6.7升级7.0 U3

飞塔FortiGate的IPsec VPN应该怎么配?

VMware存储管理命令vmkfstools使用指南

VMware使用vmkfstools命令将厚置备虚拟机磁盘转为精简置备

H3C CAS云计算管理平台CVM节点部署

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/147767.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[Jenkins] 物理机 安装 Jenkins

这里介绍Linux CentOS系统直接Yum 安装 Jenkins,不同系统之间类似,操作命令差异,如:Ubuntu用apt; 0、安装 Jenkins Jenkins是一个基于Java语言开发的持续构建工具平台,主要用于持续、自动的构建/测试你的软…

uniapp基础学习笔记01

文章目录 本博客根据黑马教程学习uniapp一、技术架构二、创建项目2.1 Hbuilder创建2.2 插件安装2.3 微信开发者工具配置与运行2.3.1 简单修改基础页面 2.4 pages.json和tabBar2.4.1 pages.json与tabBar配置2.4.2 案例 3.1 通过命令行创建项目3.2 命令行运行项目3.2.1 命令行总结…

五、Linux目录结构

1.基本介绍 1.Linux的文件系统是采用级层式的树状目录结构,在此结构中的最上层是根目录"r/",然后在此目录下再创建其他的目录。 2.深刻理解linux树状文件目录是非常重要的 3.记住一句经典的话:在Linux世界里,一切皆文件…

某60区块链安全之整数溢出漏洞实战学习记录

区块链安全 文章目录 区块链安全整数溢出漏洞实战实验目的实验环境实验工具实验原理攻击过程分析合约源代码漏洞EXP利用 整数溢出漏洞实战 实验目的 学会使用python3的web3模块 学会以太坊整数溢出漏洞分析及利用 实验环境 Ubuntu18.04操作机 实验工具 python3 实验原理…

如何查看 class 文件的编译器版本

文章目录 原理分析解决方案其它解决方案javap 命令行工具 在平时的 Java 开发中,有时候我们需要知道某个 class 文件是由哪个版本的 Java 编译器编译生成的 原理分析 class 文件,即字节码文件,它有特定的二进制格式,这种格式是由…

十三、Linux文件目录指令

pwd 指令 基本语法:pwd (功能描述:显示当前工作目录的绝对路径) 应用实例:案例:显示当前工作目录的绝对路径 ls 指令 基本语法:ls 【选项】【目录或是文件】 常用选项 -a :显示当…

趣学python编程 (三、计算机基础知识)

如果不了解些计算机的基础知识上来就编程,往往容易“不识庐山真面目,只缘身在此山中”。因此对于计算机的一些基础知识,在开始编程前,需要理解和掌握。 计算机软件系统 计算机软件是控制计算机实现用户需求的计算机操作以及管理计…

[Linux] PXE批量装机

一、PXE批量装机简介 1.1 常见的三种系统安装方式 u启动安装:在U盘中下载相关的安装系统及镜像文件,u盘插机安装 光驱安装:将带有所需系统的光盘放进电脑服务器中,按照官方引导装机 网络下载安装:在网上下载相关镜…

elementui 实现树形控件单选

实现&#xff1a; <!--author: itmacydesc: 树节点单选 --> <template><div class"about"><el-tree :data"data"ref"tree":props"defaultProps"node-key"id"show-checkboxcheck-strictlycheck-change…

【如何将任何直流电机变成伺服电机】

【如何将任何直流电机变成伺服电机】 1 前沿2 伺服电机工作原理3 如何制作定制伺服电机4 AS5600 编码器 – 磁性旋转位置传感器5 定制伺服电机电路图6 PCB设计7 自定义伺服3D模型8 定制伺服齿轮箱的 3D 打印零件9 对控制器进行编程9.1 引导加载程序刻录9.2 代码上传9.3 源代码9…

教程:使用 Keras 优化神经网络

一、介绍 在 我 之前的文章中&#xff0c;我讨论了使用 TensorFlow 实现神经网络。继续有关神经网络库的系列文章&#xff0c;我决定重点介绍 Keras——据说是迄今为止最好的深度学习库。 我 从事深度学习已经有一段时间了&#xff0c;据我所知&#xff0c;处理…

wpf devexpress在未束缚模式中生成Tree

TreeListControl 可以在未束缚模式中没有数据源时操作&#xff0c;这个教程示范如何在没有数据源时创建tree 在XAML生成tree 创建ProjectObject类实现数据对象显示在TreeListControl: public class ProjectObject {public string Name { get; set; }public string Executor {…

航天联志Aisino-AISINO26081R服务器通过调BIOS用U盘重新做系统(windows系统通用)

产品名称:航天联志Aisino系列服务器 产品型号:AISINO26081R CPU架构&#xff1a;Intel 的CPU&#xff0c;所以支持Windows Server all 和Linux系统&#xff08;重装完系统可以用某60驱动管家更新所有硬件驱动&#xff09; 操作系统&#xff1a;本次我安装的服务器系统为Serv…

android studio编译SDL so库

一、下载源码 SDL官网 二、解压&#xff0c;拷贝android项目&#xff0c;并重新命名 2.1、解压 2.2&#xff0c;重命名项目名称&#xff08;androidSDL&#xff09;AndroidSDL Github 三、导入头文件和源文件&#xff0c;修改android.mk文件 3.1、在jni目录下创建SDL2文件…

亚马逊云科技云存储服务指南

文章作者&#xff1a;Libai 高效的云存储服务对于现代软件开发中的数据管理至关重要。亚马逊云科技云存储服务提供了强大的工具&#xff0c;可以简化工作流程并增强数据管理能力。 亚马逊云科技开发者社区为开发者们提供全球的开发技术资源。这里有技术文档、开发案例、技术专栏…

在前端开发中,什么是CDN(Content Delivery Network)?它的作用是什么?

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 欢迎来到前端入门之旅&#xff01;感兴趣的可以订阅本专栏哦&#xff01;这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…

【RH850芯片】RH850U2A芯片平台Spinlock的底层实现

目录 前言 正文 1.RH850U2A上的原子操作 1.1 Link 1.2 Link generation 1.3 Success in storing 1.4 Failure in storing 1.5 Condition for successful storing 1.6 Loss of the link 1.7 示例代码 2.Spinlock代码分析 2.1 尝试获取Spinlock 2.2 释放Spinlock …

基于PyTorch搭建你的生成对抗性网络

前言 你听说过GANs吗&#xff1f;还是你才刚刚开始学&#xff1f;GANs是2014年由蒙特利尔大学的学生 Ian Goodfellow 博士首次提出的。GANs最常见的例子是生成图像。有一个网站包含了不存在的人的面孔&#xff0c;便是一个常见的GANs应用示例。也是我们将要在本文中进行分享的…

Spring Boot中使用MongoDB完成数据存储

我们在开发中用到的数据存储工具有许多种&#xff0c;我们常见的数据存储工具包括&#xff1a; 关系性数据库&#xff1a;使用表格来存储数据&#xff0c;支持事务和索引。&#xff08;如&#xff1a;MySQL&#xff0c;Oracle&#xff0c;SQL Server等&#xff09;。NoSQL数据…

Redis篇---第七篇

系列文章目录 文章目录 系列文章目录前言一、是否使用过 Redis Cluster 集群,集群的原理是什么?二、 Redis Cluster 集群方案什么情况下会导致整个集群不可用?三、Redis 集群架构模式有哪几种?前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分…