Files
cafe24-testserver/lxc/setup_mariadb.sh
KWON 0c471dea47 구조 개선: 디렉토리 정리 및 스크립트 완성
- 디렉토리 구조 정리: vm/, lxc/, dotfiles/ 폴더 생성
- setup_db.sh  lxc/setup_mariadb.sh (기능 강화)
  * MariaDB 보안 초기화 추가
  * 외부 접속 설정 및 Firewall 포트 개방
  * dotfiles 다운로드 통합
  * 완료 메시지 개선
- vm/setup_common.sh (PHP-FPM Apache 연동)
  * Apache mod_proxy_fcgi 설정 추가
  * dotfiles 다운로드 에러 처리 강화
  * 오류 처리 및 설정 확인 로직 추가
  * 완료 메시지 개선
- vm/install_php.sh
  * PHP-FPM 풀 설정 개선 (apache 소유권)
  * 설치 확인 가이드 추가
  * 완료 메시지 상세화
- dotfiles/ 파일 추가 관리
  * vimrc: 기본 설정 포함
  * bashrc_addon: 한국어, 별칭, 함수 포함
- .gitignore 추가
- README.md 전면 개선
  * 구성도 및 디렉토리 구조 추가
  * 빠른 시작 가이드 강화
  * 문제 해결 섹션 추가
  * 보안 및 성능 튜닝 가이드 추가
2025-12-23 11:44:12 +09:00

167 lines
5.4 KiB
Bash

#!/bin/bash
# Rocky Linux 9 LXC - MariaDB 설치 및 초기 설정
# root 계정에서 실행
# Linux / DB 계정 통합 여부 선택 가능
# dotfiles는 git에서 다운로드
set -e
# dotfiles 저장소 (실제 URL로 변경 필요)
DOTFILES_BASE_URL="https://raw.githubusercontent.com/yourusername/cafe24-testserver/main/dotfiles"
echo "=== LXC MariaDB 초기 세팅 시작 ==="
# -------------------------------------------------
# 0. Timezone 설정
# -------------------------------------------------
timedatectl set-timezone Asia/Seoul
echo "Timezone set to Asia/Seoul"
# -------------------------------------------------
# 1. 필수 패키지 사전 설치
# -------------------------------------------------
dnf update -y
dnf install -y sudo vim wget curl
# -------------------------------------------------
# 2. Linux 사용자 정보 입력
# -------------------------------------------------
read -p "Linux 사용자 이름: " LINUX_USER
read -s -p "Linux 사용자 비밀번호: " LINUX_PW
echo ""
read -s -p "Linux 사용자 비밀번호 확인: " LINUX_PW_CONFIRM
echo ""
if [[ "$LINUX_PW" != "$LINUX_PW_CONFIRM" ]]; then
echo "Linux 사용자 비밀번호가 일치하지 않습니다."
exit 1
fi
# -------------------------------------------------
# 3. MariaDB 계정을 동일하게 사용할지 여부
# -------------------------------------------------
read -p "MariaDB 계정을 Linux 계정과 동일하게 사용할까요? (Y/n): " SAME_ACCOUNT
SAME_ACCOUNT=${SAME_ACCOUNT:-Y}
if [[ "$SAME_ACCOUNT" =~ ^[Yy]$ ]]; then
DB_USER="$LINUX_USER"
DB_PW="$LINUX_PW"
echo "→ DB 사용자/비밀번호를 Linux 계정과 동일하게 사용합니다."
else
read -p "MariaDB 사용자 이름: " DB_USER
read -s -p "MariaDB 사용자 비밀번호: " DB_PW
echo ""
read -s -p "MariaDB 사용자 비밀번호 확인: " DB_PW_CONFIRM
echo ""
if [[ "$DB_PW" != "$DB_PW_CONFIRM" ]]; then
echo "MariaDB 비밀번호가 일치하지 않습니다."
exit 1
fi
fi
read -p "MariaDB DB 이름: " DB_NAME
# -------------------------------------------------
# 4. Linux 사용자 생성
# -------------------------------------------------
if ! id "$LINUX_USER" &>/dev/null; then
useradd -m -s /bin/bash "$LINUX_USER"
echo "$LINUX_USER:$LINUX_PW" | chpasswd
echo "Linux 사용자 $LINUX_USER 생성 완료"
fi
usermod -aG wheel "$LINUX_USER"
USER_HOME="/home/$LINUX_USER"
# -------------------------------------------------
# 5. dotfiles 다운로드 (git에서)
# -------------------------------------------------
echo "dotfiles 다운로드 중..."
curl -fsSL -o "$USER_HOME/.vimrc" "$DOTFILES_BASE_URL/vimrc"
curl -fsSL -o "$USER_HOME/.bashrc_addon" "$DOTFILES_BASE_URL/bashrc_addon"
# 기존 .bashrc 백업 및 추가 설정 적용
if [ -f "$USER_HOME/.bashrc" ]; then
cp "$USER_HOME/.bashrc" "$USER_HOME/.bashrc.bak"
fi
# 새 설정 추가
cat "$USER_HOME/.bashrc_addon" >> "$USER_HOME/.bashrc"
rm "$USER_HOME/.bashrc_addon"
chown "$LINUX_USER:$LINUX_USER" "$USER_HOME/.vimrc" "$USER_HOME/.bashrc" "$USER_HOME/.bashrc.bak" 2>/dev/null || true
# -------------------------------------------------
# 6. MariaDB 10.6 설치
# -------------------------------------------------
echo "MariaDB 10.6 설치 중..."
dnf module reset mariadb -y
dnf module enable mariadb:10.6 -y
dnf install -y mariadb-server
systemctl enable --now mariadb
# -------------------------------------------------
# 7. MariaDB 보안 초기화
# -------------------------------------------------
mysql -u root <<MYSQL_INIT
DELETE FROM mysql.user WHERE User='';
DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1');
DROP DATABASE IF EXISTS test;
DELETE FROM mysql.db WHERE Db='test' OR Db='test\\_%';
FLUSH PRIVILEGES;
MYSQL_INIT
# -------------------------------------------------
# 8. DB 사용자 및 데이터베이스 생성
# -------------------------------------------------
echo "DB 사용자 및 데이터베이스 생성 중..."
mysql -u root <<MYSQL_CREATE
CREATE USER IF NOT EXISTS '$DB_USER'@'%' IDENTIFIED BY '$DB_PW';
GRANT ALL PRIVILEGES ON $DB_NAME.* TO '$DB_USER'@'%';
CREATE DATABASE IF NOT EXISTS $DB_NAME CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
FLUSH PRIVILEGES;
MYSQL_CREATE
# -------------------------------------------------
# 9. MariaDB 외부 접속 허용 설정
# -------------------------------------------------
echo "MariaDB 외부 접속 허용 설정 중..."
cat > /etc/my.cnf.d/50-server.cnf <<EOF
[mysqld]
bind-address = 0.0.0.0
port = 3306
max_connections = 100
EOF
systemctl restart mariadb
# -------------------------------------------------
# 10. Firewall 설정 (3306 포트 개방)
# -------------------------------------------------
echo "Firewall 설정 중..."
systemctl enable firewalld
systemctl start firewalld
firewall-cmd --permanent --add-port=3306/tcp
firewall-cmd --reload
# -------------------------------------------------
# 11. 완료 메시지
# -------------------------------------------------
echo ""
echo "=========================================="
echo "=== MariaDB 설정 완료 ==="
echo "=========================================="
echo "Linux 사용자: $LINUX_USER"
echo "DB 사용자: $DB_USER"
echo "DB 이름: $DB_NAME"
echo "바인드 주소: 0.0.0.0 (모든 인터페이스)"
echo "포트: 3306"
echo ""
echo "VM에서 연결 문자열:"
echo " mysql -h <LXC_IP> -u $DB_USER -p"
echo "=========================================="