Всеки, който надстрои или инсталира Ubuntu 16.04 (известен също като Ubuntu Xenial xerus), забеляза, че някои от старите услуги спряха да работят. Този проблем е известен от версия 15.04, но аз ще се съсредоточа върху горната версия.
Такъв беше моят случай с MongoDB. За да направим дълга история, накратко, Ubuntu премина от upstart към systemd. Едно често срещано решение на тези проблеми е да превключите обратно към upstart. Не считам тази опция за реално решение, със сигурност не и в дългосрочен план.
Истинско решение (IMHO) на проблема е да се напише системен скрипт, който ще стартира MongodDB. За съжаление момчетата от MongoDB все още не са предоставили такъв.
Така че трябваше да напиша един от нулата. За да създадете свой собствен, изпълнете следните стъпки:
- превключете към root чрез
sudo su
или използвайте sudo за всички следващи стъпки.
-
създайте скрипт за услуга (в този пример името на услугата е Mongodb)
nano /lib/systemd/system/mongodb.service
-
Съдържанието на файла трябва да бъде
[Unit] Description=MongoDB Database Service Wants=network.target After=network.target [Service] ExecStart=/usr/bin/mongod --config /etc/mongod.conf ExecReload=/bin/kill -HUP $MAINPID Restart=always User=mongodb Group=mongodb StandardOutput=syslog StandardError=syslog [Install] WantedBy=multi-user.target
Можете също да изтеглите файла от тук:mongodb.service
Ето кратко описание на важните полета:
ExecStart - Е командата за бягане. Mongo се инсталира под /usr/bin и конфигурационният файл се записва в /etc
User - UID на процеса mongod.
Група - Gid на процеса mongod. Имайте предвид, че потребителят и групата се създават от инсталацията.
Сега, за да стартирате mongodb:
sudo systemctl start mongodb
За да спрете услугата mongodb, използвайте:
sudo systemctl stop mongodb
За да активирате mongodb при стартиране
sudo systemctl enable mongodb.service
Ако трябва да опресните услугите, използвайте:
sudo systemctl daemon-reload