Update vm/install_php.sh
This commit is contained in:
@ -1,13 +1,14 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
# Rocky Linux 9 - 테스트 서버용 공통 설치 스크립트
|
# Rocky Linux 9 - 테스트 서버용 공통 설치 스크립트
|
||||||
# Apache + FTP + Vim
|
# Apache + FTP + Vim
|
||||||
# Forbidden 방지 (권한 + welcome.conf 제거)
|
# WebRoot = /home/$USER/www
|
||||||
|
# Forbidden 방지 (권한 + SELinux + welcome.conf)
|
||||||
|
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
|
||||||
WEB_USER="$USER"
|
WEB_USER="$USER"
|
||||||
WEB_HOME="$(eval echo "~$WEB_USER")"
|
WEB_HOME="$(eval echo "~$WEB_USER")"
|
||||||
WEB_ROOT="/var/www/html"
|
WEB_ROOT="$WEB_HOME/www"
|
||||||
|
|
||||||
APACHE_CONF="/etc/httpd/conf.d/${WEB_USER}.conf"
|
APACHE_CONF="/etc/httpd/conf.d/${WEB_USER}.conf"
|
||||||
PHP_CONF="/etc/httpd/conf.d/10-php-${WEB_USER}.conf"
|
PHP_CONF="/etc/httpd/conf.d/10-php-${WEB_USER}.conf"
|
||||||
@ -19,8 +20,7 @@ cleanup() {
|
|||||||
EXIT_CODE=$?
|
EXIT_CODE=$?
|
||||||
if [ $EXIT_CODE -ne 0 ]; then
|
if [ $EXIT_CODE -ne 0 ]; then
|
||||||
echo "❌ 오류 발생 ($EXIT_CODE) – Apache 설정 롤백"
|
echo "❌ 오류 발생 ($EXIT_CODE) – Apache 설정 롤백"
|
||||||
sudo rm -f "$APACHE_CONF"
|
sudo rm -f "$APACHE_CONF" "$PHP_CONF"
|
||||||
sudo rm -f "$PHP_CONF"
|
|
||||||
sudo systemctl restart httpd 2>/dev/null || true
|
sudo systemctl restart httpd 2>/dev/null || true
|
||||||
fi
|
fi
|
||||||
exit $EXIT_CODE
|
exit $EXIT_CODE
|
||||||
@ -51,39 +51,31 @@ sudo systemctl disable firewalld 2>/dev/null || true
|
|||||||
if [ -f /etc/httpd/conf.d/welcome.conf ]; then
|
if [ -f /etc/httpd/conf.d/welcome.conf ]; then
|
||||||
sudo mv /etc/httpd/conf.d/welcome.conf \
|
sudo mv /etc/httpd/conf.d/welcome.conf \
|
||||||
/etc/httpd/conf.d/welcome.conf.disabled
|
/etc/httpd/conf.d/welcome.conf.disabled
|
||||||
echo "✓ Apache welcome.conf 비활성화"
|
echo "✓ welcome.conf 비활성화"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
########################################
|
########################################
|
||||||
# 웹 루트 생성 및 권한 (403 방지 핵심)
|
# WebRoot 생성
|
||||||
########################################
|
########################################
|
||||||
sudo mkdir -p "$WEB_ROOT"
|
mkdir -p "$WEB_ROOT"
|
||||||
|
|
||||||
# Apache가 반드시 접근 가능해야 함
|
|
||||||
sudo chown -R apache:apache "$WEB_ROOT"
|
|
||||||
sudo chmod 755 "$WEB_ROOT"
|
|
||||||
|
|
||||||
# 디렉토리/파일 권한 정규화
|
|
||||||
sudo find "$WEB_ROOT" -type d -exec chmod 755 {} \;
|
|
||||||
sudo find "$WEB_ROOT" -type f -exec chmod 644 {} \;
|
|
||||||
|
|
||||||
########################################
|
########################################
|
||||||
# 홈 디렉토리 심볼릭 링크 (~/www)
|
# ★ 권한 설정 (403 방지 핵심)
|
||||||
########################################
|
########################################
|
||||||
if [ -d "$WEB_HOME/www" ] && [ ! -L "$WEB_HOME/www" ]; then
|
# 홈 디렉토리는 execute 권한 필요
|
||||||
rm -rf "$WEB_HOME/www"
|
chmod 711 "$WEB_HOME"
|
||||||
fi
|
|
||||||
|
|
||||||
if [ ! -L "$WEB_HOME/www" ]; then
|
# Apache가 webroot에 접근 가능해야 함
|
||||||
ln -s "$WEB_ROOT" "$WEB_HOME/www"
|
chown -R apache:apache "$WEB_ROOT"
|
||||||
echo "✓ ~/www → /var/www/html"
|
chmod 755 "$WEB_ROOT"
|
||||||
fi
|
find "$WEB_ROOT" -type d -exec chmod 755 {} \;
|
||||||
|
find "$WEB_ROOT" -type f -exec chmod 644 {} \;
|
||||||
|
|
||||||
########################################
|
########################################
|
||||||
# 기본 index.html 생성 (없을 경우)
|
# 기본 index.html (없을 경우)
|
||||||
########################################
|
########################################
|
||||||
if [ ! -f "$WEB_ROOT/index.html" ] && [ ! -f "$WEB_ROOT/index.php" ]; then
|
if [ ! -f "$WEB_ROOT/index.html" ] && [ ! -f "$WEB_ROOT/index.php" ]; then
|
||||||
sudo tee "$WEB_ROOT/index.html" >/dev/null <<EOF
|
tee "$WEB_ROOT/index.html" >/dev/null <<EOF
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
@ -96,7 +88,7 @@ if [ ! -f "$WEB_ROOT/index.html" ] && [ ! -f "$WEB_ROOT/index.php" ]; then
|
|||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
EOF
|
EOF
|
||||||
sudo chown apache:apache "$WEB_ROOT/index.html"
|
chown apache:apache "$WEB_ROOT/index.html"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
########################################
|
########################################
|
||||||
@ -119,7 +111,7 @@ sudo tee "$APACHE_CONF" >/dev/null <<EOF
|
|||||||
EOF
|
EOF
|
||||||
|
|
||||||
########################################
|
########################################
|
||||||
# PHP 연동 설정 (php-fpm 설치 후 자동 활성)
|
# PHP 연동 설정 (php-fpm 설치 후 사용)
|
||||||
########################################
|
########################################
|
||||||
sudo tee "$PHP_CONF" >/dev/null <<'EOF'
|
sudo tee "$PHP_CONF" >/dev/null <<'EOF'
|
||||||
<IfModule proxy_fcgi_module>
|
<IfModule proxy_fcgi_module>
|
||||||
@ -130,9 +122,10 @@ sudo tee "$PHP_CONF" >/dev/null <<'EOF'
|
|||||||
EOF
|
EOF
|
||||||
|
|
||||||
########################################
|
########################################
|
||||||
# SELinux 컨텍스트 복구
|
# SELinux 컨텍스트 (홈 디렉토리 웹 허용)
|
||||||
########################################
|
########################################
|
||||||
sudo restorecon -Rv "$WEB_ROOT"
|
sudo semanage fcontext -a -t httpd_sys_content_t "${WEB_ROOT}(/.*)?"
|
||||||
|
sudo restorecon -Rv "$WEB_HOME"
|
||||||
|
|
||||||
########################################
|
########################################
|
||||||
# Apache / FTP 활성화
|
# Apache / FTP 활성화
|
||||||
@ -141,7 +134,7 @@ sudo systemctl enable --now httpd
|
|||||||
sudo systemctl enable --now vsftpd
|
sudo systemctl enable --now vsftpd
|
||||||
|
|
||||||
########################################
|
########################################
|
||||||
# SELinux - Apache/PHP 통합 허용
|
# SELinux - Apache 통합 허용
|
||||||
########################################
|
########################################
|
||||||
sudo setsebool -P httpd_unified 1
|
sudo setsebool -P httpd_unified 1
|
||||||
|
|
||||||
@ -152,16 +145,12 @@ IP_ADDR=$(hostname -I | awk '{print $1}')
|
|||||||
|
|
||||||
echo ""
|
echo ""
|
||||||
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
||||||
echo "✅ 테스트 서버 설정 완료 (Forbidden 해결)"
|
echo "✅ 테스트 서버 설정 완료"
|
||||||
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
||||||
echo "✔ WebRoot : $WEB_ROOT"
|
echo "✔ WebRoot : $WEB_ROOT"
|
||||||
echo "✔ Welcome 페이지 제거됨"
|
echo "✔ 홈 디렉토리 기반 웹 서비스"
|
||||||
echo "✔ Apache 접근 권한 정상"
|
echo "✔ SELinux / 권한 / Forbidden 해결"
|
||||||
echo ""
|
echo ""
|
||||||
echo "🌐 접속 주소"
|
echo "🌐 접속 주소"
|
||||||
echo " http://$IP_ADDR/"
|
echo " http://$IP_ADDR/"
|
||||||
echo ""
|
echo ""
|
||||||
echo "📄 로그"
|
|
||||||
echo " /var/log/httpd/${WEB_USER}-access.log"
|
|
||||||
echo " /var/log/httpd/${WEB_USER}-error.log"
|
|
||||||
echo ""
|
|
||||||
|
|||||||
Reference in New Issue
Block a user