티스토리 뷰

MinIO 설치, 이렇게 쉬워도 되나요?

요즘 기술의 발전 속도에 감탄할 때가 많습니다.
그중 하나가 바로 MinIO 설치 경험이었습니다.

보통 새로운 시스템을 설치할 땐 문서부터 보고, 의존성도 확인하고, 예상보다 시간이 더 걸리는 경우가 많죠. 그런데 이번에는 정말 다릅니다.
터미널에 명령어 하나 입력했을 뿐인데, 10초도 안 돼서 MinIO가 설치되어버렸습니다.

정말 “좋은 세상이다”라는 말이 절로 나올 정도였습니다.

클라우드 네이티브 환경에 적합한 오브젝트 스토리지를 이렇게 빠르게 설치할 수 있다니, 개발자 입장에서 이보다 더 편한 세상이 있을까 싶습니다.

이제 설치 시간보다 설정을 고민하는 시간이 더 오래 걸리는 시대가 온 것 같네요. 🙌

 

 

원샷 스크립!

# ✅ 1. 시스템에 필요한 기본 패키지 설치
echo "[+] Updating system and installing required packages..."
sudo apt update -y && sudo apt install -y wget curl tar

# ✅ 2. MinIO 서버 바이너리 다운로드
echo "[+] Downloading MinIO server..."
wget https://dl.min.io/server/minio/release/linux-amd64/minio -O /usr/local/bin/minio
chmod +x /usr/local/bin/minio

# ✅ 3. MinIO 사용자 생성 (선택)
echo "[+] Creating minio user..."
sudo useradd -r minio-user -s /sbin/nologin

# ✅ 4. 데이터 디렉토리 생성
echo "[+] Creating storage directory..."
sudo mkdir -p /usr/local/share/minio
sudo chown minio-user:minio-user /usr/local/share/minio

# ✅ 5. 환경변수 설정 (ACCESS, SECRET KEY)
echo "[+] Creating environment file..."
cat <<EOF | sudo tee /etc/default/minio
MINIO_ROOT_USER=minioadmin
MINIO_ROOT_PASSWORD=minioadmin123
MINIO_VOLUMES="/usr/local/share/minio"
MINIO_OPTS="--console-address :9001"
EOF

# ✅ 6. Systemd 서비스 등록
echo "[+] Creating systemd service file..."
cat <<EOF | sudo tee /etc/systemd/system/minio.service
[Unit]
Description=MinIO Object Storage
After=network.target

[Service]
User=minio-user
Group=minio-user
EnvironmentFile=/etc/default/minio
ExecStart=/usr/local/bin/minio server \$MINIO_OPTS \$MINIO_VOLUMES
Restart=always
LimitNOFILE=65536

[Install]
WantedBy=multi-user.target
EOF

# ✅ 7. 서비스 시작 및 자동 시작 설정
echo "[+] Starting MinIO service..."
sudo systemctl daemon-reexec
sudo systemctl daemon-reload
sudo systemctl enable minio
sudo systemctl start minio

# ✅ 8. 완료 안내
echo "✅ MinIO 설치 및 실행 완료!"
echo "🔗 접속 URL: http://<서버IP>:9000 (콘솔: http://<서버IP>:9001)"
echo "🧑 사용자: minioadmin"
echo "🔑 비밀번호: minioadmin123"

 

패스워드 변경

# vi /etc/default/minio 

MINIO_ROOT_USER=새로운아이디
MINIO_ROOT_PASSWORD=새로운비밀번호
MINIO_VOLUMES="/data"
MINIO_OPTS="--console-address :9001"

 

업로드 파이썬 코드

from minio import Minio
from minio.error import S3Error
import sys
import os

# MinIO 클라이언트
client = Minio(
    "192.168.0.99:9000",
    access_key="minioadmin",
    secret_key="minioadmin123",
    secure=False
)

bucket_name = "cym"

def upload_file(local_path, remote_name=None):
    """
    파일 업로드
    :param local_path: 업로드할 로컬 파일 경로
    :param remote_name: MinIO에 저장될 이름 (없으면 원본 파일명 사용)
    """
    # 파일 존재 확인
    if not os.path.exists(local_path):
        print(f"❌ 파일을 찾을 수 없습니다: {local_path}")
        return
    
    # remote_name이 없으면 파일명만 추출
    if remote_name is None:
        remote_name = os.path.basename(local_path)
    
    try:
        # 파일 업로드
        client.fput_object(
            bucket_name=bucket_name,
            object_name=remote_name,
            file_path=local_path
        )
        print(f"✅ 업로드 성공!")
        print(f"   로컬: {local_path}")
        print(f"   MinIO: {remote_name}")
        print(f"   버킷: {bucket_name}")
    except S3Error as e:
        print(f"❌ 업로드 실패: {e}")

if __name__ == "__main__":
    if len(sys.argv) < 2:
        print("사용법: python upload_file.py <파일경로> [MinIO저장이름]")
        print("예시: python upload_file.py test.txt")
        print("예시: python upload_file.py test.txt folder/renamed.txt")
    else:
        local_file = sys.argv[1]
        remote_file = sys.argv[2] if len(sys.argv) > 2 else None
        upload_file(local_file, remote_file)

 

 

결과!

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2026/03   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함