帮助中心
如何在AlmaLinux 9上安装Etherpad



Etherpad是Google Docs和Zoho Writer等服务的免费和开源的替代品。Etherpad是一个供你的团队使用的协作式实时文本编辑器,由于Etherpad是一个基于网络的文本编辑器,它可以在任何地方、任何时间访问。

Etherpad上的任何变化都是实时发生的,而且etherpad还支持版本管理和团队的内置格式。Etherpad是一个高度可定制的编辑器,支持各种插件。而且还支持现代文档格式,如doc、pdf、odt、markdown等。

本教程将向你展示如何在一台带有MariaDB数据库服务器和Nginx网络服务器的AlmaLinux 9服务器上安装Etherpad。你还将通过SSL证书来确保Etherpad的安全,以实现安全访问。

前提条件


要完成本教程,请确保你有以下条件:

  • 一台 AlmaLinux 9 服务器 - 本演示使用主机名为 almalinux9 的 AlmaLinux。
  • 一个具有sudo权限的非root用户。
  • 一个指向服务器IP地址的域名。
  • 通过Letsecnrypt和Certbot生成的SSL证书。


安装依赖性


在安装Etherpad之前,你必须安装Etherpad所需要的一些依赖项,包括:

完成这些步骤来安装Etherpad的依赖项:

  • 开发工具
  • Node.js 和 NPM (Node Package Manager)
  • MariaDB数据库服务器
  • Nginx网络服务器


安装开发工具

首先,你必须在你的AlmaLinux服务器上安装 "开发工具"。输入以下dnf命令来安装 "开发工具",输入y,然后按回车键继续。

sudo dnf group install "Development Tools"

接下来,运行下面的命令来安装一些额外的依赖项。当出现提示时,输入y确认并按下ENTER。

sudo dnf install gzip git curl python3-devel openssl-devel pkg-config




安装Node.js和NPM

Etherpad是一个主要用Node.js编写的基于网络的协作和实时编辑器。要安装它,你必须安装 Node.js JavaScript 运行时和 NPM(Node Package Manager)。

在写这篇文章的时候,Etherpad至少需要Node.js v16,该版本在AlmaLinux的appstream仓库中默认可用,你可以通过DNF来安装它。

运行以下 dnf 命令来安装 Node.js 和 NPM。输入y来确认安装,然后按回车键。

sudo dnf install nodejs npm

一旦Node.js安装完毕,运行以下命令,将/usr/local/bin目录添加到PATH环境变量中。这将确保一些通过NPM安装的二进制文件可以在服务器上运行。

echo "export PATH=$PATH:/usr/local/bin" >> ~/.bashrc
source ~/.bashrc

接下来,运行以下命令来定位Node.js和NPM的两个二进制文件。

which node
which npm

然后,使用下面的命令验证Node.js和NPM的版本。

node --version
npm --version

显示的输出确认Node.js v16和NPM 8. x已经安装,并且两个二进制文件都位于/bin目录下。




安装MariaDB服务器

默认情况下,安装的Etherpad使用SQLite作为数据库。你可以使用MariaDB/MySQL作为你Etherpad安装的大型部署的数据库。

运行下面的dnf命令来安装MariaDB服务器。当出现提示时,输入y确认并按下ENTER。

sudo dnf install mariadb-server



一旦MariaDB安装完毕,运行下面的命令来启动和启用MariaDB服务。

sudo systemctl start mariadb
sudo systemctl enable mariadb

然后,使用下面的命令验证MariaDB的服务状态。

sudo systemctl status mariadb

如果MariaDB服务器正在运行,输出应该显示如下:


安装Nginx网络服务器

在安装完MariaDB服务器后,你将安装Nginx网络服务器,它将作为Etherpad的反向代理使用。因此,在进一步操作之前,请确保你有一个指向服务器IP地址的域名,以及通过Letsencrypt和Certbot生成的SSL证书。

运行下面的dnf命令来安装Nginx网络服务器。当出现提示时,输入确认并按回车键。

sudo dnf install nginx



现在,运行下面的命令,启动并启用Nginx服务。

sudo systemctl start nginx
sudo systemctl enable nginx

之后,输入下面的命令来验证Nginx服务,确保服务正在运行。

sudo systemctl status nginx

如果Nginx服务正在运行,应该得到这样的输出:



接下来,运行以下命令,在服务器上打开HTTP和HTTPS端口。

sudo firewall-cmd --add-service={http,https} --permanent
sudo firewall-cmd --reload

使用以下命令验证开放的端口和服务列表。你应该看到HTTP和HTTPS都在firewalld上被启用。

sudo firewall-cmd --list-all




配置MariaDB服务器


在本节中,你将使用mariadb-secure-installation工具来保护MariaDB服务器,然后创建一个新的数据库和用户,供Etherpad使用。

运行下面的命令,开始保护MariaDB服务器的安全。

sudo mariadb-secure-installation

命令执行后,你会被要求进行以下配置:

  • 将MariaDB根用户的认证方式改为unix_socket。输入n代表否。
  • 设置MariaDB根密码。输入y确认并输入新的MariaDB根密码并重复。
  • 禁用MariaDB根用户的远程登录。输入y确认。
  • 从MariaDB删除默认数据库测试。输入y确认。
  • 从MariaDB中删除匿名用户。输入y确认。
  • 最后,再次输入y来重新加载表的权限以应用这些变化。

随着MariaDB服务器的安全,接下来你将创建一个新的MariaDB数据库和用户。

使用下面的mariadb命令登录到MariaDB服务器。

sudo mariadb -u root -p

运行下面的查询,为Etherpad创建一个新的MariaDB数据库和用户。在这个例子中,你将创建一个新的数据库 etherpad_lite_db 和用户 etherpaduser,密码为 StrongPasswordEtherpadDB。

CREATE DATABASE etherpad_lite_db CHARACTER SET utf8mb4;
CREATE USER etherpaduser@localhost IDENTIFIED BY 'StrongPasswordEtherpadDB';
GRANT CREATE,ALTER,SELECT,INSERT,UPDATE,DELETE on etherpad_lite_db.* to etherpaduser@localhost;
FLUSH PRIVILEGES;



现在,运行以下查询来验证MariaDB用户etherpaduser的权限。

SHOW GRANTS FOR etherpaduser@localhost;
quit

你将注意到MariaDB用户etherpaduser拥有访问数据库etherpad_lite_db的权限。



输入quit来退出MariaDB。

下载和安装Etherpad


在本节中,你将通过创建系统用户、下载Etherpad源代码、安装Etherpad的依赖项、将Etherpad与MariaDB数据库集成,然后通过命令行运行来验证安装,开始Etherpad的安装。

首先,运行下面的命令来创建一个新的系统用户和组 "etherpad"。这个用户将被用来运行Etherpad服务。

sudo groupadd etherpad
sudo adduser -r -M -d /opt/etherpad-lite -g etherpad etherpad

通过git下载Etherpad的源代码到目标目录/opt/etherpad-lite。

git clone --branch master https://github.com/ether/etherpad-lite.git /opt/etherpad-lite

一旦下载了Etherpad的源代码,运行下面的命令,将目录/opt/etherpad-lite的所有权改为用户和组 "etherpad"。

sudo chown -R etherpad:etherpad /opt/etherpad-lite



接下来,将工作目录移动到/opt/etherpad-lite目录,并使用下面的命令安装Etherpad的依赖项。

cd /opt/etherpad-lite
sudo su -s /bin/bash -c "./bin/installDeps.sh" etherpad

执行该命令后,你应该得到这样的安装过程:



安装完成后,使用下面的nano编辑器命令打开Etherpad的配置settings.json。

nano settings.json

改变你的Etherpad安装的标题。

  "title": "Etherpad AlmaLinux 9",

改变Etherpad运行的默认IP地址为localhost或127.0.0.1。

  "ip": "127.0.0.1",
  "port": 9001,

移除下面的默认数据库配置。

  /*
  *"dbType": "dirty",
  *"dbSettings": {
  *  "filename": "var/dirty.db"
  *},
  */

像这样改变细节数据库以使用MySQL/MariaDB服务器。并且一定要改变数据库的名称、用户和密码。

  "dbType" : "mysql",
  "dbSettings" : {
    "user":     "etherpaduser",
    "host":     "localhost",
    "port":     3306,
    "password": "StrongPasswordEtherpadDB",
    "database": "etherpad_lite_db",
    "charset":  "utf8mb4"
  },

保存该文件,完成后退出编辑器。

接下来,执行以下命令来验证和运行Etherpad。

/bin/node --experimental-worker /opt/etherpad-lite/node_modules/ep_etherpad-lite/node/server.js

如果数据库配置和Etherpad安装成功,将显示以下输出:



按Ctrl+c来终止该进程。

将Etherpad作为systemd服务运行


安装好Etherpad后,你现在要把Etherpad设置成一个systemd服务。这允许你在后台运行Etherpad,并通过systemctl命令行轻松管理Etherpad。

首先,使用以下nano编辑器命令创建一个新的systemd服务文件/lib/systemd/system/etherpad.service。

sudo nano /lib/systemd/system/etherpad.service

在该文件中插入以下配置:

[Unit]
Description=Etherpad-lite, the collaborative editor.
After=syslog.target network.target mariadb.service nginx.service

[Service]
Type=simple
User=etherpad
Group=etherpad
WorkingDirectory=/opt/etherpad-lite
Environment=NODE_ENV=production
ExecStart=/bin/node --experimental-worker /opt/etherpad-lite/node_modules/ep_etherpad-lite/node/server.js
# use mysql plus a complete settings.json to avoid Service hold-off time over, scheduling restart.
Restart=always

[Install]
WantedBy=multi-user.target

完成后保存并关闭该文件。

现在,运行下面的命令,重新加载 systemd 管理器,并将 Etherpad 服务文件应用到你的系统中。

sudo systemctl daemon-reload

然后,使用下面的命令启动并启用Etherpad服务。

sudo systemctl start etherpad
sudo systemctl enable etherpad

用下面的命令验证Etherpad服务。如果Etherpad服务正在运行,你应该得到一个诸如 "active (running) "的输出。

sudo systemctl status etherpad



你也可以用下面的命令来验证你系统上的开放端口列表。你应该看到Etherpad使用了该端口9001。

ss -tulpn | grep 9001




配置Nginx作为反向代理


在这一点上,Etherpad已经启动并运行在9001端口。为了让终端用户能够访问它,你可以使用Nginx,它将被用作反向代理。在你开始之前,确保你有将用于Etherpad的域名,并确保你已经通过Letsencrypt和Certbot生成了SSL证书。

使用下面的nano编辑器命令创建一个新的Nginx服务器块配置/etc/nginx/conf.d/etherpad.conf。

sudo nano /etc/nginx/conf.d/etherpad.conf

插入以下配置,并确保修改域名和SSL证书的路径等细节。

# enforce HTTPS
server {
    listen       80;
    server_name  etherpad.hwdomain.io;
    return 301   https://$host$request_uri;
}

# we're in the http context here
map $http_upgrade $connection_upgrade {
    default upgrade;
    ''      close;
}

server {
    listen       443 ssl http2;
    server_name  etherpad.hwdomain.io;

    access_log  /var/log/nginx/eplite.access.log;
    error_log   /var/log/nginx/eplite.error.log;

    ssl_certificate      /etc/letsencrypt/live/etherpad.hwdomain.io/fullchain.pem;
    ssl_certificate_key  /etc/letsencrypt/live/etherpad.hwdomain.io/privkey.pem;

    ssl_session_timeout  5m;

    ssl_protocols TLSv1.2;
    ssl_prefer_server_ciphers on;
    ssl_ciphers "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS";

    location / {
        proxy_pass         http://127.0.0.1:9001;
        proxy_buffering    off; # be careful, this line doesn't override any proxy_buffering on set in a conf.d/file.conf
        proxy_set_header   Host $host;
        proxy_pass_header  Server;

        # Note you might want to pass these headers etc too.
        proxy_set_header    X-Real-IP $remote_addr; # https://nginx.org/en/docs/http/ngx_http_proxy_module.html
        proxy_set_header    X-Forwarded-For $remote_addr; # EP logs to show the actual remote IP
        proxy_set_header    X-Forwarded-Proto $scheme; # for EP to set secure cookie flag when https is used
        proxy_http_version  1.1; # recommended with keepalive connections

        # WebSocket proxying - from https://nginx.org/en/docs/http/websocket.html
        proxy_set_header  Upgrade $http_upgrade;
        proxy_set_header  Connection $connection_upgrade;
    }
}

保存该文件,完成后关闭编辑器。

现在,运行下面的命令,以确保你有正确和适当的配置。如果成功的话,你应该得到一个消息,如 "Syntax is ok - test is successful"。

sudo nginx -t

接下来,输入下面的命令,重新启动Nginx服务,并应用这些变化。

sudo systemctl restart nginx



之后,启动你的网络浏览器,访问Etherpad的安装域名(即:https://etherpad.hwdomain.io/)。你应该看到你的Etherpad协作式编辑器的默认主页。

现在通过输入焊盘名称创建一个新的焊盘,并点击确定。



下面你可以看到现在开始使用Etherpad作为协作式编辑器。


总结


恭喜你,你已经完成了在 AlmaLinux 9 服务器上安装带有 MariaDB 数据库和 Nginx 网络服务器的 Etherpad。在此基础上,你还用SSL证书保护了Etherpad。你现在可以开始使用Etherpad作为你的朋友/小组/团队的主要协作编辑器了。

文章相关标签: Etherpad
购物车