前提条件
- Fedora Server 28 にて実施
- サーバがインターネットに接続できること
制約事項
- この手順で構築を行うと、nginx(Webサーバ)はminio専用になります
minioって何?
Amazon S3 互換のオブジェクトストレージ。
設定の手間がほとんどいらず、手軽に立てることができる。
たとえば公式の立て方の(drive)にあるように、minioのバイナリを取得して
$ minio server /data
とするだけで動作する。本当に簡単。
目的
-
systemctl (start|restart|stop) minio.service
できるようにする。 - 設定ファイルを外出しする。
- http (or|and https) 経由でserveできるようにする。
- 専用ユーザで動かして、セキュリティにも配慮する。
構築手順
minio専用ユーザの作成と、ディレクトリの用意
サービスはユーザ権限でのみ動くようにしたい
# minioユーザを作る
$ sudo adduser minio
$ pwd
/home/minio
$ mkdir data
$ mkdir config
$ mkdir bin
minioバイナリの取得
/home/minio/bin
に置いて、実行できるようにする
公式のインストール手順に則ってバイナリを取得、実行できるようフラグを付与する
$ cd bin
$ pwd
/home/minio/bin
$ wget https://dl.minio.io/server/minio/release/linux-amd64/minio
$ chmod +x minio
$ ls -l
合計 27360
-rwxrwxr-x 1 minio minio 28014688 6月 9 12:43 minio
minioのサービス化
systemdを用いている。
サービス用設定ファイルの作成
$ sudo vi /etc/systemd/system/minio.service
[Unit]
Description=minio Object Storage Service
After=network.target
[Service]
Type=simple
User=minio
ExecStart=/home/minio/bin/minio server --config-dir /home/minio/config /home/minio/data
Restart=on-abort
WorkingDirectory=/home/minio/
[Install]
WantedBy=multi-user.target
minio
ユーザ権限で動かし、コマンドライン引数にて設定ファイルおよびデータ格納ディレクトリを指定している。
minio server
はフォアグラウンドで立ち上がるタイプのようだったので、type
はsimple
としてみた。
restart
他オプションはお好みで。
サービスの起動
まず、サービス用設定ファイルを読み込ませる。
$ sudo systemctl daemon-reload
エラーが出ないようであれば、読み込めているか確認する。
$ sudo systemctl status minio.service
● minio.service - minio Object Storage Service
Loaded: loaded (/etc/systemd/system/minio.service; disabled; vendor preset: disabled)
動かしてみる。
$ sudo systemctl start minio.service
$ sudo systemctl status minio.service
● minio.service - minio Object Storage Service
Loaded: loaded (/etc/systemd/system/minio.service; disabled; vendor preset: disabled)
Active: active (running) since Tue 2018-06-09 12:53:09 JST; 54s ago
Main PID: 4944 (minio)
Tasks: 6 (limit: 1149)
Memory: 7.1M
CGroup: /system.slice/minio.service
└─4944 /home/minio/bin/minio server --config-dir /home/minio/config /home/minio/data
6月 9 12:53:10 minio minio[4944]: Browser Access:
6月 9 12:53:10 minio minio[4944]: http://10.1.1.5:9000 http://172.17.0.1:9000
6月 9 12:53:10 minio minio[4944]: Command-line Access: https://docs.minio.io/docs/minio-client-quickstart-guide
6月 9 12:53:10 minio minio[4944]: $ mc config host add myminio http://10.1.1.5:9000 (AccessToken) (AccessTokenSecret)
Active! やったね!
表示からも分かる通り、TCP/9000
で待ち受けしている。
(ファイアウォール等でポートが塞がれてなければ)ブラウザからアクセスするとログイン画面が表示される。
必要に応じて、自動起動するように設定する。
$ sudo systemctl enable minio.service
nginxでリバースプロキシ
このままだとちょっと不格好だよねってことで、流行りの(?)リバースプロキシをかける。
何らかの方法でnginxを入手する。たとえばyum
。
$ sudo yum -y install nginx
設定ファイルをさわる。
$ sudo vim /etc/nginx/nginx.conf
※さわった部分のみ抜粋
http {
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
client_max_body_size 1000M;
include /etc/nginx/mime.types;
default_type application/octet-stream;
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
root /usr/share/nginx/html;
access_log /var/log/nginx/access_log;
error_log /var/log/nginx/error_log warn;
location / {
# minio settings
proxy_set_header Host $http_host;
proxy_pass http://localhost:9000;
}
}
大事なのは以下の3点。
- デフォルトで
TCP/9000
に流すようにしましたよ - アクセスログを取るようにしましたよ
- 最大データ量(
client_max_body_size
)を大きくしましたよ
ファイアウォールを開ける
firewalldを用いている。
$ sudo firewall-cmd --add-service=http --zone=FedoraServer --permanent
$ sudo firewall-cmd --reload
動作確認する
ブラウザからアクセスする。
こんなのが出たら成功。
あとがき
- 自分用にメモした手順です。必要に応じて読み替えてください。
- こうしたほうがいいよ的なアドバイスを頂けると大変助かります
TODO
- minioの設定ファイルの内容を確認
- 動作確認項目の追加
以上