发布于 

james分布式版本部署一

前言

服务器系统:Ubuntu 20.04.6 LTS

总项目地址
官方文档
3.8.2项目地址
james3.8.2下载地址

当前安装james3.8.2版本

基础环境

James 3.8.2需要 Java 运行时环境,Java 版本 11。

1
2
3
sudo apt update
sudo apt install openjdk-11-jdk
sudo apt install maven

在运行 James 之前,应将环境变量 JAVA_HOME 设置为 JRE 主目录,如果不确定可以先查看一下。

设置JAVA_HOME

1
echo $JAVA_HOME

我这里执行上面的命令并无结果输出,也就是没有设置这个环境变量。

1
2
3
4
root@mail-test:/# java -version
openjdk version "11.0.26" 2025-01-21
OpenJDK Runtime Environment (build 11.0.26+4-post-Ubuntu-1ubuntu120.04)
OpenJDK 64-Bit Server VM (build 11.0.26+4-post-Ubuntu-1ubuntu120.04, mixed mode, sharing)
1
2
3
4
5
6
root@mail-test:/# mvn -v
Apache Maven 3.6.3
Maven home: /usr/share/maven
Java version: 11.0.26, vendor: Ubuntu, runtime: /usr/lib/jvm/java-11-openjdk-amd64
Default locale: en, platform encoding: UTF-8
OS name: "linux", version: "5.15.0-1075-gcp", arch: "amd64", family: "unix"

可以看出这台测试服务器之前安装过java 11.0.26,maven 3.6.3,所以需要先找出之前的安装路径。

1
sudo update-alternatives --config java
1
2
3
root@mail-test:/# update-alternatives --config java
There is only one alternative in link group java (providing /usr/bin/java): /usr/lib/jvm/java-11-openjdk-amd64/bin/java
Nothing to configure.

打开 /etc/environment 文件进行编辑

1
sudo nano /etc/environment

mac系统,编辑完成后按control+x键退出编辑,按y键保存,如果没有退出,再敲一下回车键

或者

1
vim /etc/environment

在文件末尾添加以下行,注意不要把路径直接指向bin目录

1
JAVA_HOME="/usr/lib/jvm/java-11-openjdk-amd64"

保存并退出编辑器

1
2
3
4
root@mail-test:/usr/lib/jvm/java-11-openjdk-amd64/bin# nano /etc/environment
root@mail-test:/usr/lib/jvm/java-11-openjdk-amd64/bin# cat /etc/environment
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin"
JAVA_HOME="/usr/lib/jvm/java-11-openjdk-amd64"

使更改生效

1
source /etc/environment

通过以下命令来验证 JAVA_HOME 是否设置正确

1
2
3
root@mail-test:/usr/lib/jvm/java-11-openjdk-amd64/bin# echo $JAVA_HOME
/usr/lib/jvm/java-11-openjdk-amd64
root@mail-test:/usr/lib/jvm/java-11-openjdk-amd64/bin#

为了确保系统能够找到 Java 可执行文件,还需要将 JAVA_HOME/bin 添加到 PATH 环境变量中

打开 ~/.bashrc 或 ~/.bash_profile 文件进行编辑

1
nano ~/.bashrc

在文件末尾添加以下行

1
export PATH=$JAVA_HOME/bin:$PATH

使更改生效

1
source ~/.bashrc

安装Libc6

先验证是否安装了

1
2
3
4
root@mail-test:/# dpkg -l | grep libc6
ii libc6:amd64 2.31-0ubuntu9.17 amd64 GNU C Library: Shared libraries
ii libc6-dev:amd64 2.31-0ubuntu9.17 amd64 GNU C Library: Development Libraries and Header Files
root@mail-test:/#

这台服务器已经安装了,所以跳过,如果没有安装需要先安装一下,例如

1
sudo apt-get install libc6-i386 libc6-dev-i386

更新系统和安装必要的软件包

1
2
3
sudo apt update
sudo apt upgrade -y
sudo apt install -y apt-transport-https ca-certificates curl software-properties-common

安装中间件-Docker(方式一)

安装Docker

添加 Docker 的官方 GPG 密钥,使用 GPG 密钥来验证软件包的完整性

1
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

添加 Docker 的 APT 软件源 将 Docker 的官方仓库添加到 APT 源列表

1
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

更新软件包索引并安装 Docker 从 Docker 的官方仓库安装 Docker 引擎

1
2
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io

验证 Docker 是否安装成功 运行以下命令,检查 Docker 是否正常工作

1
2
3
4
# 显示 Docker 的版本
sudo docker --version
# 运行一个测试容器,验证 Docker 是否正常工作
sudo docker run hello-world

(可选)允许非root用户运行

默认情况下,Docker 需要 root 权限。如果希望普通用户也能使用 Docker,可以将用户添加到 docker 用户组

将当前用户添加到 docker 组

1
sudo usermod -aG docker $USER

重新登录或运行以下命令使更改生效

1
newgrp docker

验证是否无需 sudo 即可运行 Docker

1
docker run hello-world

设置 Docker 开机自启

1
2
sudo systemctl enable docker
sudo systemctl start docker

(可选)安装DockerCompose

Docker Compose 是用于定义和运行多容器 Docker 应用的工具。

下载 Docker Compose 二进制文件

1
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

设置权限

1
sudo chmod +x /usr/local/bin/docker-compose

验证安装

1
docker-compose --version

安装中间件

在 Docker 上为 James 环境创建自己的用户网络

1
2
3
root@mail-test:/home/james# docker network create --driver bridge james
f876feff33f65ba730ac5e5adfb77489bb293ff7f1d208102007a8af4fc51d84
root@mail-test:/home/james#

安装cassandra:3.11.10

1
docker run -d --network james -p 9042:9042 --name=cassandra cassandra:3.11.10

安装opensearch:2.1.0

1
docker run -d --network james -p 9200:9200 --name=opensearch --env 'discovery.type=single-node' opensearchproject/opensearch:2.1.0

安装rabbitmq:3.9.18

1
docker run -d --network james -p 5672:5672 -p 15672:15672 --name=rabbitmq rabbitmq:3.9.18-management
安装延时插件-项目有用到

下载插件

1
wget https://github.com/rabbitmq/rabbitmq-delayed-message-exchange/releases/download/3.9.0/rabbitmq_delayed_message_exchange-3.9.0.ez

拷贝插件到docker容器中,其中a0f2970be979为容器id

1
docker cp rabbitmq_delayed_message_exchange-3.9.0.ez a0f2970be979:/plugins/

进入docker容器

1
docker exec -it a0f2970be979 /bin/bash

启用插件

1
rabbitmq-plugins enable rabbitmq_delayed_message_exchange

安装zenko/cloudserver:8.2.6

1
docker run -d --network james --env 'REMOTE_MANAGEMENT_DISABLE=1' --env 'SCALITY_ACCESS_KEY_ID=accessKey1' --env 'SCALITY_SECRET_ACCESS_KEY=secretKey1' --name=s3 zenko/cloudserver:8.2.6

安装TIka

1
docker run -d --name tika -p 9998:9998 apache/tika

在 James 所在的服务器上,使用 curl 测试是否可以访问 Tika 服务

1
curl http://<docker-host-ip>:9998/tika
1
2
3
root@mail-test:/home/james# curl http://127.0.0.1:9998/tika
This is Tika Server (Apache Tika 3.1.0). Please PUT
root@mail-test:/home/james#

安装中间件-手动(方式二)

安装opensearch:2.1.0

下载
1
wget https://artifacts.opensearch.org/releases/bundle/opensearch/2.1.0/opensearch-2.1.0-linux-x64.tar.gz
解压
1
root@mail-test:/data/runTime/opensearch# tar -xzf opensearch-2.1.0-linux-x64.tar.gz
配置
1
cd opensearch-2.1.0

编辑 config/opensearch.yml

my-opensearch-cluster
1
2
3
4
5
6
7
8
9
10
11
12
#下面3个是集群配置,按默认的或者按这个配置
node.name: my-node-1
discovery.seed_hosts: ["127.0.0.1"]
cluster.initial_master_nodes: ["my-node-1"]

#放开修改配置信息如下:
network.host: 0.0.0.0
#放开/新增,去掉注释,注意格式,空格
discovery.type: single-node
#新增
plugins.security.disabled: true
plugins.security.ssl.http.enabled: false
开机自启(方式一)
1
sudo nano /etc/systemd/system/opensearch.service

添加以下内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
[Unit]
Description=OpenSearch
After=network.target

[Service]
User=nobody
Group=nogroup

# OpenSearch 启动命令
ExecStart=/data/runTime/opensearch/opensearch-2.1.0/bin/opensearch

# 重启策略
Restart=always

# 环境变量(如果需要)
Environment=OPENSEARCH_HOME=/data/runTime/opensearch/opensearch-2.1.0
Environment=OPENSEARCH_PATH_CONF=/data/runTime/opensearch/opensearch-2.1.0/config

# 限制资源使用(可选)
LimitNOFILE=65535
LimitNPROC=4096

[Install]
WantedBy=multi-user.target

如果不想指定特定的用户和组,但仍然希望以非 root 用户运行 OpenSearch,可以采取以下方法:

方法 1:使用系统默认用户

大多数 Linux 系统都有一个默认的普通用户(例如 nobody 或 daemon),可以直接使用这些用户

方法 2:不指定用户(不推荐)

如果坚持不指定用户,可以直接删除 User 和 Group 配置

1
2
3
[Service]
ExecStart=/data/runTime/opensearch/opensearch-2.1.0/bin/opensearch
Restart=always

保存并退出,然后启用并启动服务

1
2
3
sudo systemctl daemon-reload
sudo systemctl enable opensearch
sudo systemctl start opensearch

这一步执行失败了

1
2
root@mail-test:/data/runTime/opensearch/opensearch-2.1.0# sudo systemctl start opensearch
Failed to start opensearch.service: Unit opensearch.service has a bad unit file setting.

先确定路径是否有问题

1
2
root@mail-test:/data/runTime/opensearch/opensearch-2.1.0# ls -l /data/runTime/opensearch/opensearch-2.1.0/bin/opensearch
-rwxr-xr-x 1 ubuntu ubuntu 3030 Jan 1 1970 /data/runTime/opensearch/opensearch-2.1.0/bin/opensearch

确保用户和组权限

1
sudo chown -R nobody:nogroup /data/runTime/opensearch/opensearch-2.1.0

再次尝试启动服务

1
sudo systemctl start opensearch

如果启动失败,查看详细日志

1
sudo journalctl -u opensearch.service -f
1
2
3
4
5
root@mail-test:/data/runTime/opensearch/opensearch-2.1.0# sudo journalctl -u opensearch.service -f
-- Logs begin at Wed 2025-02-12 02:15:58 UTC. --
Feb 12 03:53:26 mail-test systemd[1]: opensearch.service: Service has more than one ExecStart= setting, which is only allowed for Type=oneshot services. Refusing.
Feb 12 03:59:14 mail-test systemd[1]: opensearch.service: Service has more than one ExecStart= setting, which is only allowed for Type=oneshot services. Refusing.
Feb 12 03:59:18 mail-test systemd[1]: opensearch.service: Service has more than one ExecStart= setting, which is only allowed for Type=oneshot services. Refusing.

存在多个 ExecStart= 配置项,而 systemd 不允许在非 Type=oneshot 的服务中定义多个 ExecStart,返回前面步骤把配置文件中多多已经删掉了

在修改服务文件后,需要重新加载 systemd 配置

1
sudo systemctl daemon-reload

再次启动后启动成功

直接启动(方式二)

opensearch根目录执行

1
./bin/opensearch -d
验证安装
1
curl -X GET "localhost:9200"

成功示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
root@mail-test:/data/runTime/opensearch/opensearch-2.1.0# curl -X GET "localhost:9200"
{
"name" : "mail-test",
"cluster_name" : "opensearch",
"cluster_uuid" : "t3Ux-LhvTLWb75geNvP0Ig",
"version" : {
"distribution" : "opensearch",
"number" : "2.1.0",
"build_type" : "tar",
"build_hash" : "388c80ad94529b1d9aad0a735c4740dce2932a32",
"build_date" : "2022-06-30T21:31:04.823801692Z",
"build_snapshot" : false,
"lucene_version" : "9.2.0",
"minimum_wire_compatibility_version" : "7.10.0",
"minimum_index_compatibility_version" : "7.0.0"
},
"tagline" : "The OpenSearch Project: https://opensearch.org/"
}
root@mail-test:/data/runTime/opensearch/opensearch-2.1.0#
OpenSearchDashboards(可选)

OpenSearch Dashboards 是 OpenSearch 的可视化工具

1
2
3
4
5
6
7
8
9
10
root@mail-test:/data/runTime/opensearch/opensearch-2.1.0# cd ../../
root@mail-test:/data/runTime# mkdir opensearch-dashboards-210
root@mail-test:/data/runTime# cd opensearch-dashboards-210/
root@mail-test:/data/runTime/opensearch-dashboards-210#

wget https://artifacts.opensearch.org/releases/bundle/opensearch-dashboards/2.1.0/opensearch-dashboards-2.1.0-linux-x64.tar.gz
tar -xzf opensearch-dashboards-2.1.0-linux-x64.tar.gz
cd opensearch-dashboards-2.1.0
#开机自启的话不执行下面这条手动启动
./bin/opensearch-dashboards

编辑 config/opensearch_dashboards.yml

1
2
3
4
5
6
7
8
server.uuid: "4caaa2ac-c82f-4b5e-9831-6a30c96e4b10"
server.host: "0.0.0.0" # 监听所有 IP
server.port: 5601 # 默认端口
opensearch.hosts: ["http://localhost:9200"] # OpenSearch 集群地址
opensearch.ssl.verificationMode: none # 如果使用自签名证书,禁用 SSL 验证

#关闭登陆功能,需要opensearch.yml中配置了plugins.security.disabled: true
opensearch_security.enabled: false

在 OpenSearch Dashboards 2.0.1 版本中,server.uuid 必须是真正符合 RFC 4122 UUID 标准的字符串,而不能是任意字符串

这里千万注意 opensearch.hosts: [“http://localhost:9200"] # OpenSearch 集群地址
默认是https,如果没配证书,这里记得用http

开放权限

1
2
sudo chown -R nobody:nogroup /data/runTime/opensearch-dashboards-210/opensearch-dashboards-2.1.0/data
sudo chmod -R 755 /data/runTime/opensearch-dashboards-210/opensearch-dashboards-2.1.0/data
OpenSearchDashboards自启(可选)

在 /etc/systemd/system/ 目录下创建一个新的服务文件,例如 opensearch-dashboards.service

1
sudo nano /etc/systemd/system/opensearch-dashboards.service

编写服务文件内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
[Unit]
Description=OpenSearch Dashboards
After=network.target

[Service]
# 运行 OpenSearch Dashboards 的用户和组(可选)
User=nobody
Group=nogroup

# OpenSearch Dashboards 启动命令
ExecStart=/data/runTime/opensearch-dashboards-210/opensearch-dashboards-2.1.0/bin/opensearch-dashboards

# 重启策略
Restart=always

# 环境变量(可选)
Environment=OPENSEARCH_DASHBOARDS_HOME=/data/runTime/opensearch-dashboards-210/opensearch-dashboards-2.1.0
Environment=OPENSEARCH_DASHBOARDS_PATH_CONF=/data/runTime/opensearch-dashboards-210/opensearch-dashboards-2.1.0/config

# 资源限制(可选)
LimitNOFILE=65535
LimitNPROC=4096

[Install]
WantedBy=multi-user.target

确保服务文件的权限正确

1
sudo chmod 644 /etc/systemd/system/opensearch-dashboards.service

重新加载 systemd 配置

1
sudo systemctl daemon-reload

启用开机自启

1
sudo systemctl enable opensearch-dashboards

列出所有开机自启项目,按下箭头可以往下加载

1
systemctl list-unit-files --type=service --state=enabled

启动 OpenSearch Dashboards 服务

1
2
sudo systemctl start opensearch-dashboards
sudo systemctl status opensearch-dashboards

验证

1
http://<服务器IP>:5601

或者

1
curl -X GET "localhost:5601"

如果页面正常加载,说明 OpenSearch Dashboards 已成功启动,如果不能访问看看端口是否打开

如果防火墙端口已开,但是还是无法访问

确保端口 5601 没有被其他进程占用

1
sudo lsof -i :5601

检查 OpenSearch 集群状态

1
curl -X GET "localhost:9200/_cluster/health?pretty"

查看日志

如果根目录下没有logs文件夹则运行下面命令

1
sudo journalctl -u opensearch-dashboards.service --since "2 hours ago" --no-pager

访问 http://<服务器IP>:5601 页面提示 OpenSearch Dashboards server is not ready yet

返回看配置那一步

安装rabbitmq:3.8.2

前置环境

我这里之前安装了1次,没成功,卸载并清理残留

1
2
3
4
5
sudo apt-get remove --purge erlang
sudo apt-get autoremove

sudo apt-get remove --purge rabbitmq-server
sudo apt-get autoremove
导入MQ的GPGKey
1
2
# 从 rabbitmq.com 导入签名密钥
curl -fsSL https://www.rabbitmq.com/rabbitmq-release-signing-key.asc | sudo apt-key add -
添加APT 仓库

RabbitMQ 官方仓库依托于 Cloudsmith,现在分为 Erlang 和 RabbitMQ 两个仓库,需要分别添加

1
2
3
4
5
6
7
# 添加 RabbitMQ Erlang 仓库
echo "deb https://dl.cloudsmith.io/public/rabbitmq/rabbitmq-erlang/deb/ubuntu focal main" \
| sudo tee /etc/apt/sources.list.d/rabbitmq-erlang.list

# 添加 RabbitMQ Server 仓库
echo "deb https://dl.cloudsmith.io/public/rabbitmq/rabbitmq-server/deb/ubuntu focal main" \
| sudo tee /etc/apt/sources.list.d/rabbitmq-server.list
更新软件包索引
1
sudo apt-get update
查找可用版本
1
apt-cache madison rabbitmq-server

示例

1
2
3
4
5
root@mail-test:/data/runTime/rabbitmq# apt-cache madison rabbitmq-server
rabbitmq-server | 3.8.3-0ubuntu0.2 | http://us-west1.gce.archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages
rabbitmq-server | 3.8.3-0ubuntu0.2 | http://security.ubuntu.com/ubuntu focal-security/main amd64 Packages
rabbitmq-server | 3.8.2-0ubuntu1 | http://us-west1.gce.archive.ubuntu.com/ubuntu focal/main amd64 Packages
root@mail-test:/data/runTime/rabbitmq#
安装指定版本
1
2
# 假设仓库中显示的 3.9.18 版本号带有 -1(或其他后缀)
sudo apt-get install rabbitmq-server=3.8.2-0ubuntu1

如果提示需要安装依赖 Erlang,也可以直接安装依赖,这里执行没有提示

1
sudo apt-get install rabbitmq-server=3.9.18-1 erlang-base erlang-crypto erlang-public-key erlang-ssl
启动并验证
1
sudo systemctl status rabbitmq-server
开机自启

列出所有开机自启项目,按下箭头可以往下加载

1
systemctl list-unit-files --type=service --state=enabled

发现rabbitmq自动设置了开机启动,如果列表里面没有,则用下面的命令设置一下

1
sudo systemctl enable rabbitmq-server
检查状态
1
sudo systemctl status rabbitmq-server
启用RabbitMQ管理插件
1
sudo rabbitmq-plugins enable rabbitmq_management

启用插件后,你可以通过浏览器访问RabbitMQ的管理界面,默认的用户名和密码是guest/guest

guest 用户是一个特殊的默认用户,它的默认配置是仅允许通过 localhost 登录,最好新增账号

1
http://<your-server-ip>:15672/

如果登陆 rabbitmq网页提示 User can only log in via localhost

1
rabbitmqctl set_permissions -p / <username> ".*" ".*" ".*"
1
2
3
4
5
6
7
root@mail-test:/data/runTime/rabbitmq# sudo rabbitmqctl add_user xen q12345678
Adding user "xen" ...
root@mail-test:/data/runTime/rabbitmq# sudo rabbitmqctl set_user_tags xen administrator
Setting tags for user "xen" to [administrator] ...
root@mail-test:/data/runTime/rabbitmq# sudo rabbitmqctl set_permissions -p / xen ".*" ".*" ".*"
Setting permissions for user "xen" in vhost "/" ...
root@mail-test:/data/runTime/rabbitmq#

这将允许用户 从任何主机访问 RabbitMQ。

开放端口

tcp:5672,15672

安装延时消息插件,项目有用到

下载插件

1
wget https://github.com/rabbitmq/rabbitmq-delayed-message-exchange/releases/download/3.9.0/rabbitmq_delayed_message_exchange-3.9.0.ez

rabbitmq安装目录通常是

1
/usr/lib/rabbitmq/lib/rabbitmq_server-<VERSION>/

那么这里应该就是

1
/usr/lib/rabbitmq/lib/rabbitmq_server-3.8.2/

如果找不到,对于从官方仓库或本地 .deb 文件安装的 RabbitMQ 包可以执行下面语句

1
dpkg -L rabbitmq-server

启用插件

1
2
3
4
5
6
root@mail-test:/data/runTime/rabbitmq# ls
rabbitmq_delayed_message_exchange-3.9.0.ez
root@mail-test:/data/runTime/rabbitmq# mv rabbitmq_delayed_message_exchange-3.9.0.ez /usr/lib/rabbitmq/lib/rabbitmq_server-3.8.2/plugins/
root@mail-test:/data/runTime/rabbitmq#

rabbitmq-plugins enable rabbitmq_delayed_message_exchange

查看是否启用成功

1
rabbitmq_delayed_message_exchange
创建用户(可选)

可以通过以下命令创建一个新的RabbitMQ用户

1
2
3
sudo rabbitmqctl add_user <username> <password>
sudo rabbitmqctl set_user_tags <username> administrator
sudo rabbitmqctl set_permissions -p / <username> ".*" ".*" ".*"

安装TIka

无版本限制

下载
1
wget https://dlcdn.apache.org/tika/2.9.3/tika-server-standard-2.9.3.jar
1
2
3
4
5
root@mail-test:/data/runTime# mkdir tika
root@mail-test:/data/runTime# ls
opensearch opensearch-dashboards-210 rabbitmq tika
root@mail-test:/data/runTime# cd tika/
root@mail-test:/data/runTime/tika# wget https://dlcdn.apache.org/tika/2.8.0/tika-app-2.8.0.jar

如果404

则先到 Tika 官方下载页面 查看当前最新可用版本,然后使用对应的下载链接,或者替换链接中的版本号

官方下载页面

1
wget https://dlcdn.apache.org/tika/2.9.3/tika-server-standard-2.9.3.jar
开机自启
1
sudo nano /etc/systemd/system/tika.service

写入以下内容

1
2
3
4
5
6
7
8
9
10
11
[Unit]
Description=Apache Tika Server
After=network.target

[Service]
Type=simple
ExecStart=/usr/bin/java -jar /data/runTime/tika/tika-server-standard-2.9.3.jar -p 9998
Restart=on-failure

[Install]
WantedBy=multi-user.target

加载并启动服务

1
2
3
sudo systemctl daemon-reload
sudo systemctl enable tika
sudo systemctl start tika

检查服务状态

1
systemctl status tika

安装cassandra 4.0.10

添加 Cassandra 官方仓库

导入 GPG 密钥,此命令会从 Apache 官方下载 Cassandra 的密钥并添加到系统的密钥管理中。

1
wget -q -O - https://downloads.apache.org/cassandra/KEYS | sudo apt-key add -

添加 Cassandra 仓库到 sources.list

1
wget -q -O - https://downloads.apache.org/cassandra/KEYS | sudo apt-key add -

Cassandra 4.0.x 版本对应的仓库地址通常为 40x,请在 /etc/apt/sources.list.d/ 下创建新的源文件

1
2
echo "deb [arch=amd64] https://deb.apache.org/cassandra 40x main" \
| sudo tee /etc/apt/sources.list.d/cassandra.sources.list

更新包索引

1
sudo apt-get update

查看可用版本(可选)

1
apt-cache madison cassandra

安装指定版本

1
sudo apt-get install cassandra=4.0.10

一直没法正确执行,放弃

下载

前往 Apache Cassandra 下载页,或其 官方镜像,找到 4.0.10(4.0.x 系列)的链接后,进入对应的 deb 目录

官方镜像

Apache Cassandra 下载页

我这里进的 官方镜像 ,选择版本后文件如下

1
2
3
4
5
6
7
8
[   ] apache-cassandra-4.0.17-bin.tar.gz        2025-02-06 10:02   46M  
[TXT] apache-cassandra-4.0.17-bin.tar.gz.asc 2025-02-06 10:02 833
[TXT] apache-cassandra-4.0.17-bin.tar.gz.sha256 2025-02-06 10:02 65
[TXT] apache-cassandra-4.0.17-bin.tar.gz.sha512 2025-02-06 10:02 129
[ ] apache-cassandra-4.0.17-src.tar.gz 2025-02-06 10:02 13M
[TXT] apache-cassandra-4.0.17-src.tar.gz.asc 2025-02-06 10:02 833
[TXT] apache-cassandra-4.0.17-src.tar.gz.sha256 2025-02-06 10:02 65
[TXT] apache-cassandra-4.0.17-src.tar.gz.sha512 2025-02-06 10:02 129

右键文件获取下载链接

1
wget https://downloads.apache.org/cassandra/4.0.17/apache-cassandra-4.0.17-bin.tar.gz

解压

1
tar -xzvf apache-cassandra-4.0.17-bin.tar.gz
环境变量

编辑~/.bashrc文件,添加Cassandra的路径,直接执行下面语句

1
2
echo 'export CASSANDRA_HOME=/data/runTime/cassandra401' >> ~/.bashrc
echo 'export PATH=$PATH:$CASSANDRA_HOME/bin' >> ~/.bashrc

使更改生效

1
source ~/.bashrc
配置

编辑/conf/cassandra.yaml文件,根据需要调整配置,如数据存储路径、监听地址等

1
nano /data/runTime/cassandra401/conf/cassandra.yaml

常见配置项:

data_file_directories: 数据文件存储路径
commitlog_directory: 提交日志存储路径
saved_caches_directory: 缓存存储路径
listen_address: Cassandra节点监听地址
rpc_address: 远程过程调用地址

创建系统专用用户

为 Cassandra 创建一个专用用户(例如 cassandra),并确保该用户对 Cassandra 的安装目录和数据目录有适当的权限

1
sudo useradd -r -s /bin/false cassandra

更改目录权限

将 Cassandra 安装目录和数据目录的所有权更改为新创建的 cassandra 用户。

假设 Cassandra 安装在 /data/runTime/cassandra401/,数据目录在 /var/lib/cassandra,日志目录在 /var/log/cassandra,运行以下命令

1
2
3
sudo chown -R cassandra:cassandra /data/runTime/cassandra401/
sudo chown -R cassandra:cassandra /var/lib/cassandra
sudo chown -R cassandra:cassandra /var/log/cassandra
开机启动

创建Systemd服务文件

1
sudo nano /etc/systemd/system/cassandra.service

添加以下内容

1
2
3
4
5
6
7
8
9
10
11
12
[Unit]
Description=Apache Cassandra
After=network.target

[Service]
User=cassandra
Group=cassandra
ExecStart=/data/runTime/cassandra401/bin/cassandra -f
Restart=always

[Install]
WantedBy=multi-user.target

启用并启动服务

1
2
3
sudo systemctl daemon-reload
sudo systemctl enable cassandra
sudo systemctl start cassandra

检查服务状态

1
sudo systemctl status cassandra

如果启动失败,查看日志

1
2
3
4
5
6
7
8
9
Feb 13 03:34:16 mail-test cassandra[205447]: Running Cassandra as root user or group is not recommended - please start Cassandra using a different system user.
Feb 13 03:34:16 mail-test cassandra[205447]: If you really want to force running Cassandra as root, use -R command line option.
Feb 13 03:34:16 mail-test systemd[1]: cassandra.service: Main process exited, code=exited, status=1/FAILURE
Feb 13 03:34:16 mail-test systemd[1]: cassandra.service: Failed with result 'exit-code'.
Feb 13 03:34:16 mail-test systemd[1]: cassandra.service: Scheduled restart job, restart counter is at 5.
Feb 13 03:34:16 mail-test systemd[1]: Stopped Apache Cassandra.
Feb 13 03:34:16 mail-test systemd[1]: cassandra.service: Start request repeated too quickly.
Feb 13 03:34:16 mail-test systemd[1]: cassandra.service: Failed with result 'exit-code'.
Feb 13 03:34:16 mail-test systemd[1]: Failed to start Apache Cassandra.

报错如下:不建议使用root用户或root组运行Cassandra,请使用其他系统用户启动Cassandra

已返回上面步骤,修改自启配置

1
sudo journalctl -u cassandra.service --since "2 hours ago" --no-pager
启动

进入Cassandra目录并启动服务

1
bin/cassandra -f
防火墙配置

tcp:9042,7000

验证
1
nodetool status
使用CQL Shell

启动CQL Shell与Cassandra交互

1
bin/cqlsh
其他

如果忘记了安装目录,可以用下面的命令查找配置文件

1
sudo find / -name cassandra.yaml 2>/dev/null
集群参考

配置 Cassandra 4.0.10 集群主要是对各个节点的配置文件(通常是 cassandra.yaml)进行修改,确保各节点能够相互发现并正确通信。下面是一个基本的配置步骤说明,未验证,仅供参考

统一集群名称,在所有节点的 cassandra.yaml 中,将 cluster_name 设置为相同的值,例如

1
cluster_name: 'MyCluster'

配置种子节点(Seeds),种子节点用于初始的节点发现,至少指定一个稳定的 IP。建议配置两个或更多,例如

1
seeds: "192.168.1.1,192.168.1.2"

注意:种子节点列表在每个节点中都应保持一致

设置节点通信地址,listen_address:指定本机用于集群内部节点间通信的 IP 地址(通常为机器实际的私网 IP)

1
listen_address: 192.168.1.X  # 各节点各自的IP地址

rpc_address:用于客户端(如 cqlsh)连接的地址,常设置为 0.0.0.0 或本机 IP

1
rpc_address: 0.0.0.0

如果节点在 NAT 或云环境下部署,还需要设置
broadcast_address:对外公布的 IP 地址,用于集群内部的对等通信。
broadcast_rpc_address:对外公布的 RPC 连接地址。

选择合适的 Snitch
配置 endpoint_snitch 以反映数据中心、机架等拓扑信息。通常建议使用

1
endpoint_snitch: GossipingPropertyFileSnitch

如有需要,可编辑 cassandra-rackdc.properties 文件,配置数据中心和机架信息

启动并检查集群状态
在每个节点修改好配置后启动 Cassandra 服务。
使用 nodetool status 命令检查集群状态,确保所有节点状态为 UN(Up/Normal)。
其他注意事项
确保各节点之间网络互通,防火墙或安全组已开放必要的端口(如 7000、7001、9042 等)。
每个节点的硬件配置、JVM 参数等也应根据实际负载进行调优

官方文档

安装nginx

更新软件包索引
1
sudo apt update
安装
1
sudo apt install nginx
验证安装版本
1
nginx -v
配置文件路径

使用 apt 安装 nginx 后,其默认的配置文件存放在 /etc/nginx 目录下,主要配置文件为:

1
/etc/nginx/nginx.conf

此外,虚拟主机(站点)的配置文件通常存放在:

1
/etc/nginx/sites-available
1
/etc/nginx/sites-enabled
开机自启

使用 apt 安装 nginx 后,Ubuntu 系统通常会自动启用 nginx 的 systemd 服务,这样 nginx 就会在开机时自动启动。可以使用以下命令检查 nginx 是否已设置为开机自启

1
sudo systemctl is-enabled nginx

如果输出结果为 enabled,说明 nginx 已经设置为开机自启;
如果输出结果为 disabled 或其他状态,则可以手动启用,执行

1
sudo systemctl enable nginx