如何在 Rocky Linux 8 上安装 Etherpad Collaborative Web Editor如何在 Rocky Linux 8 上安装 Etherpad Collaborative Web Editor如何在 Rocky Linux 8 上安装 Etherpad Collaborative Web Editor如何在 Rocky Linux 8 上安装 Etherpad Collaborative Web Editor
  • 业务
  • 目标
  • 支持
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容

如何在 Rocky Linux 8 上安装 Etherpad Collaborative Web Editor

发表 admin at 2025年2月28日
类别
  • 未分类
标签

在此页

  1. 先决条件
  2. 第 1 步 - 配置防火墙
  3. 第 2 步 - 安装 Git
  4. 第 3 步 - 安装 MariaDB
  5. 第 4 步 - 配置 MariaDB
  6. 第 5 步 - 下载并安装 Etherpad
  7. 第 6 步 - 配置 Etherpad
  8. 第 7 步 - 创建 Etherpad 服务
  9. 第 8 步 - 使用 Lets Encrypt 安装 SSL
  10. 第 9 步 - 安装和配置 Nginx
  11. 更新 Etherpad
  12. 结论

Etherpad 是一种开源在线编辑器,可在浏览器中提供实时协作编辑。它是用 Node.js 编写的,可以自托管以与 WordPress、Drupal、Odoo、Discourse、Joomla 等各种平台一起使用。

在本教程中,我们将在 Rocky Linux 8 服务器上安装 Etherpad,使用 MariaDB 数据库来存储我们的数据。我们还将使用 Nginx 作为应用程序的反向代理,并使用 Lets Encrypt 安装 SSL 证书以启用与 Etherpad 实例的 HTTPS 连接。

先决条件

  1. A system running Rocky Linux 8.

  2. A non-root user with sudo privileges.

  3. A domain name pointed to the server.

  4. Nodejs installed. Follow our guide on installing Nodejs on Rocky Linux 8 server. Use any of the two methods specified.

  5. Make sure everything is updated.

    $ sudo dnf update
    

第 1 步 - 配置防火墙

Rocky Linux 使用 Firewalld 防火墙。检查防火墙状态。

$ sudo firewall-cmd --state
running

这表明它已成功启动并运行。

防火墙适用于不同的区域,公共区域是我们将使用的默认区域。列出防火墙上所有活动的服务和端口。

$ sudo firewall-cmd --permanent --list-services

它应该显示以下输出。

cockpit dhcpv6-client ssh

允许 HTTP 和 HTTPS 端口。

$ sudo firewall-cmd --permanent --add-service=http
$ sudo firewall-cmd --permanent --add-service=https

打开 Etherpad 应用程序使用的 9001 端口。

$ sudo firewall-cmd --permanent --add-port=9001/tcp

重新检查防火墙的状态。

$ sudo firewall-cmd --permanent --list-services

您应该会看到类似的输出。

cockpit dhcpv6-client http https ssh

重新加载防火墙以启用更改。

$ sudo firewall-cmd --reload

第 2 步 - 安装 Git

在安装 Etherpad 之前,我们需要安装 Git。运行以下命令来安装 Git。

$ sudo dnf install git

验证安装。

$ git --version
git version 2.27.0

添加初始配置。

$ git config --global user.name "YourName"
$ git config --global user.email ""

列出刚刚设置的配置。

$ git config --list
user.name=YourName

第 3 步 - 安装 MariaDB

由于我们将使用 MariaDB 数据库来存储 Etherpads 数据,因此我们需要先安装和配置它。

Rocky Linux AppStream 存储库随 MariaDB 一起提供。要列出已安装的所有可用版本的 MariaDB,请运行以下命令。

$ sudo dnf module list mariadb
Last metadata expiration check: 1:15:26 ago on Thu 21 Oct 2021 10:20:01 AM UTC.
Rocky Linux 8 - AppStream
Name                          Stream                         Profiles                                         Summary
mariadb                       10.3 [d]                       client, galera, server [d]                       MariaDB Module
mariadb                       10.5                           client, galera, server [d]                       MariaDB Module

Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled

默认版本设置为 10.3。但是,您可以使用以下命令安装最新版本。

$ sudo dnf module enable mariadb:10.5

安装 MariaDB。

$ sudo dnf install mariadb-server

启用并启动 MariaDB 服务。

$ sudo systemctl enable mariadb --now

检查服务的状态。

$ sudo systemctl status mariadb

保护 MariaDB 服务器。

$ sudo mysql_secure_installation

您将面临各种提示。回答如下。

Enter current password for root (enter for none): Press Enter
Switch to unix_socket authentication [Y/n] Type y
Change the root password? [Y/n] Type n
Remove anonymous users? [Y/n] Type y
Disallow root login remotely? [Y/n] Type y
Remove test database and access to it? [Y/n] Type y
Reload privilege tables now? [Y/n] Type y

您现在可以使用以下命令连接到 MariaDB 服务器。

$ sudo mysql 

第 4 步 - 配置 MariaDB

登录到 MariaDB shell。

$ sudo mysql

为 Etherpad 创建一个新的数据库。

$ create database `etherpad_lite_db`;

创建一个新的数据库用户。

$ CREATE USER 'etherpaduser'@'localhost' identified by 'password';

使用强密码。

授予用户对数据库的权限。

$ grant CREATE,ALTER,SELECT,INSERT,UPDATE,DELETE on `etherpad_lite_db`.* to '<etherpaduser>'@'localhost';

退出 MySQL 外壳。

$ exit

第 5 步 - 下载并安装 Etherpad

要安装 Etherpad,我们将下载它的源代码并构建它。

第一步是使用以下命令创建一个新的 etherpad 用户。

$ sudo adduser --system --home /opt/etherpad --create-home --user-group etherpad

此命令创建一个--system 用户,这意味着它无法登录并且没有密码。我们还给它一个主目录 /opt/etherpad ,这是我们下载 Etherpad 的地方。 --create-home 标志创建具有正确权限的主目录。 --user-group 标志创建一个与用户名同名的组。

切换到 etherpad 用户下载并安装应用程序。

$ sudo -u etherpad bash

切换到 /opt/etherpad 目录。

[ user] cd /opt/etherpad

将 Etherpad 存储库克隆到 /opt/etherpad 目录中。

[ ~]$ git clone --branch master git://github.com/ether/etherpad-lite.git

切换到新下载的目录。

[ ~]$ cd etherpad-lite

运行 Etherpads run.sh 脚本来设置和安装依赖项。

[ etherpad-lite]$ src/bin/run.sh

您可以在浏览器中启动 URL http://YOURSERVERIP:9001 以启动 Etherpad。您将看到以下屏幕。

上面的安装有问题。它要求您在前台运行 Node 的情况下保持当前 shell 打开。要使其成为持久安装,我们需要将 Etherpad 作为服务运行。在终端上按 Ctrl + C 以停止运行 Etherpad。

第 6 步 - 配置 Etherpad

在继续之前,我们需要设置一些设置并根据我们的需要配置我们的安装。 Etherpad 将其设置存储在安装目录的 settings.json 文件中。

打开文件进行编辑。

[ etherpad-lite]$ nano settings.json

设置文件的格式为 JSON。您需要配置的第一件事是数据库设置。

找到下面的代码,在前面加上//注释掉。

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

然后,找到以下代码并按如下方式更改其值。确保删除开头和结尾的 /* 和 */ 。

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

最后,稍微向下滚动以找到 trustProxy 设置并将其值从 false 更改为 true。

  "trustProxy": true,

需要此设置才能使 Etherpad 与 Nginx 一起工作。

完成后按 Ctrl + X 并在出现提示时输入 Y 来保存文件。

退出 Etherpad 用户 shell。

[ etherpad-lite]$ exit

第 7 步 - 创建 Etherpad 服务

要在引导时启动 Etherpad 并使用 systemctl 管理进程,我们需要创建一个服务文件。

创建并打开服务文件。

$ sudo nano /etc/systemd/system/etherpad.service

将以下代码粘贴到其中。

[Unit]
Description=Etherpad, a collaborative web editor.
After=syslog.target network.target

[Service]
Type=simple
User=etherpad
Group=etherpad
WorkingDirectory=/opt/etherpad
Environment=NODE_ENV=production
ExecStart=/usr/bin/node --experimental-worker /opt/etherpad/etherpad-lite/node_modules/ep_etherpad-lite/node/server.js
Restart=always

[Install]
WantedBy=multi-user.target

完成后按 Ctrl + X 并在出现提示时输入 Y 来保存文件。

重新加载服务守护进程以引入新配置。

$ sudo systemctl daemon-reload

启用启动 Etherpad 服务。

$ sudo systemctl enable etherpad --now

检查服务的状态。

$ sudo systemctl status etherpad
? etherpad.service - Etherpad, a collaborative web editor.
   Loaded: loaded (/etc/systemd/system/etherpad.service; disabled; vendor preset: disabled)
   Active: active (running) since Thu 2021-10-21 15:06:53 UTC; 6s ago
 Main PID: 47228 (node)
    Tasks: 13 (limit: 11411)
   Memory: 102.8M
   CGroup: /system.slice/etherpad.service
           ??47228 /usr/bin/node --experimental-worker /opt/etherpad/etherpad-lite/node_modules/ep_etherpad-lite/node/server.js
.......

第 8 步 - 使用 Lets Encrypt 安装 SSL

要使用 Lets Encrypt 安装 SSL 证书,我们需要安装 Certbot 工具。

首先,您需要下载并安装 EPEL 存储库。

$ sudo dnf install epel-release

运行以下命令来安装 Certbot。

$ sudo dnf install certbot

生成 SSL 证书。

$ sudo certbot certonly --standalone --agree-tos --preferred-challenges http -m  -d example.com

上面的命令会将证书下载到服务器上的 /etc/letsencrypt/live/etherpad.example.com 目录。

生成 Diffie-Hellman 组证书。

$ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

为 Lets Encrypt 自动更新创建一个挑战 webroot 目录。

$ sudo mkdir -p /var/lib/letsencrypt

创建 Cron 作业以更新 SSL。它将每天运行以检查证书并在需要时更新。为此,首先,创建文件 /etc/cron.daily/certbot-renew 并打开它进行编辑。

$ sudo nano /etc/cron.daily/certbot-renew

粘贴以下代码。

#!/bin/sh
certbot renew --cert-name etherpad.example.com --webroot -w /var/lib/letsencrypt/ --post-hook "systemctl reload nginx"

通过按 Ctrl + X 并在出现提示时输入 Y 来保存文件。

更改任务文件的权限以使其可执行。

$ sudo chmod +x /etc/cron.daily/certbot-renew

第 9 步 - 安装和配置 Nginx

Rocky Linux 附带旧版本的 Nginx。要安装最新版本,您需要添加 Nginx 存储库。

创建并打开文件 /etc/yum.repos.d/nginx.repo 进行编辑。

$ sudo nano /etc/yum.repos.d/nginx.repo

将以下代码粘贴到其中。

[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

完成后按 Ctrl + X 并在出现提示时输入 Y 来保存文件。

安装 Nginx。

$ sudo dnf install nginx

启用 Nginx 服务。

$ sudo systemctl enable nginx

接下来,创建并打开 /etc/nginx/conf.d/etherpad.conf 进行编辑。

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

将以下代码粘贴到其中。

server {
    listen       443 ssl http2;
    listen       [::]:443 ssl http2;
    server_name  etherpad.example.com;

    access_log  /var/log/nginx/etherpad.access.log;
    error_log   /var/log/nginx/etherpad.error.log;
    
    ssl_certificate      /etc/letsencrypt/live/etherpad.example.com/fullchain.pem;
    ssl_certificate_key  /etc/letsencrypt/live/etherpad.example.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/etherpad.example.com/chain.pem;

    ssl_session_timeout  5m;
    ssl_session_cache shared:MozSSL:10m;  # about 40000 sessions
    ssl_session_tickets off;

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
    ssl_ecdh_curve X25519:prime256v1:secp384r1:secp521r1;
    ssl_stapling on;
    ssl_stapling_verify on;
    ssl_dhparam /etc/ssl/certs/dhparam.pem;

    location / {
        rewrite  ^/$ / break;
        rewrite  ^/locales/(.*) /locales/$1 break;
        rewrite  ^/locales.json /locales.json break;
        rewrite  ^/admin(.*) /admin/$1 break;
        rewrite  ^/p/(.*) /p/$1 break;
        rewrite  ^/static/(.*) /static/$1 break;
        rewrite  ^/pluginfw/(.*) /pluginfw/$1 break;
        rewrite  ^/javascripts/(.*) /javascripts/$1 break;
        rewrite  ^/socket.io/(.*) /socket.io/$1 break;
        rewrite  ^/ep/(.*) /ep/$1 break;
        rewrite  ^/minified/(.*) /minified/$1 break;
        rewrite  ^/api/(.*) /api/$1 break;
        rewrite  ^/ro/(.*) /ro/$1 break;
        rewrite  ^/error/(.*) /error/$1 break;
        rewrite  ^/jserror(.*) /jserror$1 break;
        rewrite  ^/redirect(.*) /redirect$1 break;
        rewrite  /favicon.ico /favicon.ico break;
        rewrite  /robots.txt /robots.txt break;
        rewrite  /(.*) /p/$1;
        
        proxy_pass         http://127.0.0.1:9001;
        proxy_buffering    off;
        proxy_set_header   Host $host;
        proxy_pass_header  Server;

        # proxy headers
        proxy_set_header    X-Real-IP $remote_addr;
        proxy_set_header    X-Forwarded-For $remote_addr;
        proxy_set_header    X-Forwarded-Proto $scheme;
        proxy_http_version  1.1;

        # websocket proxying
        proxy_set_header  Upgrade $http_upgrade;
        proxy_set_header  Connection $connection_upgrade;
    }
}

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

# enforce HTTPS
server {
    listen       80;
    listen       [::]:80;
    server_name  etherpad.example.com;
    return 301   https://$host$request_uri;
}

完成后按 Ctrl + X 并在出现提示时输入 Y 来保存文件。

验证 Nginx 配置文件语法。

$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

如果出现以下错误,则需要编辑文件 /etc/nginx/nginx.conf 以添加/调整变量的大小 server_names_hash_bucket_size。

nginx: [emerg] could not build the server_names_hash, you should increase server_names_hash_bucket_size

打开文件 /etc/nginx/nginx.conf 进行编辑。

$ sudo nano /etc/nginx/nginx.conf

在行 include /etc/nginx/conf.d/*.conf; 之前添加以下行。

server_names_hash_bucket_size  64;

通过按 Ctrl + X 并在出现提示时输入 Y 来保存文件。再次验证 Nginx。

最后,启动 Nginx 服务以启用新配置。

$ sudo systemctl start nginx

在浏览器中启动 URL https://etherpad.example.com,Etherpad 主页将打开。您现在可以使用它来编辑文档和邀请协作者。

更新 Etherpad

更新 Etherpad 很容易。第一步是切换到 Etherpad 用户 shell。

$ sudo -u etherpad bash

切换到 /opt/etherpad/etherpad-lite 目录。

[ user] cd /opt/etherpad/etherpad-lite

将最新的 Etherpad 存储库拉入 /opt/etherpad/etherpad-lite 目录。

[ ~]$ git pull origin

运行 Etherpads run.sh 脚本以设置最新版本的 Etherpad。

[ etherpad-lite]$ src/bin/run.sh

结论

在本教程中,我们使用 Nginx 服务器设置 Etherpad 协作编辑器,并使用 Lets Encrypt SSL 证书进行保护。您的 Etherpad 安装已准备就绪,可以使用它来扩展更多功能,包括经过身份验证的用户、插件和用户界面自定义。

如果您有任何问题,请在下面的评论中发表。

©2015-2025 Norria support@norria.com