Files
cafe24-testserver/README.md
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

8.6 KiB

테스트 서버 구축 가이드 (Proxmox + Rocky Linux 9)

개요

Cafe24 10G 자이언트플러스 환경과 최대한 동일한 테스트 서버 구성을 위한 완전 자동화 스크립트 모음입니다.

구성도

`

     Proxmox VE (호스트)                    

VM1 (PHP 8.2) VM2 (PHP 8.4) LXC (MariaDB) Rocky Linux 9 Rocky Linux 9 Rocky Linux 9 Apache 2.4 Apache 2.4 MariaDB 10.6 PHP 8.2 PHP 8.4 Port: 3306
Port: 80,443 Port: 80,443
FTP (vsftpd) FTP (vsftpd)

Tailscale 연동 (원격 접근)

`


디렉토리 구조

maketestserver/ README.md # 이 파일 dotfiles/ # git 관리 설정 파일 vimrc # Vim 설정 bashrc_addon # Bash 추가 설정 vm/ # VM 스크립트 setup_common.sh # 공통 설정 (Apache, FTP, Vim, Bash) install_php.sh # PHP 8.2/8.4 설치 lxc/ # LXC 스크립트 setup_mariadb.sh # MariaDB 10.6 설정


빠른 시작

1 Proxmox에서 VM 생성

VM1 (PHP 8.2)

`bash

Proxmox 호스트에서 실행

qm create 101
--name vm1-php82
--memory 2048
--cores 2
--scsihw virtio-scsi-pci
--scsi0 local-lvm:30
--net0 virtio,bridge=vmbr0
--cdrom local:iso/Rocky-9.0-latest.iso

qm start 101 `

VM2 (PHP 8.4)

`bash qm create 102
--name vm2-php84
--memory 2048
--cores 2
--scsihw virtio-scsi-pci
--scsi0 local-lvm:30
--net0 virtio,bridge=vmbr0
--cdrom local:iso/Rocky-9.0-latest.iso

qm start 102 `

Rocky Linux 9 설치 시 주의:

  • 설치 중 일반 사용자 생성 (예: 'firstgarden')
  • Root 비밀번호 설정
  • 기본 네트워크 설정

2 Proxmox에서 LXC 생성 (MariaDB)

`bash

LXC 생성

pct create 201
local:vztmpl/rocky-9-default_9.0-1_amd64.tar.gz
-hostname lxc-db
-memory 2048
-cores 2
-rootfs local-lvm:20
-net0 name=eth0,bridge=vmbr0,ip=dhcp

pct start 201 pct enter 201 # LXC 진입 `

3 VM1 (PHP 8.2) 설정

SSH로 VM1에 접속한 후:

`bash

스크립트 다운로드

cd ~ git clone https://github.com/yourusername/cafe24-testserver.git cd cafe24-testserver

공통 설정 실행

chmod +x vm/setup_common.sh ./vm/setup_common.sh

PHP 8.2 설치

chmod +x vm/install_php.sh ./vm/install_php.sh 8.2

Apache 재시작

sudo systemctl restart httpd `

4 VM2 (PHP 8.4) 설정

VM1과 동일하게 진행하되, PHP 버전만 8.4로 변경:

bash ./vm/install_php.sh 8.4

5 LXC (MariaDB) 설정

LXC에서 Root로 로그인한 후:

`bash

스크립트 다운로드

cd /root curl -fsSL https://github.com/yourusername/cafe24-testserver/archive/main.tar.gz | tar xz cd cafe24-testserver-main

MariaDB 설정 실행

chmod +x lxc/setup_mariadb.sh ./lxc/setup_mariadb.sh `

스크립트 실행 중 입력 항목:

  • Linux 사용자 이름
  • Linux 사용자 비밀번호
  • DB 사용자 계정 통합 여부 (Y/n)
  • MariaDB 비밀번호 (선택시)
  • Database 이름

각 스크립트 상세 설명

'vm/setup_common.sh' - 공통 설정

설치/설정 항목:

  • Apache 2.4 (DocumentRoot: '/home//www')
  • vsftpd (FTP 서버, localhost 바인드)
  • Vim (마우스 비활성화)
  • Bash (프롬프트, 별칭, 히스토리)
  • SSH 강화 (Root 로그인 비활성화)
  • SELinux 설정 (httpd 접근 허용)
  • firewalld 비활성화

실행: bash chmod +x vm/setup_common.sh ./vm/setup_common.sh

생성되는 디렉토리:

  • '~/www' - 웹 루트 (권한: 750)
  • '~' - 홈 디렉토리 (권한: 711)

설정 파일:

  • Apache: '/etc/httpd/conf.d/.conf'
  • PHP-FPM: '/etc/php-fpm.d/.conf'

'vm/install_php.sh' - PHP 설치

PHP 8.2 또는 8.4를 설치하고 PHP-FPM pool을 생성합니다.

사전 요구사항:

  • 'vm/setup_common.sh' 실행 완료

설치 항목:

  • PHP CLI & FPM (NTS 빌드)
  • 필수 확장: mysqlnd, pdo, mbstring, xml, gd, curl, opcache, soap, intl, zip, bcmath, bz2, imagick

실행: bash chmod +x vm/install_php.sh ./vm/install_php.sh 8.2 # PHP 8.2 ./vm/install_php.sh 8.4 # PHP 8.4

생성되는 파일:

  • '/etc/php-fpm.d/.conf' - PHP-FPM pool 설정

PHP 버전 확인: bash php -v php-fpm -v


'lxc/setup_mariadb.sh' - MariaDB 설정

MariaDB 10.6을 설치하고 사용자/DB를 생성합니다.

설치 항목:

  • MariaDB Server 10.6
  • 외부 접속 허용 (모든 인터페이스 바인드)
  • Firewall 3306 포트 개방
  • 초기 보안 설정 (테스트 DB/계정 제거)

실행: bash chmod +x lxc/setup_mariadb.sh ./lxc/setup_mariadb.sh

대화형 입력:

  1. Linux 사용자 이름 (권장: 첫 번째 설정한 사용자)
  2. Linux 사용자 비밀번호
  3. DB 계정 통합 여부 (권장: Y)
  4. Database 이름 (예: 'testdb')

접속 확인 (VM에서): `bash

LXC IP 확인: pct exec 201 ip addr show eth0 | grep inet

mysql -h <LXC_IP> -u <DB_USER> -p<DB_PW>

또는

mysql -h 192.168.1.100 -u firstgarden -p `


dotfiles (설정 파일)

각 스크립트에서 필요한 설정 파일들입니다. Git에서 관리되며 curl로 자동 다운로드됩니다.

'dotfiles/vimrc'

  • 줄 번호 표시
  • 문법 강조
  • 마우스 비활성화
  • 80자 안내선
  • UTF-8 인코딩

'dotfiles/bashrc_addon'

  • 한국어 로케일 설정
  • 색상 지원 ('ls', 'grep' 등)
  • 유용한 별칭 ('ll', 'la', 'l' 등)
  • 편의 함수 ('mcd', 'f755', 'f644')
  • 히스토리 설정

Tailscale 연동 (선택)

원격에서 테스트 서버에 접근하려면:

VM 및 LXC에 설치

`bash curl -fsSL https://tailscale.com/install.sh | sh sudo systemctl enable --now tailscaled

가입 및 네트워크 등록

sudo tailscale up `

접속

`bash

각 호스트의 Tailscale IP 확인

tailscale ip

SSH 접속 (Tailscale IP 사용)

ssh firstgarden@100.x.x.x

MySQL 접속

mysql -h 100.x.x.x -u firstgarden -p `


보안 설정

기본 설정

  • Root 로그인: 비활성화 (SSH)
  • 패스워드 인증: 활성화 (공개키 권장)
  • FTP: localhost 바인드 (Tailscale 통해만 접근 가능)
  • firewalld: 비활성화 (테스트 환경용)

프로덕션 권장사항

`bash

SSH 공개키 인증 설정

ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519

~/.ssh/authorized_keys에 공개키 추가

cat ~/.ssh/id_ed25519.pub >> ~/.ssh/authorized_keys chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys

SSH 설정 강화

sudo nano /etc/ssh/sshd_config

다음 설정 추가:

PasswordAuthentication no

PubkeyAuthentication yes

PermitRootLogin no

sudo systemctl restart sshd `


성능 설정

PHP-FPM 튜닝

'/etc/php-fpm.d/.conf' 수정: ini pm.max_children = 20 # 최대 프로세스 (RAM에 따라) pm.start_servers = 5 pm.min_spare_servers = 2 pm.max_spare_servers = 10

MariaDB 튜닝

'/etc/my.cnf.d/50-server.cnf' 수정: ini max_connections = 200 innodb_buffer_pool_size = 512M


문제 해결

Apache 403 Forbidden

`bash

웹 루트 권한 확인

ls -ld ~/www

예상: drwxr-x--- (750)

Apache 실행 사용자 확인

ps aux | grep apache

SELinux 컨텍스트 확인

ls -Z ~/www `

PHP-FPM 연결 실패

`bash

PHP-FPM 상태 확인

sudo systemctl status php-fpm

소켓 파일 확인

ls -l /run/php-fpm/.sock

Apache에서 PHP 핸들러 설정 확인

grep -r "proxy_fcgi" /etc/httpd/conf.d/ `

MariaDB 연결 실패

`bash

MariaDB 상태 확인

sudo systemctl status mariadb

바인드 주소 확인

sudo grep bind-address /etc/my.cnf.d/50-server.cnf

포트 확인

sudo ss -tlnp | grep 3306

방화벽 확인 (LXC)

sudo firewall-cmd --list-ports `


기타

스크립트 실행 순서 (정리)

VM1 (PHP 8.2):

  1. Rocky Linux 9 설치 (Minimal)
  2. 사용자 생성 (예: firstgarden)
  3. 'vm/setup_common.sh' 실행
  4. 'vm/install_php.sh 8.2' 실행

VM2 (PHP 8.4):

  1. Rocky Linux 9 설치 (Minimal)
  2. 사용자 생성 (예: firstgarden)
  3. 'vm/setup_common.sh' 실행
  4. 'vm/install_php.sh 8.4' 실행

LXC (MariaDB):

  1. Rocky Linux 9 LXC 생성
  2. Root로 로그인
  3. 'lxc/setup_mariadb.sh' 실행
  4. 입력값 입력 (사용자, 비밀번호 등)

파일 권한

스크립트 실행 가능 권한 설정: bash chmod +x vm/setup_common.sh chmod +x vm/install_php.sh chmod +x lxc/setup_mariadb.sh


라이선스 및 기여

이 프로젝트는 Cafe24 환경 테스트용으로 제공됩니다.


최종 수정: 2024년 12월 23일 버전: 1.0.0