Etherpad是Google Docs和Zoho Writer等服务的免费和开源的替代品。Etherpad是一个供你的团队使用的协作式实时文本编辑器,由于Etherpad是一个基于网络的文本编辑器,它可以在任何地方、任何时间访问。
Etherpad上的任何变化都是实时发生的,而且etherpad还支持版本管理和团队的内置格式。Etherpad是一个高度可定制的编辑器,支持各种插件。而且还支持现代文档格式,如doc、pdf、odt、markdown等。
本教程将向你展示如何在一台带有MariaDB数据库服务器和Nginx网络服务器的AlmaLinux 9服务器上安装Etherpad。你还将通过SSL证书来确保Etherpad的安全,以实现安全访问。
sudo dnf group install "Development Tools"
接下来,运行下面的命令来安装一些额外的依赖项。当出现提示时,输入y确认并按下ENTER。
sudo dnf install gzip git curl python3-devel openssl-devel pkg-config
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目录下。
sudo dnf install mariadb-server
一旦MariaDB安装完毕,运行下面的命令来启动和启用MariaDB服务。
sudo systemctl start mariadb
sudo systemctl enable mariadb
然后,使用下面的命令验证MariaDB的服务状态。
sudo systemctl status mariadb
如果MariaDB服务器正在运行,输出应该显示如下:
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
sudo mariadb-secure-installation
命令执行后,你会被要求进行以下配置:
随着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。
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来终止该进程。
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
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作为你的朋友/小组/团队的主要协作编辑器了。