RocketMQ 做成服务启动

复制代码
1、为了安全起见,最好为 RocketMQ 创建一个专用用户和组。可以使用以下命令:
[root@localhost /]# sudo groupadd rocketmq
[root@localhost /]# sudo useradd -r -g rocketmq -s /bin/false rocketmq

2、把文件改个目录
准备:复制目录要不目录太长了。
-r递归复制,-a 保留权限
[root@localhost local]# cp -r -a /usr/local/software/rocketmq-all-5.3.1-source-release/distribution/target/rocketmq-5.3.1/rocketmq-5.3.1 /usr/local/rocketmq-5.3.1

3、设置文件权限,即改变目录的所有者和权限
将 RocketMQ 的文件权限设置为新创建的用户和组:

sudo chown -R rocketmq:rocketmq /usr/local/rocketmq-5.3.1
sudo chmod -R 755 /usr/local/rocketmq-5.3.1

4、nameserver的服务配置

vim /usr/lib/systemd/system/mqnamesrv.service

[Unit]
Description=RocketMQ 5.3.1 - nameserver
After=network.target

[Service]
Type=forking
User=rocketmq
Environment="JAVA_HOME=/usr/local/software/jdk-21.0.5"
Environment="PATH=$JAVA_HOME/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin"
ExecStart=/usr/local/rocketmq-5.3.1/bin/mqnamesrv
ExecStop=/usr/local/rocketmq-5.3.1/bin/mqshutdown namesrv
Restart=always

[Install]
WantedBy=multi-user.target


下面的是给jdk创建软连接,创建过的可以不用创建了
ln -sf /usr/local/software/jdk-21.0.5 /usr/bin/java


5. 重新加载 systemd
重新加载 systemd 配置以使新服务生效:

sudo systemctl daemon-reload

6. 启动 RocketMQ 服务
启动 Name Server 和 Broker 服务:
sudo systemctl start mqnamesrv
sudo systemctl start mqbroker

7. 设置开机自启
设置 RocketMQ Name Server 和 Broker 在系统启动时自启:
sudo systemctl enable mqnamesrv
sudo systemctl enable mqbroker


2 broker配置服务,/usr/local/software/myshell是mqbroker.sh脚本存放的位置。

vim /usr/lib/systemd/system/mqbroker.service

[Unit]
Description=RocketMQ 5.3.1 - Broker+Proxy
After=network-online.target
 
[Service]
Environment=JAVA_HOME=/usr/local/software/jdk1.8.0_421
User=root
Group=root
Type=simple
ExecStart=/usr/local/rocketmq-5.3.1/bin/mqbroker -c  conf/broker.conf -n 192.168.150.50:9876 --enable-proxy
ExecStop=/usr/local/rocketmq-5.3.1/bin/mqshutdown broker

[Install]
WantedBy=multi-user.target

6 开启自启和启动

echo $JAVA_HOME

systemctl  daemon-reload
systemctl  enable mqnamesrv.service
systemctl  start  mqnamesrv.service
systemctl  status  mqnamesrv.service
journalctl -xe

查看具体的细节
journalctl -u mqnamesrv.service -b

systemctl  enable mqbroker.service 
systemctl  start  mqbroker.service 

如果提示:ERROR: Please set the JAVA_HOME variable in your environment, We need java(x64)! !!

[root@localhost local]# java -version
java version "1.8.0_421"
Java(TM) SE Runtime Environment (build 1.8.0_421-b09)

7 如果启动失败看日志

查看系统日志:
使用 journalctl -xe 或 journalctl -u mqnamesrv.service

1. sudo chown -R rocketmq:rocketmq /opt/rocketmq
sudo:以超级用户权限运行命令,确保有足够的权限进行更改。
chown:改变文件或目录的所有者。
-R:递归地应用此操作到所有子目录和文件。
rocketmq:rocketmq:将文件的所有者设置为用户 rocketmq,并将所属组设置为 rocketmq 组。
/opt/rocketmq:指定要更改权限的目录。
这个命令的作用是将 /opt/rocketmq 目录及其所有子文件和子目录的所有者和组更改为 rocketmq,确保该用户拥有对这些文件的完全访问权限。

2. sudo chmod -R 755 /opt/rocketmq
chmod:改变文件或目录的权限。
-R:递归地应用此操作到所有子目录和文件。
755:这是一个权限设置,其中:
7:表示所有者(用户)具有读取、写入和执行权限(4+2+1)。
5:表示组用户具有读取和执行权限(4+1)。
5:表示其他用户也具有读取和执行权限(4+1)。
这个命令的作用是将 /opt/rocketmq 目录及其所有子文件和子目录的权限设置为 755,允许所有者可以读、写和执行,而组用户和其他用户只能读和执行。