在线文档频繁故障不稳定,其实可以自己搭一个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,一经查实,立即删除!

相关文章

Flutter打包iOS过程中pod访问github失败

问题描述 执行Flutter打包iOS命令出现如下错误: # flutter build ios ...Error output from CocoaPods: ↳Cloning into /var/folders/q8/sd0qtp6d69b30yt6gsh1jrg40000gq/T/d20231116-58127-8g2zje...fatal: unable to access https://github.com/ccgus/fmdb.git…

[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 命令行总结…

C#装箱与拆箱详解

装箱和拆箱是C#语言中非常重要的两个概念。在C#中,值类型(如int,double,struct等)和引用类型(如class,interface等)是两种完全不同的数据类型。而装箱和拆箱就是这两种类型之间转换的…

五、Linux目录结构

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

android jni通过反射打印java类的所有方法

如果让你在jni层&#xff0c;找到一个目标函数&#xff0c;你应该怎么做&#xff1f; 1.找到目标类&#xff0c;然后打印所有的方法&#xff0c;然后通过方法返回值&#xff0c;方法参数&#xff0c;方法修饰符来确定我们要找的目标函数代码如下 #include <jni.h> #incl…

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

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

英文公司库

beigene 百济神州

6.3 Map接口

Map接口是一种双列集合&#xff0c;它的每个元素都包含一个键对象Key和值对象Value&#xff0c;键和值对象之间存在一种对应关系&#xff0c;称为映射。Map中键对象Key不允许重复&#xff0c;访问Map集合中的元素时&#xff0c;只要指定了Key&#xff0c;就能找到对应的Value。…

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

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

十三、Linux文件目录指令

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

Qt调起Mac“系统设置”面板

mac系统设置相关字段&#xff1a; Accessibility 面板相关 项目 URL Scheme Main x-apple.systempreferences:com.apple.preference.universalaccess Display x-apple.systempreferences:com.apple.preference.universalaccess?Seeing_Display Zoom x-apple.systempreference…

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

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

通过接口抓取公众号信息并群发

总体步骤 通过非官方接口&#xff0c;登陆公众号获取cookie、token通过token拼接需要的参数&#xff0c;请求被抓取的公众号列表数据通过列表数据获取文章内容解析文章内容并通过官方接口创建草稿通过非官方接口群发创建的草稿(非认证用户&#xff0c;已认证用户可以通过官方接…

[Linux] PXE批量装机

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

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…

06.webpack性能优化--构建速度

优化babel-loaderhappyPackIgnorePluginparalleUglifyPluginnoParse自动刷新 1 happypack多进程打包 js单线程&#xff0c;开启多进程打包提高构建速度&#xff08;特别是多核CPU&#xff09; const HappyPack require(happypack)module.exports smart(webpackCommonConf,…

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

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

C++八皇后问题代码

#include <iostream> #include <cmath> using namespace std;// 判断能否放置皇后 bool canPlace(int q[], int n, int i) {for (int j 0; j < n; j) {// 判断是否在同一行或同一列if (q[j] i || abs(q[j] - i) abs(j - n)) {return false;}}return true; }/…