minio

minio는 Object Storage입니다. 간단하게 말해서 파일을 업로드 다운로드할수 있게 만든 프로그램입니다. 같은 방식으로는 aws의 s3가 있습니다.

minio는 s3의 api를 완벽하게 똑같이 구현하였기 때문에 minio를 쓰다가 s3로 이전시 코드에 수정이 거의 필요가 없습니다.

S3같은 서비스를 해보고 싶으신분은 minio를 설치하여 사용해보시면 답이 나올거같습니다.

install

mkdir -p /data/minio # minio file 저장 위치
mkdir -p /data/minio-config # minio 설정 저장위치
cd
wget https://dl.minio.io/server/minio/release/linux-amd64/minio
chmod +x minio
mv minio /usr/local/bin/minio
minio server --address ":9001" --config-dir /data/minio-config /data/minio

설치는 완료되고 서버도 9001번으로 올렷습니다.

이제 테스트를 해보시죠

http://localhost:9001

minio를 시작프로그램에 등롤하고 데몬으로 실행을 하는것이 서비스할때 더 좋을거같습니다.

cat <<EOT >> /etc/default/minio
# Volume to be used for Minio server.
MINIO_VOLUMES="/data/minio/"
# Use if you want to run Minio on a custom port.
MINIO_OPTS="--address :9001"
# Access Key of the server.
MINIO_ACCESS_KEY=ROOT_ACCESS_KEY_CHANGE_ME
# Secret key of the server.
MINIO_SECRET_KEY=SECRET_ACCESS_KEY_CHANGE_ME

EOT

# Download minio.service in /etc/systemd/system/
( cd /etc/systemd/system/; curl -O https://raw.githubusercontent.com/minio/minio-service/master/linux-systemd/minio.service )

vi /etc/systemd/system/minio.service # user와 그룹을 수정한다. 난 root를 사용
User=root
Group=root

systemctl start minio
systemctl enable minio

MINIO_ACCESS_KEY와 MINIO_SECRET_KEY를 적용해서 systemd 에 등록하여 서비스로 사용하게 해두었습니다.

http://localhost:9001 으로 확인한다.

액세스 키와 시크릿 키 이용하여 로그인하면 s3처럼 사용할수 있다.

docker 로 설치

docker run -p 9001:9001 \
-e "MINIO_ACCESS_KEY=ROOT_ACCESS_KEY_CHANGE_ME" \
-e "MINIO_SECRET_KEY=SECRET_ACCESS_KEY_CHANGE_ME" \
-v /data/minio:/data/minio \
minio/minio server /data/minio

웹 사용법

이제 로그인을 해봅니다.

UI는 아주 간결한 모습을 가졌습니다.

버킷을 먼저 만들고 + 버튼을 클릭하여 파일을 업로드하고 파일을 클릭하여 파일을 다운로드할수 있습니다.

minio client 사용법

이제 터미널이나 윈도우 cmd 에서 작업할수 있게 해봅니다. 백업등 프로그램들을 할때 shell을 통하여 업로드하면 편하기 때문입니다.

install

cd /usr/bin
wget https://dl.min.io/client/mc/release/linux-amd64/mc
chmod +x mc

기본 커맨드

# set access key / secret key
mc alias set my-storage http://192.168.0.30:9001 ROOT_ACCESS_KEY_CHANGE_ME SECRET_ACCESS_KEY_CHANGE_ME

# Test the Connection
mc admin info my-storage

## bucket 생성
mc mb my-storage/my-first-bucket

## ls
mc ls my-storage

# upload
mc cp SOURCE ALIAS/PATH
mc cp ~/test.zip my-storage/test.zip
mc cp --recursive ~/test_dir my-storage/test_bucket

# rm
mc rm ALIAS/PATH
mc rm --recursive --force ALIAS/PATH

mc rm my-storage/test.zip
mc rm --recursive --force my-storage/test_bucket

# download
mc cp my-storage/test.zip ~/test.zip #위 cp 예제에서 source/target을 위치를 바꿈.

자세한 사용법은 https://docs.min.io/minio/baremetal/reference/minio-cli/minio-mc.html#id2 참고

공유 파일

특정 파일을 특정일만 공유하고 싶다.

공유기간을 설정후 카피 버튼을 클릭해서 복사후 공유하면된다.

일반 웹서버처럼 공유하고 싶다. 공유 기간을 무한정으로 하고 싶다.

위 공유파일 방식으로는 5일 이상이 링크가 유효하지 않는다. 그런데 무제한으로 하고싶다.

버킷 자체를 public으로 만들면 된다.

mc policy set public my-storage/test_bucket

이제 테스트해보자.

wget http://192.168.0.30:9000/test_bucket/test.zip

잘 동작한다.

중요한건 minio에서의 웹사이트 주소는

http://192.168.0.30:9000/minio/test_bucket/test.zip

download url은

http://192.168.0.30:9000/test_bucket/test.zip

minio가 빠진것을 알수 있다.

이제 스토리지 걱정없이 s3를 써보자.

teamsmiley's profile image

teamsmiley

2021-02-27 00:00

Read more posts by this author