我创建了一个 Systemd 单元文件来在系统启动时运行 Mongodb。我还创建了一个systemd服务,以便在启动mongodb后在启动时运行我的节点应用程序。mongodb 服务工作正常,但由于某种原因,我的 Node 应用程序服务尝试运行,然后出现错误:“MongoError:首次连接时无法连接到服务器 [localhost:27017]”。如果我使用启动 mongodb 服务$systemctl start mongodb
,然后使用$/usr/bin/node /node_app_slot/server.js
它启动我的 Node 应用程序似乎工作正常。所以问题似乎出在我的 Node 服务器的 systemd 单元文件上。
我将它用于 mongodb systemd 服务https://gist.github.com/jwilm/5842956
这是我的node_server.service:
[Unit]
Wants=network.target mongodb.service
After=network.target mongodb.service
[Service]
ExecStart=/usr/bin/node /node_app_slot/server.js
[Install]
WantedBy=multi-user.target
我在使用 hostapd 在接入点模式下设置的 intel edison 上执行此操作。操作系统是 Yocto 并且是最新的最新版本。
我看不出我哪里出错了。如果有人能指导我朝着正确的方向前进,我将不胜感激!
谢谢!
您的systemd
语法是正确的,尽管您可能想使用network-online.target
代替network.target
。
要考虑的解决方法是在 MongoDB 应用程序启动之前添加 5 秒睡眠。由于这是在服务器启动时发生的,因此额外的 5 秒不太可能产生实际影响,但可能会解决您的问题。
ExecStartPre=/bin/sleep 5
奇怪的是,systemd
当 MongoDB 附带自己的systemd
服务文件时,您正在从 Internet复制/粘贴 MongoDB服务文件。你没有提到你的操作系统版本、systemd 版本或 MongoDB 版本,但MongoDB
如果不使用文件附带的MongoDB 版本,我仍然建议参考官方的systemd 配置文件。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句