Ubunto使用systemctl实现开机自启mongo
本文原文地址 www.panyanbin.com
mongodb 数据库安装后,如果直接执行程序命令 mongod,虽然启动起来了,但是界面一直处于程序运行的日志输出,根本没法做其他事,如果按 ctrl+c 中断程序,那么程序也就停止了。
mongodb
数据库安装后,如果直接执行程序命令mongod
,虽然启动起来了,但是界面一直处于程序运行的日志输出,根本没法做其他事,如果按ctrl+c
中断程序,那么程序也就停止了。当然,也有其他方式比如&
、screen
等让程序在后台执行而不影响当前的交互,不过这些方式要不就是连接中断后服务停止,要不就是程序管理不好维护,此时可以通过systemctl
命令让程序作为系统服务在后台去启动。
使用 systemctl 命令管理服务
在 linux 中,如果直接通过包管理器(比如 yum、apt-get 等)进行mongodb
的安装,安装说明,把其作为服务方式启动是比较简单的。
1. 启动服务
sudo systemctl start mongod
若此步骤出现以下类似的错误提示:
Failed to start mongod.service: Unit mongod.service not found.
此时需要先执行以下命令
sudo systemctl daemon-reload
然后再执行以上的 start 启动命令。
2. 验证服务启动状态
sudo systemctl status mongod
此时将输出与以下大概的内容,可以看到状态是active(running)
,说明服务很正常。
mongod.service - High-performance, schema-free document-oriented database
Loaded: loaded (/etc/systemd/system/mongod.service; disabled; vendor preset: disabled)
Active: active (running) since Sun 2021-05-09 20:40:14 CST; 2h 36min ago
Main PID: 2910 (mongod)
CGroup: /system.slice/mongod.service
...
此时可以执行mongo
命令本地连接mongod
的服务,连接后,按ctrl+c
或在交互中输入exit
均可退出 mongo 的连接。
3. 设置服务开机自启动
sudo systemctl enable mongod
4. 停止服务
若不希望继续提供服务,可以执行停止命令,停止后客户端无法连接 mongodb 数据库
sudo systemctl stop mongod
5. 重启服务
如果修改了相关配置内容,需要重新启动服务,可以直接执行重启服务的命令
sudo systemctl restart mongod
以服务方式启动源码安装的程序
当通过源码方式安装软件后,尝试通过以下命令启动服务:
sudo systemctl start mongod
会发现也会出现错误:
Failed to start mongod.service: Unit mongod.service not found.
但是,我执行sudo systemctl daemon-reload
并没有解决这个错误。
根据鸟哥的 linux 私房菜我们知道:
服务的管理是通过 systemd,而 systemd 的配置文件大部分放置于 /usr/lib/systemd/system/ 目录内。但是 Red Hat 官方文件指出, 该目录的文件主要是原本软件所提供的设置,建议不要修改!而要修改的位置应该放置于 /etc/systemd/system/ 目录内。
以上的服务启动过程可以知道 mongod 启动服务后,将去/etc/systemd/system/
目录下找对应的服务文件mongod.service
,但是源码方式,并没有相关的程序去生成这个服务文件。因此我们需要补充一下这个服务文件即可。
1. 创建服务文件 mongod.service
在/etc/systemd/system/
目录下拷贝一份其他程序的服务文件重命名也行,直接创建空文件也行,命名以 xxx.service 的格式要求,其中 xxx 为服务的名称,此处 xxx 为 mongod。
2. 修改 service 文件内容
[Unit]
Description=High-performance, schema-free document-oriented database
After=network.target
[Service]
User=mongod
ExecStart=/usr/local/mongodb-linux-x86_64-rhel70-4.4.5/bin/mongod --config /etc/mongod.conf
[Install]
WantedBy=multi-user.target
service 文件的相关字段说明可以看看这个根据鸟哥的 linux 私房菜。
这个 service 文件内容我们只需要关注User
和ExecStart
,其他都是次要的,其中:
-
User——表示以那个用户去启动这个程序
此处写 mongod 是因为我希望以 mongod 用户去启动 mongodb 数据库而且我已经创建了 mongod 用户,你可以使用 nobody。
-
ExecStart——表示启动服务后调用程序的命令
此处的值是因为我以源码方式安装 mongodb 后,其安装目录为
/usr/local/mongodb-linux-x86_64-rhel70-4.4.5
,并且设定 mongodb 数据库的配置文件在 / etc/mongod.conf,mongodb 的配置文件可以看官网说明。
3. systemctl 命令启动服务
sudo systemctl start mongod
其他服务管理如停止、重启、查看服务信息的命令执行也跟上面写的一致。
以上方式不仅仅启动 mongodb 服务,其他任意的程序如果想作为服务来启动。
参考
mongodb.conf配置文件详解
mongodb的启动和关闭方式
Linux 采用 systemctl 命令设置 mongodb 自启动 含config配置
systemctl 针对 service 类型的配置文件
本文来自博客园,作者:KMP,转载请注明原文链接:https://www.cnblogs.com/touchTomorrow/p/16249967.html