Hace poco también me tocó configurar un servicio de base de datos mongodb, un motor que al parecer ya se está comenzando a utilizar bastante. Les dejo algunos pasos a continuación:
Primero crearemos el usuario mongod (como usuario root):
mkdir /home/mongod
chown mongod:mongod /home/mongod
chmod 700 /home/mongod
adduser --system -d /home/mongod mongod
echo secu13re | passwd --stdin mongod
usermod -c 'mongod_database_not_delete' mongod
usermod -s /bin/bash mongod
Ahora nos convertiremos en usuario mongod que acabamos de crear
[root@bci-bluemixdbmongo01 /]# su - mongod
Last login: Fri May 26 11:33:04 CLT 2017 on pts/0
Como usuario mongod descomprimimos el archivo que hemos bajado del sitio web de mongo:
-bash-4.2$ cd /dbprdMongo/
-bash-4.2$ ls -ltr
total 80500
drwxrwx--- 4 mongod root 27 May 23 17:19 bd
-rwxrwxrwx 1 root root 82431513 May 26 11:22 mongodb-linux-x86_64-rhel70-3.2.13.tgz
-bash-4.2$ tar xvfz mongodb-linux-x86_64-rhel70-3.2.13.tgz
mongodb-linux-x86_64-rhel70-3.2.13/README
mongodb-linux-x86_64-rhel70-3.2.13/THIRD-PARTY-NOTICES
mongodb-linux-x86_64-rhel70-3.2.13/MPL-2
mongodb-linux-x86_64-rhel70-3.2.13/GNU-AGPL-3.0
mongodb-linux-x86_64-rhel70-3.2.13/bin/mongodump
mongodb-linux-x86_64-rhel70-3.2.13/bin/mongorestore
mongodb-linux-x86_64-rhel70-3.2.13/bin/mongoexport
mongodb-linux-x86_64-rhel70-3.2.13/bin/mongoimport
mongodb-linux-x86_64-rhel70-3.2.13/bin/mongostat
mongodb-linux-x86_64-rhel70-3.2.13/bin/mongotop
mongodb-linux-x86_64-rhel70-3.2.13/bin/bsondump
mongodb-linux-x86_64-rhel70-3.2.13/bin/mongofiles
mongodb-linux-x86_64-rhel70-3.2.13/bin/mongooplog
mongodb-linux-x86_64-rhel70-3.2.13/bin/mongoperf
mongodb-linux-x86_64-rhel70-3.2.13/bin/mongosniff
mongodb-linux-x86_64-rhel70-3.2.13/bin/mongod
mongodb-linux-x86_64-rhel70-3.2.13/bin/mongos
mongodb-linux-x86_64-rhel70-3.2.13/bin/mongo
Crear link simbolico:
-bash-4.2$ ln -s /dbprdMongo/mongodb-linux-x86_64-rhel70-3.2.13 /dbprdMongo/mongodb
-bash-4.2$
Posteriormente añadir como root los siguientes privilegios para la carpeta que contendrá los datafiles y logfiles:
[root@bci-bluemixdbmongo01 dbprdMongo]# pwd
/dbprdMongo
[root@bci-bluemixdbmongo01 dbprdMongo]# chown -R mongod:root bd/
[root@bci-bluemixdbmongo01 dbprdMongo]# chmod -R 770 bd/
[root@bci-bluemixdbmongo01 dbprdMongo]#
Añadir lo siguiente al bash_profile del usuario mongod
export PATH=$PATH:/dbprdMongo/mongodb/bin
Se sugiere dejar el selinux deshabilitado
/etc/selinux/config con SELINUX=disabled.
Ahora se procederá a probar el servicio de mongodb
-bash-4.2$ /dbprdMongo/mongodb/bin/mongod --dbpath /dbprdMongo/bd
2017-05-26T11:57:45.852-0300 I CONTROL [initandlisten] MongoDB starting : pid=2056 port=27017 dbpath=/dbprdMongo/bd 64-bit host=bci-bluemixdbmongo01
2017-05-26T11:57:45.852-0300 I CONTROL [initandlisten] db version v3.2.13
2017-05-26T11:57:45.852-0300 I CONTROL [initandlisten] git version: 23899209cad60aaafe114f6aea6cb83025ff51bc
2017-05-26T11:57:45.852-0300 I CONTROL [initandlisten] OpenSSL version: OpenSSL 1.0.1e-fips 11 Feb 2013
2017-05-26T11:57:45.852-0300 I CONTROL [initandlisten] allocator: tcmalloc
2017-05-26T11:57:45.852-0300 I CONTROL [initandlisten] modules: none
2017-05-26T11:57:45.852-0300 I CONTROL [initandlisten] build environment:
2017-05-26T11:57:45.852-0300 I CONTROL [initandlisten] distmod: rhel70
2017-05-26T11:57:45.852-0300 I CONTROL [initandlisten] distarch: x86_64
2017-05-26T11:57:45.852-0300 I CONTROL [initandlisten] target_arch: x86_64
2017-05-26T11:57:45.852-0300 I CONTROL [initandlisten] options: { storage: { dbPath: "/dbprdMongo/bd" } }
2017-05-26T11:57:45.876-0300 I - [initandlisten] Detected data files in /dbprdMongo/bd created by the 'wiredTiger' storage engine, so setting the active storage engine to 'wiredTiger'.
2017-05-26T11:57:45.876-0300 I STORAGE [initandlisten] wiredtiger_open config: create,cache_size=1G,session_max=20000,eviction=(threads_min=4,threads_max=4),config_base=false,statistics=(fast),log=(enabled=true,archive=true,path=journal,compressor=snappy),file_manager=(close_idle_time=100000),checkpoint=(wait=60,log_size=2GB),statistics_log=(wait=0),
2017-05-26T11:57:46.147-0300 I CONTROL [initandlisten]
2017-05-26T11:57:46.147-0300 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
2017-05-26T11:57:46.147-0300 I CONTROL [initandlisten] ** We suggest setting it to 'never'
2017-05-26T11:57:46.147-0300 I CONTROL [initandlisten]
2017-05-26T11:57:46.147-0300 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
2017-05-26T11:57:46.147-0300 I CONTROL [initandlisten] ** We suggest setting it to 'never'
2017-05-26T11:57:46.147-0300 I CONTROL [initandlisten]
2017-05-26T11:57:46.148-0300 I FTDC [initandlisten] Initializing full-time diagnostic data capture with directory '/dbprdMongo/bd/diagnostic.data'
2017-05-26T11:57:46.148-0300 I NETWORK [HostnameCanonicalizationWorker] Starting hostname canonicalization worker
2017-05-26T11:57:46.148-0300 I NETWORK [initandlisten] waiting for connections on port 27017
^C2017-05-26T11:57:47.703-0300 I CONTROL [signalProcessingThread] got signal 2 (Interrupt), will terminate after current cmd ends
2017-05-26T11:57:47.703-0300 I FTDC [signalProcessingThread] Shutting down full-time diagnostic data capture
2017-05-26T11:57:47.705-0300 I CONTROL [signalProcessingThread] now exiting
2017-05-26T11:57:47.705-0300 I NETWORK [signalProcessingThread] shutdown: going to close listening sockets...
2017-05-26T11:57:47.705-0300 I NETWORK [signalProcessingThread] closing listening socket: 5
2017-05-26T11:57:47.705-0300 I NETWORK [signalProcessingThread] closing listening socket: 6
2017-05-26T11:57:47.705-0300 I NETWORK [signalProcessingThread] removing socket file: /tmp/mongodb-27017.sock
2017-05-26T11:57:47.705-0300 I NETWORK [signalProcessingThread] shutdown: going to flush diaglog...
2017-05-26T11:57:47.705-0300 I NETWORK [signalProcessingThread] shutdown: going to close sockets...
2017-05-26T11:57:47.705-0300 I STORAGE [signalProcessingThread] WiredTigerKVEngine shutting down
2017-05-26T11:57:47.754-0300 I STORAGE [signalProcessingThread] shutdown: removing fs lock...
2017-05-26T11:57:47.755-0300 I CONTROL [signalProcessingThread] dbexit: rc: 0
Ahora se procera a crear la automatizaciòn del servicio (como usuario root)
Creamos el siguiente archivo:
vi /etc/systemd/system/mongod.service
Con el siguiente contenido:
[Unit]
Description=Mongo Database
After=network.target
[Service]
User=mongod
Group=mongod
ExecStart=/dbprdMongo/mongodb/bin/mongod --dbpath /dbprdMongo/bd
ExecStop=/dbprdMongo/mongodb/bin/mongod --dbpath /dbprdMongo/bd --shutdown
Restart=always
[Install]
WantedBy=multi-user.target
Como root se procede a automatizar el servicio
[root@bci-bluemixdbmongo01 ~]# sudo systemctl enable mongod
Created symlink from /etc/systemd/system/multi-user.target.wants/mongod.service to /etc/systemd/system/mongod.service.
Ahora se procede a probar el servicio
[root@bci-bluemixdbmongo01 ~]# systemctl start mongod
[root@bci-bluemixdbmongo01 ~]# systemctl status mongod
● mongod.service - Mongo Database
Loaded: loaded (/etc/systemd/system/mongod.service; enabled; vendor preset: disabled)
Active: active (running) since Fri 2017-05-26 12:11:46 CLT; 2s ago
Main PID: 2192 (mongod)
CGroup: /system.slice/mongod.service
└─2192 /dbprdMongo/mongodb/bin/mongod --dbpath /dbprdMongo/bd
May 26 12:11:46 bci-bluemixdbmongo01 mongod[2192]: 2017-05-26T12:11:46.408-0300 I CONTROL [initandlisten]
May 26 12:11:46 bci-bluemixdbmongo01 mongod[2192]: 2017-05-26T12:11:46.409-0300 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hu...always'.
May 26 12:11:46 bci-bluemixdbmongo01 mongod[2192]: 2017-05-26T12:11:46.409-0300 I CONTROL [initandlisten] ** We suggest setting it to 'never'
May 26 12:11:46 bci-bluemixdbmongo01 mongod[2192]: 2017-05-26T12:11:46.409-0300 I CONTROL [initandlisten]
May 26 12:11:46 bci-bluemixdbmongo01 mongod[2192]: 2017-05-26T12:11:46.409-0300 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hu...always'.
May 26 12:11:46 bci-bluemixdbmongo01 mongod[2192]: 2017-05-26T12:11:46.409-0300 I CONTROL [initandlisten] ** We suggest setting it to 'never'
May 26 12:11:46 bci-bluemixdbmongo01 mongod[2192]: 2017-05-26T12:11:46.409-0300 I CONTROL [initandlisten]
May 26 12:11:46 bci-bluemixdbmongo01 mongod[2192]: 2017-05-26T12:11:46.410-0300 I FTDC [initandlisten] Initializing full-time diagnostic data ca...ic.data'
May 26 12:11:46 bci-bluemixdbmongo01 mongod[2192]: 2017-05-26T12:11:46.410-0300 I NETWORK [initandlisten] waiting for connections on port 27017
May 26 12:11:46 bci-bluemixdbmongo01 mongod[2192]: 2017-05-26T12:11:46.410-0300 I NETWORK [HostnameCanonicalizationWorker] Starting hostname canoni...n worker
Hint: Some lines were ellipsized, use -l to show in full.
[root@bci-bluemixdbmongo01 ~]# ps -fea | grep -i mongo
mongod 2192 1 1 12:11 ? 00:00:00 /dbprdMongo/mongodb/bin/mongod --dbpath /dbprdMongo/bd
root 2218 1903 0 12:12 pts/0 00:00:00 grep --color=auto -i mongo
Ahora se procede a bajar
[root@bci-bluemixdbmongo01 bd]# systemctl stop mongod
[root@bci-bluemixdbmongo01 bd]#