OP 下面的答案(希望对社区有所帮助)
下面你会看到我的实际答案。 (我发布这个问题是为了传递答案。 我花了一段时间才找到正确的答案,所以我在这里发帖,可能会加快其他可怜灵魂的努力。
Apache Zeppelin 安装仅解释 Ubuntu 案例
如果您查看 Apache 的网站(截至 2018 年 1 月),您将看到在 Ubuntu OS 上设置服务的说明(例如,您可以在启动、重启时启动的守护进程等)。 你会发现类似这样的内容:
sudo service zeppelin start
sudo service zeppelin stop
sudo service zeppelin restart
但是,如果你按照该页面进行标准安装,则在使用 CentOS 7 时,安装后默认没有注册zeppelin
服务。也就是说,如果您键入类似service zeppelin start
的内容,则找不到该服务。
此外,对于我正在使用的 CentOS 7,有一个转向使用systemctl
的转变。但是尝试systemctl
也没有奏效(没有找到zeppelin
)。
齐柏林飞艇本身工作正常,只有"自动启动"的问题
我可以让直接的可执行调用,例如,./bin/zeppelin-daemon.sh start
,正常工作。 但这并没有提供我想要的解决方案。 我希望能够知道,如果机器重新启动或其他任何东西,齐柏林飞艇将可用,因为它在启动时启动。
具有挑战性的搜索
我想"真相一定在那里",但我寻找的许多路径都没有帮助。
然而,这个来自InfoWorld的链接起到了作用。
关键问题
总之,我需要了解两个问题:
- 在 CentOS 7 中,虽然
systemctl
是理想的,但service
仍然是可以接受的。 - 无论出于何种原因,
zeppelin.service
文件都不会在 CentOS 中自动创建(也许是所有非 Ubuntu 风格的 *nix?),即使标准的.service
文件可以正常工作。 因此,请继续阅读该链接,但这个故事的重要部分是我需要执行以下操作:- 从头开始创建
/etc/systemd/system/zeppelin.service
文件。 - 在该文件中,放置以下内容:
- 从头开始创建
[Unit]
Description=Service to run Zeppelin Daemon
Documentation=
[Service]
User=zeppelin
Group=zeppelin
Type=forking
WorkingDirectory=/home/zeppelin
ExecStart=/home/zeppelin/zeppelin-current/bin/zeppelin-daemon.sh start
ExecStop=/home/zeppelin/zeppelin-current/bin/zeppelin-daemon.sh stop
[Install]
WantedBy=multi-user.target
一些细节
以上大部分内容可能是不言而喻的(链接的文章并没有过多地解释细节),但这里有一个细分:
User=zeppelin
:在这种情况下,齐柏林飞艇实例被设置为多用户,从服务器远程登录。 如果您希望在重新启动时自动启动齐柏林飞艇,您可能具有相同的用例。- 因此,您"应该"创建一个用户
zeppelin
(齐柏林飞艇软件要使用的任何通用用户),这在 InfoWorld 链接中进行了解释,但也在这里。
- 因此,您"应该"创建一个用户
Group=zeppelin
: 同上。WorkingDirectory
:同上(创建一个用户zeppelin
,在那里安装齐柏林飞艇,亚达,亚达...该链接包含有关步骤的详细信息)。ExecStart
:这是关键行;您需要确保每当您输入service zeppelin start
时,它都指向此路径,即您放入ExecStart
的路径。ExecStop
: 与上述想法相同。
注册新服务
那么最后一点"魔术"是输入:
systemctl daemon-reload
这是关键位。 这类似于键入source ~/.bash_profile
如果这意味着什么。 这是您实际上所说的刷新所有守护程序的行。
最后,我建议显式键入
service zeppelin start
这样你就可以确定它被找到。 假设它确实做了一些事情(例如,你看到类似Zeppelin start [ OK ]
的东西,否则Redirecting to /bin/systemctl start zeppelin.service
......无论哪种情况,您都知道service
已找到并工作)。