Ubuntu 15.10'da MongoDB hizmetini SystemD artalan programı olarak çalıştırın


12

MongoDB yalnızca Ubuntu Uzun Süreli Destek (LTS) sürümlerini destekler. Sonuncusu, inis işleminin Canonical'in Upstart mülkiyetinde yönetildiği Ubuntu 14.04 LTS'dir. Ancak Linux standart SystemD başlatma işlemiyle Ubuntu 15.10 kullanıyorum. Bu yüzden MongoDB servisini önyüklemede başlatamıyorum.

Hizmet durumunu okuduğumda veya başlatmayı denediğimde, "yüklenemedi" iletisini gösterin:

> systemctl status mongod
Loaded: not-found (Reason: No such file or directory)
Active: inactive (dead)
> sudo systemctl start mongod
Failed to start mongod.service: Unit mongod.service failed to load: No such file or directory.

Ben resmi MongoDB 3.2 Community Edition (mongodb kuruluş) çalıştırıyorum https://docs.mongodb.org/master/tutorial/install-mongodb-on-ubuntu/ Ubuntu değil MongoDB 2.6 meta paketi (mongodb) deposu.

> sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927
> echo "deb http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list
> sudo apt-get update
> sudo apt-get install -y mongodb-org

Birisi MongoDB'yi SystemD ile nasıl başlatacağını biliyor?


1
benim sorun mongod çatallanmayan bir özel yapılandırma dosyası, burada eksik olduğunu varsayılan mongod conf snippet, processManagement: fork: true pidFilePath: /var/run/mongod.pid
Pykler

Yanıtlar:


25

MongoDB hizmetini SystemD ile önyüklemede başlatmayı başardım:

Resmi meta-paket (mongodb-org) v3.2'yi kaldırdım, sonra Ubuntu deposundan meta-paket (mongodb) v2.6'yı kurdum:

> sudo apt-get remove mongodb-org
> sudo apt-get install mongodb

Hizmet yapılandırma dosyasını aşağıda gösterildiği gibi oluşturun:

> cd /lib/systemd/system
> sudo touch mongodb.service
> sudo nano mongodb.service
[Unit]
Description=An object/document-oriented database
Documentation=man:mongod(1)
After=network.target

[Service]
User=mongodb
Group=mongodb
ExecStart=/usr/bin/mongod --quiet --config /etc/mongodb.conf

[Install]
WantedBy=multi-user.target

Aşağıdaki komutu kullanarak hizmetin etkinleştirilip etkinleştirilmediğini listede doğrulayın:

> systemctl list-unit-files --type=service
...
mongodb.service             disabled
...

Devre dışı bırakılmışsa veya listede değilse etkinleştirin:

> sudo systemctl enable mongodb.service

Tekrar kontrol et:

> systemctl list-unit-files --type=service 
...
mongodb.service             enabled
...

Artık hizmeti SystemD başlatma işleminde yönetebilirsiniz:

> systemctl status mongodb
> sudo systemctl stop mongodb
> sudo systemctl start mongodb
> sudo systemctl restart mongodb

Zevk almak!


Hizmet tanımının kaçırdığınız kısımlarına bir işaretçi için askubuntu.com/a/617869/43344 adresine bakın . Ayrıca bu hizmet birimleri verilir ve yerel yönetici tarafından yazılan not olmamalıdır gitmek /lib.
JdeBP

1
Bu hizmet birimi daha sonra, bir yerel yönetici tarafından, Canonical tarafından yazılmıştır bulunması gerekir içinde /lib. Hizmet tanımının bölümleri, hizmeti başlatmak için yeterince iyidir, ek ayarlar önemli bir etki yaratmaz, bu nedenle tamamlayıcı olarak kabul edilir. PIDFile=/var/run/mongodb/mongod.pidSatırı ve runon ExecStart=line talimatı eklerseniz, bir hata alırsınız, çünkü (mongodb) meta paketi 3.2 değil (mongodb) meta paketi 2.6 kullanıyorum.
Fernando Santucci

1
Neden aşağı oy verdim, oyumu iptal ettim. Benzer bir sorunla karşılaştım ve bu cevap yardımcı oldu, teşekkürler.
Tien Do

Bu, Ubuntu 14'ten 18'e taşınma konusunda çok yardımcı oldu, tek chowneklediğim, mongod systemctl ile başlamadan önce verileri yeniden oluşturmak ve dizinleri ve günlükleri günlüğe kaydetmem gerekti. Kurulum belgelerinin hiçbir şey bana söylemezdi ama yararlı olması durumunda!
Tom J Nowell

6

Mongod hizmetinin otomatik olarak başlatılmasını sağlamak için MongoDB deposundan varsayılan olarak yükleyin, yapmanız gereken tek şey system.d hizmetini etkinleştirmektir:

systemctl enable mongod.service( mongodb değil, mongo d hizmet adına dikkat edin )

NOT: Bu hem systemian hem de Ubuntu Xerus 16.04 LTS ile Debian / GNU Jessie 8.x üzerinde test edilmiştir.


Bu Ubuntu Xerus 16.04 LTS için de geçerlidir. Resmi depodan yükledikten sonra, systemd servis birimini etkinleştirmeniz gerekir! Başka bir kurulumla doğruladım ... :)
stamster

1
Dosya /lib/systemd/system/mongod.servicebenim Ubuntu 16.04
Jyotman Singh

Evet, systemd birim tanımı var ama devre dışı, bu nedenle örneğinizi her yeniden başlattığınızda otomatik olarak başlaması için etkinleştirmeniz gerekir.
stamster
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.