👨‍💻

【備忘録】SHIRASAGIをローカル環境に構築する part 1

2024/03/20に公開

背景

OSSで利用できるグループウェアを兼ね備えたものはないかと探したときに見つけました
導入事例も確認して構築してみたい!!

環境

項目 名称
OS lubuntu 22.04
DB MongoDB
メモリ 16GB

導入環境の準備

SHIRASAGI Ubuntu版
Ubuntu環境の手順を参考に行います

パッケージのダウンロード

sudo apt -y install apt install build-essential libssl-dev imagemagick libmagickcore-dev libmagickwand-dev gnupg2 git wget software-properties-common ca-certificates lsb-release

公式のパッケージのダウンロードを鵜呑みした例
インストール失敗

コマンドを実行する前に気付くべきでした
以下のように直して再実行

sudo apt -y install build-essential libssl-dev imagemagick libmagickcore-dev libmagickwand-dev gnupg2 git wget software-properties-common ca-certificates lsb-release

MongoDBのインストール

1. sudo apt install wget gnupg software-properties-common ca-certificates lsb-release
2. wget -qO - https://www.mongodb.org/static/pgp/server-6.0.asc |sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/mongodb-6.gpg
3. echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu $(lsb_release -cs)/mongodb-org/6.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list
4. sudo apt update
5. sudo apt install -y mongodb-org

3を実行時にレスポンスがあります

echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu $(lsb_release -cs)/mongodb-org/6.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list
↓以下のメッセージが表示される
deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/6.0 multiverse

MongoDB の推奨設定

公式の手順に従うとSHIRASAGIとMongoDBが同一サーバ上に同居させるときは、MongoDBのメモリ消費を抑止しといたほうがいいようなので対応してみます!!
インストールマニュアル - MongoDB 推奨設定

  1. 自環境のメモリ量を確認
自環境

free -mt #物理メモリとスワップ領域の合計も表示したい場合-t、 -mでメガバイト表示
total used free shared buff/cache available
Mem: 15674 584 8682 61 6407 14701
Swap: 511 0 511
Total: 16186 584 9194

Total部分からメモリの最大は16GBと考える

  1. リソース制限の確認と設定
ulimitコマンド

ulimit -a
real-time non-blocking time (microseconds, -R) unlimited
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 62156
max locked memory (kbytes, -l) 2006308
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 62156
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited

推奨設定値

limit fsize unlimited unlimited # (file size)
limit cpu unlimited unlimited # (cpu time)
limit as unlimited unlimited # (virtual memory size)
limit memlock unlimited unlimited # (locked-in-memory size)
limit nofile 64000 64000 # (open files)
limit nproc 64000 64000 # (processes/threads)

Serviceのデフォルト値が推奨設定値なので、サービスファイルは編集しない

メモリ消費の抑止

/etc/mongod.confを編集する

/etc/mongod.conf

10 # wiredTiger:

10 wiredTiger:
11 engineConfig:
12 cacheSizeGB: 1
に変更します。vimで開いているので左の数字は行数を示しています

MongoDB起動

コマンド実行後エラーがないこと、プロセスファイルから設定が反映されているか確認

sudo systemctl start mongod
/proc/$MongoDBのプロセスID/limits

Limit Soft Limit Hard Limit Units
Max cpu time unlimited unlimited seconds
Max file size unlimited unlimited bytes
Max data size unlimited unlimited bytes
Max stack size 8388608 unlimited bytes
Max core file size 0 unlimited bytes
Max resident set unlimited unlimited bytes
Max processes 64000 64000 processes
Max open files 64000 64000 files
Max locked memory unlimited unlimited bytes
Max address space unlimited unlimited bytes
Max file locks unlimited unlimited locks
Max pending signals 62156 62156 signals
Max msgqueue size 819200 819200 bytes
Max nice priority 0 0
Max realtime priority 0 0
Max realtime timeout unlimited unlimited us

/proc/$MongoDBのプロセスID/oom_score_adj

MongoDB を OOM Killer の対象から除外を実施していないため
0

MongoDB接続確認

mongosh
実行結果

環境は整ったと思うので今回の記事はここまでになります
記事を見ていただいて、ありがとうございます。

参考

公式: https://www.ss-proj.org/
シラサギとは: https://www.ss-proj.org/about/
mongoコマンドが見つからない

Discussion