在我自己的Ubuntu20.04机器上,通过一个用户kafka,我可以成功地设置以下服务文件(引用到本教程):
sudo vi /etc/systemd/system/zookeeper.service
[Unit]
Requires=network.target remote-fs.target
After=network.target remote-fs.target
[Service]
Type=simple
User=kafka
ExecStart=/home/kafka/kafka/bin/zookeeper-server-start.sh /home/kafka/kafka/config/zookeeper.properties
ExecStop=/home/kafka/kafka/bin/zookeeper-server-stop.sh
Restart=on-abnormal
[Install]
WantedBy=multi-user.targetsudo vi /etc/systemd/system/kafka.service[Unit]
Requires=zookeeper.service
After=zookeeper.service
[Service]
Type=simple
User=kafka
ExecStart=/bin/sh -c '/home/kafka/kafka/bin/kafka-server-start.sh /home/kafka/kafka/config/server.properties > ~/kafka/kafka.log 2>&1'
ExecStop=/home/kafka/kafka/bin/kafka-server-stop.sh
Restart=on-abnormal
[Install]
WantedBy=multi-user.target然后成功启动Kafka并检查它的状态:
sudo systemctl start kafka
sudo systemctl status kafka现在,我希望在具有相同文件夹结构的AWS EC2 Ubuntu实例中设置:
sudo vi /etc/systemd/system/zookeeper.service[Unit]
Requires=network.target remote-fs.target
After=network.target remote-fs.target
[Service]
Type=simple
User=ubuntu
ExecStart=/home/ubuntu/kafka/bin/zookeeper-server-start.sh /home/ubuntu/kafka/config/zookeeper.properties
ExecStop=/home/ubuntu/kafka/bin/zookeeper-server-stop.sh
Restart=on-abnormal
[Install]
WantedBy=multi-user.targetsudo vi /etc/systemd/system/kafka.service[Unit]
Requires=zookeeper.service
After=zookeeper.service
[Service]
Type=simple
User=ubuntu
ExecStart=/bin/sh -c '/home/ubuntu/kafka/bin/kafka-server-start.sh /home/ubuntu/kafka/config/server.properties > /home/ubuntu/kafka/kafka.log 2>&1'
ExecStop=/home/ubuntu/kafka/bin/kafka-server-stop.sh
Restart=on-abnormal
[Install]
WantedBy=multi-user.target根据ubuntu,EC2是AWS EC2 Ubuntu的用户名。
但是,当我启动kafka.service时,我会得到以下错误:
kafka.service
Loaded: loaded (/etc/systemd/system/kafka.service; disabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Thu 2021-06-10 18:58:26 UTC; 7s ago
Process: 40816 ExecStart=/bin/sh -c /home/ubuntu/kafka/bin/kafka-server-start.sh /home/ubuntu/kafka/config/server.properties > /home/ubuntu/kafka/kafka.log 2>&1 (code=exited, status=2)
Main PID: 40816 (code=exited, status=2)
Jun 10 18:58:26 ip-xxx-xx-xx-xxx systemd[1]: Started kafka.service.
Jun 10 18:58:26 ip-xxx-xx-xx-xxx sh[40816]: /bin/sh: 1: cannot create /home/ubuntu/kafka/kafka.log: Directory nonexistent
Jun 10 18:58:26 ip-xxx-xx-xx-xxx systemd[1]: kafka.service: Main process exited, code=exited, status=2/INVALIDARGUMENT
Jun 10 18:58:26 ip-xxx-xx-xx-xxx systemd[1]: kafka.service: Failed with result 'exit-code'.在~/kafka目录下,我看不到文件kafka.log。但是在我自己的机器上安装时,我没有遇到这个错误。
在AWS EC2 Ubuntu中设置它时,我是否遗漏了什么?
详细信息:我刚刚意识到,使用用户ubuntu访问权限,我无法创建一个没有sudo的文件夹。换句话说:
$ mkdir test_folder给我Permission denied。我必须做:
$sudo mkdir test_folder那么,我如何修改服务文件来解释这个问题呢?
发布于 2021-06-10 20:05:28
使用我的用户ubuntu访问权限,如果没有sudo,我就无法创建文件夹。
不清楚您是如何添加ubuntu用户的,但是将mkdir -p /home/ubuntu作为ec2-user运行是不正确的。
您可以使用这些命令进行修正权限,但是您可能需要重新访问useradd命令选项。
sudo chown -R ubuntu:ubuntu /home/ubuntu
sudo chmod -R a+rwX,o-w /home/ubuntu与其使用ubuntu用户,您还应该更愿意为Kafka和Zookeeper拥有单独的用户帐户,例如,如果您使用APT安装汇流平台,就会发生这种情况。
https://stackoverflow.com/questions/67927213
复制相似问题