TIL - 20251220

juni·2025년 12월 20일

TIL

목록 보기
213/316

1220 서버 관리 실전: 데이터베이스 연동과 HTTPS 적용


✅ 1. 데이터베이스 서버 설치 (MariaDB 기준)

  • 동적인 웹 애플리케이션은 대부분의 데이터를 데이터베이스에 저장하고 관리합니다. MariaDB는 널리 사용되는 오픈소스 관계형 데이터베이스 관리 시스템(RDBMS)으로, MySQL과 거의 완벽하게 호환됩니다.

➕ MariaDB 설치 및 기본 설정 (CentOS/RHEL 기준)

  1. 설치: yum 패키지 매니저를 사용하여 MariaDB 서버를 설치합니다.

    sudo yum install -y mariadb-server
  2. 서비스 시작 및 활성화: MariaDB 서비스를 시작하고, 시스템 부팅 시 자동으로 실행되도록 설정합니다.

    sudo systemctl start mariadb
    sudo systemctl enable mariadb
  3. 초기 보안 설정: mysql_secure_installation 스크립트를 실행하여 초기 보안 설정을 진행합니다.

    • 루트(root) 계정 비밀번호 설정
    • 익명 사용자 계정 삭제
    • 원격 루트 로그인 비활성화
    • 테스트 데이터베이스 삭제
    • 운영 환경에서는 반드시 수행해야 하는 중요한 과정입니다.
  4. 데이터베이스 및 사용자 생성: 웹 애플리케이션이 사용할 전용 데이터베이스와 사용자 계정을 생성하고, 해당 데이터베이스에 대한 권한을 부여합니다.

    -- MariaDB(MySQL) 접속
    sudo mysql -u root -p
    
    -- 데이터베이스 생성
    CREATE DATABASE my_app_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
    
    -- 사용자 생성 및 비밀번호 설정
    CREATE USER 'my_app_user'@'localhost' IDENTIFIED BY 'your_password';
    
    -- 생성한 사용자에게 해당 데이터베이스에 대한 모든 권한 부여
    GRANT ALL PRIVILEGES ON my_app_db.* TO 'my_app_user'@'localhost';
    
    -- 변경된 권한 적용
    FLUSH PRIVILEGES;
    
    -- 접속 종료
    EXIT;
  • 'my_app_user'@'localhost': 'localhost' 부분은 해당 사용자가 접속을 허용할 IP 주소를 의미합니다. localhost로 설정하면 서버 내부에서만 접속이 가능하여 보안성이 높습니다.

✅ 2. 웹 애플리케이션과 데이터베이스 연동

  • 웹 애플리케이션(e.g., Spring Boot, WordPress)이 데이터베이스에 연결할 수 있도록, 애플리케이션의 설정 파일에 위에서 생성한 데이터베이스의 접속 정보를 입력해야 합니다.

  • 주요 연결 정보:

    • 호스트 (Host): 데이터베이스 서버의 주소 (보통 localhost 또는 127.0.0.1)
    • 데이터베이스 이름 (DB Name): my_app_db
    • 사용자 이름 (Username): my_app_user
    • 비밀번호 (Password): your_password
    • 포트 (Port): MariaDB/MySQL의 기본 포트인 3306
  • 이 정보들을 애플리케이션의 설정 파일(.env, application.yml, wp-config.php 등)에 정확히 기입하고 애플리케이션을 재시작하면 데이터베이스 연동이 완료됩니다.


✅ 3. HTTPS 적용: Let's Encrypt를 이용한 무료 SSL 인증서 발급

  • HTTPS는 모든 통신을 암호화하여 보안을 강화하는 현대 웹사이트의 필수 요소입니다. Let's Encrypt는 무료로 SSL/TLS 인증서를 발급해주는 비영리 인증 기관(CA)으로, 누구나 쉽게 HTTPS를 적용할 수 있도록 해줍니다.

➕ Certbot: Let's Encrypt 인증서 자동화 도구

  • Certbot은 Let's Encrypt 인증서의 발급, 설치, 갱신 과정을 자동화해주는 매우 편리한 클라이언트 소프트웨어입니다.

➕ Nginx에 Certbot으로 HTTPS 적용하기

  1. Certbot 설치: 서버에 Certbot과 Nginx용 플러그인을 설치합니다.

    sudo yum install -y certbot python3-certbot-nginx
  2. 인증서 발급 및 Nginx 설정 자동화:

    • Certbot을 실행하면, Nginx 설정 파일(/etc/nginx/conf.d/*.conf)을 분석하여 server_name에 설정된 도메인 목록을 보여줍니다.
    • HTTPS를 적용하고 싶은 도메인을 선택하면, Certbot이 다음 작업들을 자동으로 수행합니다.
      a. 도메인 소유권 인증
      b. Let's Encrypt로부터 SSL 인증서 발급
      c. 발급받은 인증서를 서버에 저장
      d. Nginx 설정 파일을 수정하여, 443 포트(HTTPS)를 활성화하고 인증서 경로를 지정
      e. HTTP(80)로 들어온 요청을 HTTPS(443)로 자동 리다이렉트하는 설정 추가
      f. Nginx 서비스 재시작
    sudo certbot --nginx
  3. 인증서 자동 갱신:

    • Let's Encrypt 인증서는 유효 기간이 90일로 짧습니다. 하지만 Certbot을 설치하면, 인증서 만료일이 다가왔을 때 자동으로 갱신해주는 스케줄(Cron job 또는 Systemd timer)이 함께 등록되므로, 개발자가 신경 쓸 필요가 거의 없습니다.
    • 자동 갱신 테스트: sudo certbot renew --dry-run

📌 요약

  • MariaDB는 웹 애플리케이션의 데이터를 저장하기 위한 강력하고 안정적인 오픈소스 데이터베이스입니다. 설치 후에는 보안 설정을 수행하고, 애플리케이션이 사용할 전용 데이터베이스와 사용자 계정을 생성하는 것이 중요합니다.
  • 애플리케이션 설정 파일에 정확한 DB 접속 정보(호스트, DB명, 사용자, 비밀번호)를 입력해야 데이터베이스 연동이 완료됩니다.
  • Let's EncryptCertbot을 사용하면, 복잡한 과정 없이 명령어 몇 줄만으로 웹사이트에 무료 SSL 인증서를 발급받고 HTTPS를 자동으로 설정할 수 있습니다.
  • Certbot은 인증서 자동 갱신 기능까지 제공하므로, 웹 마스터의 인증서 관리 부담을 크게 줄여줍니다.

0개의 댓글