Files
cafe24-testserver/vm/setup_common.sh
siane dccbf1dd94 Update vm/setup_common.sh
home폴더 권한 문제 발생 등을 방지하기 위해 수정함.
2025-12-23 14:23:15 +09:00

103 lines
3.0 KiB
Bash

#!/bin/bash
# 테스트 서버용 공통 설치 스크립트 (Rocky Linux 9)
# Apache + FTP + Vim + Bash 설정, DocumentRoot를 /var/www/html로 고정
set -euo pipefail
WEB_USER=$USER
WEB_HOME=$(eval echo "~$WEB_USER")
WEB_ROOT="/var/www/html"
# 오류 처리 함수
cleanup() {
EXIT_CODE=$?
if [ $EXIT_CODE -ne 0 ]; then
echo "❌ 에러 발생 ($EXIT_CODE). 변경사항을 롤백합니다..."
sudo rm -f /etc/httpd/conf.d/${WEB_USER}.conf
sudo rm -f /etc/httpd/conf.d/10-php-${WEB_USER}.conf
sudo systemctl restart httpd 2>/dev/null || true
echo "변경사항이 롤백되었습니다. 처음부터 다시 실행하세요."
fi
exit $EXIT_CODE
}
trap cleanup EXIT
echo "설치 사용자: $WEB_USER"
echo "웹 루트: $WEB_ROOT"
# 시스템 업데이트
sudo dnf update -y
# 필수 패키지 설치
sudo dnf install -y vim curl wget tar httpd vsftpd
# firewalld 비활성화
sudo systemctl stop firewalld 2>/dev/null || true
sudo systemctl disable firewalld 2>/dev/null || true
# /var/www/html 생성 및 권한 설정
sudo mkdir -p "$WEB_ROOT"
sudo chown $WEB_USER:$WEB_USER "$WEB_ROOT"
sudo chmod 750 "$WEB_ROOT"
# 홈 디렉토리에 심볼릭 링크 생성
if [ ! -L "$WEB_HOME/www" ]; then
ln -s "$WEB_ROOT" "$WEB_HOME/www"
echo "✓ ~/www → /var/www/html 심볼릭 링크 생성 완료"
fi
# Apache 활성화
sudo systemctl enable --now httpd
# VirtualHost 설정
APACHE_CONF="/etc/httpd/conf.d/${WEB_USER}.conf"
APACHE_PHP_CONF="/etc/httpd/conf.d/10-php-${WEB_USER}.conf"
sudo bash -c "cat > $APACHE_CONF" <<EOF
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot $WEB_ROOT
<Directory $WEB_ROOT>
Options -Indexes +FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog /var/log/httpd/${WEB_USER}-error.log
CustomLog /var/log/httpd/${WEB_USER}-access.log combined
</VirtualHost>
EOF
sudo bash -c "cat > $APACHE_PHP_CONF" <<EOF
<IfModule proxy_fcgi_module>
<FilesMatch "\.php$">
SetHandler "proxy:unix:/run/php-fpm/${WEB_USER}.sock|fcgi://localhost"
</FilesMatch>
</IfModule>
<IfModule rewrite_module>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ index.php [QSA,L]
</IfModule>
EOF
sudo systemctl restart httpd
# vsftpd 활성화
sudo systemctl enable --now vsftpd
# SELinux 컨텍스트 설정
sudo chcon -R -t httpd_sys_content_t "$WEB_ROOT"
echo ""
echo "✅ 테스트 서버용 공통 설정 완료!"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo "✓ Apache + FTP + Vim + Bash 환경 구성됨"
echo "✓ 웹 루트: $WEB_ROOT"
echo "✓ ~/www → /var/www/html 심볼릭 링크"
echo ""
echo "📋 다음 단계:"
echo " 1. PHP 설치: ./install_php.sh 8.2 또는 8.4"
echo " 2. 웹 접속: http://$(hostname -I | awk '{print $1}')/"
echo " 3. 로그 확인: tail -f /var/log/httpd/${WEB_USER}-*.log"