如何在Unix服务器启动时自动启动ActiveMQ服务
没问题,这就帮你搞定ActiveMQ 5.14.5在Unix服务器上的开机自启配置,根据不同的Unix系统初始化方式,我整理了两种最常用的方案,你可以对应自己的服务器环境来操作:
方案一:Systemd(适用于CentOS 7+/Ubuntu 16.04+等现代Linux发行版)
这是目前主流服务器的初始化系统,配置起来很直观:
- 先创建ActiveMQ的systemd服务文件,执行命令:
sudo vi /etc/systemd/system/activemq.service - 将以下内容粘贴进去,记得把
/path/to/activemq替换成你实际的ActiveMQ安装目录:[Unit] Description=ActiveMQ Message Broker After=network.target [Service] Type=forking User=root # 可以根据实际需求改成非root用户,比如你的应用运行用户 Group=root ExecStart=/path/to/activemq/bin/activemq start ExecStop=/path/to/activemq/bin/activemq stop Restart=on-failure RestartSec=5 [Install] WantedBy=multi-user.target - 保存退出后,重新加载systemd配置:
sudo systemctl daemon-reload - 设置开机自启:
sudo systemctl enable activemq - 可以先手动启动服务测试是否正常:
sudo systemctl start activemq # 查看状态确认启动成功 sudo systemctl status activemq
方案二:SysVinit(适用于CentOS 6/Ubuntu 14.04等老版本Linux)
如果你的服务器用的是传统的SysVinit初始化系统,可以用自带的启动脚本配置:
- 先把ActiveMQ自带的启动脚本复制到系统服务目录:
sudo cp /path/to/activemq/bin/activemq /etc/init.d/ - 编辑这个脚本,在开头添加你的ActiveMQ安装路径和Java路径(如果服务器没全局配置JAVA_HOME的话):
在脚本最上方添加:sudo vi /etc/init.d/activemqACTIVEMQ_HOME=/path/to/activemq JAVA_HOME=/path/to/java # 替换成你实际的JDK安装目录 - 给脚本赋予执行权限:
sudo chmod +x /etc/init.d/activemq - 添加到开机启动项:
sudo chkconfig --add activemq # 设置默认在多用户级别开机启动 sudo chkconfig activemq on - 测试启动服务:
sudo service activemq start # 查看状态 sudo service activemq status
额外注意事项
- 如果你用非root用户运行ActiveMQ,记得确保该用户对ActiveMQ的安装目录、数据目录(比如
data/)有读写权限 - 开机自启失败的话,可以查看ActiveMQ的日志文件排查问题,路径一般是
/path/to/activemq/data/activemq.log - 因为你的Spring Web应用部署在Tomcat上,要是需要确保ActiveMQ先启动再启动Tomcat,可以在Tomcat的服务配置里添加依赖:
- 用systemd的话,在Tomcat的service文件里添加
After=activemq.service - 用SysVinit的话,调整Tomcat启动脚本的优先级编号(比如把Tomcat的启动编号设为比ActiveMQ大)
- 用systemd的话,在Tomcat的service文件里添加
内容的提问来源于stack exchange,提问作者user9554301




