################################################################################ # 떡볶이 배달 - 주문 입력 / 조회 웹 (Apache + PHP + AWS RDS MySQL) # ▶ 사용법 (EC2 접속 후) # 1) sudo -i # 2) 아래 cat 블록 전체를 복사 → 붙여넣기 (setup.sh 생성) # 3) vi /root/setup.sh → 맨 위 DB_HOST, DB_PASS 를 본인 값으로 수정 # 4) bash /root/setup.sh # 5) 브라우저 http:///tteok/ # ※ EC2 보안그룹 80 인바운드, RDS 보안그룹 3306 인바운드 허용 필요 ################################################################################ cat > /root/setup.sh <<'SETUP_EOF' #!/bin/bash set -e #===================== 본인 환경에 맞게 수정 ===================== DB_HOST="database-1.cp6ogukc8u58.ap-northeast-2.rds.amazonaws.com" # RDS 엔드포인트 DB_USER="admin" # RDS 마스터 계정 DB_PASS="good" # RDS 마스터 암호 APP_USER="tteok_app" # 웹 전용 계정 APP_PASS="Tteok1234!" # 웹 전용 계정 암호 WEB_DIR="/var/www/html/tteok" #================================================================ echo "[1/5] 패키지 설치 (httpd, php, mysql 클라이언트)" dnf install -y httpd php php-mysqlnd mariadb105 >/dev/null systemctl enable --now httpd php-fpm echo "[2/5] RDS 에 DB / 테이블 / 계정 생성" mysql --default-character-set=utf8mb4 -h "$DB_HOST" -P 3306 -u "$DB_USER" -p"$DB_PASS" < "$WEB_DIR/config.php" < "$WEB_DIR/common.php" <<'EOF' PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC]); } return $pdo; } function h($s) { return htmlspecialchars((string)$s, ENT_QUOTES, 'UTF-8'); } function won($n) { return number_format((int)$n) . '원'; } function head($title) { ?> <?= h($title) ?>

🌶️ 떡볶이 배달

주문 입력주문 조회
'; } EOF # ---------- index.php (주문 입력) ---------- cat > "$WEB_DIR/index.php" <<'EOF' query('SELECT * FROM menu ORDER BY menu_id')->fetchAll(); if ($_SERVER['REQUEST_METHOD'] === 'POST') { $name = trim($_POST['customer_name'] ?? ''); $phone = trim($_POST['phone'] ?? ''); $addr = trim($_POST['address'] ?? ''); $memo = trim($_POST['memo'] ?? ''); $mid = (int)($_POST['menu_id'] ?? 0); $qty = (int)($_POST['quantity'] ?? 0); // 메뉴 단가는 DB 에서 조회 (화면 값 신뢰 X) $st = db()->prepare('SELECT price FROM menu WHERE menu_id = ?'); $st->execute([$mid]); $price = $st->fetchColumn(); if ($name === '' || $phone === '' || $addr === '' || !$price || $qty < 1 || $qty > 20) { $msg = '

입력값을 확인하세요.

'; } else { $st = db()->prepare('INSERT INTO orders (customer_name, phone, address, menu_id, quantity, total_price, memo) VALUES (?, ?, ?, ?, ?, ?, ?)'); $st->execute([$name, $phone, $addr, $mid, $qty, $price * $qty, $memo]); $id = db()->lastInsertId(); $msg = '

✅ 주문 완료! 주문번호 #' . (int)$id . ' / 결제금액 ' . won($price * $qty) . ' — 내 주문 조회

'; } } head('주문 입력'); ?>

주문 입력

메뉴

수량

이름

전화번호

주소

요청사항

EOF # ---------- search.php (주문 조회 / 검색) ---------- cat > "$WEB_DIR/search.php" <<'EOF' prepare($sql . ' ORDER BY o.order_id DESC LIMIT 100'); $st->execute(["%$q%", "%$q%", ctype_digit($q) ? (int)$q : 0]); } else { $st = db()->query($sql . ' ORDER BY o.order_id DESC LIMIT 100'); } $rows = $st->fetchAll(); $sum = db()->query('SELECT COUNT(*) cnt, IFNULL(SUM(total_price),0) total FROM orders')->fetch(); head('주문 조회'); ?>

주문 조회

전체 주문 건 · 총 매출 · 검색결과 건 [전체보기]

#주문시간이름전화번호주소 메뉴수량금액요청사항
조회된 주문이 없습니다.
EOF echo "[4/5] 권한 설정 및 재시작" chown -R apache:apache "$WEB_DIR" chmod 640 "$WEB_DIR/config.php" systemctl restart php-fpm httpd echo "[5/5] 동작 확인" if curl -s http://localhost/tteok/index.php | grep -q '주문 입력'; then echo " ✅ 설치 완료" else echo " ❌ 확인 필요 : tail /var/log/httpd/error_log /var/log/php-fpm/www-error.log" fi TOKEN=$(curl -s -X PUT http://169.254.169.254/latest/api/token -H "X-aws-ec2-metadata-token-ttl-seconds: 60") PUBIP=$(curl -s -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/public-ipv4) echo " 👉 접속 주소 : http://${PUBIP}/tteok/" SETUP_EOF ################################################################################ # (붙여넣기 후) 값 수정 → 실행 ################################################################################ bash /root/setup.sh 2 ################################################################################ # (참고) DB 에서 직접 조회 ################################################################################ # mysql --default-character-set=utf8mb4 -h -u admin -p tteok_db -e "SELECT * FROM orders ORDER BY order_id DESC;" mysql --default-character-set=utf8mb4 -h database-1.cp6ogukc8u58.ap-northeast-2.rds.amazonaws.com -u admin -p tteok_db -e "SELECT * FROM orders ORDER BY order_id DESC;" # (정리) 실습 종료 후 # mysql -h -u admin -p -e "DROP USER IF EXISTS 'tteok_app'@'%'; DROP DATABASE IF EXISTS tteok_db;" # rm -rf /var/www/html/tteok /root/setup.sh