Skip to content

Commit de2057e

Browse files
authored
Merge pull request #185 from Runnect/dev
[Fix] - deploy.sh λ°©ν™”λ²½ μ΄ˆκΈ°ν™” + Nginx κ°•μ œ μž¬μ‹œμž‘
2 parents ea7e7a2 + 03955a7 commit de2057e

File tree

2 files changed

+52
-148
lines changed

2 files changed

+52
-148
lines changed
Lines changed: 28 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
1-
name: EC2-DIAGNOSTIC
1+
name: EC2-READ-DEPLOY-LOG
22

33
on:
44
workflow_dispatch:
55

66
jobs:
7-
diagnose:
8-
name: Diagnose EC2 Instance
7+
read-log:
8+
name: Read CodeDeploy Logs
99
runs-on: ubuntu-latest
1010

1111
steps:
@@ -16,81 +16,38 @@ jobs:
1616
aws-secret-access-key: ${{ secrets.AWS_PROD_SECRET_KEY }}
1717
aws-region: ap-northeast-2
1818

19-
- name: Check IAM identity and permissions
19+
- name: Get deployment lifecycle events
2020
run: |
21-
echo "=== IAM 정보 ==="
22-
aws sts get-caller-identity 2>&1 || true
23-
24-
echo ""
25-
echo "=== IAM μ •μ±… 확인 ==="
26-
ACCOUNT=$(aws sts get-caller-identity --query Account --output text 2>/dev/null)
27-
USER_NAME=$(aws sts get-caller-identity --query Arn --output text 2>/dev/null | awk -F'/' '{print $NF}')
28-
echo "Account: $ACCOUNT"
29-
echo "User: $USER_NAME"
30-
31-
echo ""
32-
echo "=== Attached Policies ==="
33-
aws iam list-attached-user-policies --user-name "$USER_NAME" 2>&1 || echo "IAM μ •μ±… 쑰회 κΆŒν•œ μ—†μŒ"
34-
35-
echo ""
36-
echo "=== Inline Policies ==="
37-
aws iam list-user-policies --user-name "$USER_NAME" 2>&1 || echo "IAM 인라인 μ •μ±… 쑰회 κΆŒν•œ μ—†μŒ"
38-
39-
- name: CodeDeploy deployment group info
40-
run: |
41-
echo "=== 배포 κ·Έλ£Ή 상세 ==="
42-
aws deploy get-deployment-group \
43-
--application-name runnect-prod-codedeploy \
44-
--deployment-group-name runnect-prod-codedeploy-group \
45-
--output json 2>&1 || echo "배포 κ·Έλ£Ή 쑰회 μ‹€νŒ¨"
46-
47-
- name: Latest deployment details
48-
run: |
49-
echo "=== 졜근 배포 λͺ©λ‘ ==="
50-
LATEST=$(aws deploy list-deployments \
21+
echo "=== 졜근 배포 λͺ©λ‘ (μ΅œλŒ€ 5개) ==="
22+
DEPLOYMENTS=$(aws deploy list-deployments \
5123
--application-name runnect-prod-codedeploy \
5224
--deployment-group-name runnect-prod-codedeploy-group \
53-
--query "deployments[0]" \
25+
--query "deployments[:5]" \
5426
--output text 2>/dev/null)
55-
echo "Latest deployment: $LATEST"
27+
echo "Deployments: $DEPLOYMENTS"
5628
57-
if [ -n "$LATEST" ] && [ "$LATEST" != "None" ]; then
29+
for DEP_ID in $DEPLOYMENTS; do
5830
echo ""
59-
echo "=== 배포 상세 ==="
60-
aws deploy get-deployment --deployment-id "$LATEST" --output json 2>&1
31+
echo "================================================"
32+
echo "=== Deployment: $DEP_ID ==="
33+
echo "================================================"
6134
62-
echo ""
63-
echo "=== 배포 μΈμŠ€ν„΄μŠ€ λͺ©λ‘ ==="
64-
aws deploy list-deployment-instances --deployment-id "$LATEST" --output json 2>&1 || echo "μΈμŠ€ν„΄μŠ€ λͺ©λ‘ 쑰회 μ‹€νŒ¨"
35+
aws deploy get-deployment --deployment-id "$DEP_ID" \
36+
--query "deploymentInfo.{status:status, createTime:createTime, completeTime:completeTime, error:errorInformation}" \
37+
--output json 2>&1
6538
6639
echo ""
67-
echo "=== 배포 νƒ€κ²Ÿ 상세 ==="
68-
INSTANCE_IDS=$(aws deploy list-deployment-instances --deployment-id "$LATEST" --query "instancesList" --output text 2>/dev/null)
69-
for INST in $INSTANCE_IDS; do
70-
echo "--- Instance: $INST ---"
71-
aws deploy get-deployment-instance --deployment-id "$LATEST" --instance-id "$INST" --output json 2>&1 || echo "쑰회 μ‹€νŒ¨"
40+
echo "--- Instance lifecycle events ---"
41+
INSTANCES=$(aws deploy list-deployment-instances \
42+
--deployment-id "$DEP_ID" \
43+
--query "instancesList" \
44+
--output text 2>/dev/null)
45+
46+
for INST in $INSTANCES; do
47+
echo "Instance: $INST"
48+
aws deploy get-deployment-instance \
49+
--deployment-id "$DEP_ID" \
50+
--instance-id "$INST" \
51+
--output json 2>&1
7252
done
73-
fi
74-
75-
- name: Check SSM access
76-
run: |
77-
echo "=== SSM μΈμŠ€ν„΄μŠ€ λͺ©λ‘ ==="
78-
aws ssm describe-instance-information --output json 2>&1 || echo "SSM κΆŒν•œ μ—†μŒ"
79-
80-
- name: Try EC2 describe (may fail)
81-
run: |
82-
echo "=== EC2 μΈμŠ€ν„΄μŠ€ 쑰회 μ‹œλ„ ==="
83-
aws ec2 describe-instances --output json 2>&1 || echo "EC2 κΆŒν•œ μ—†μŒ"
84-
85-
echo ""
86-
echo "=== Elastic IP 쑰회 μ‹œλ„ ==="
87-
aws ec2 describe-addresses --public-ips 3.35.195.11 2>&1 || echo "Elastic IP 쑰회 μ‹€νŒ¨"
88-
89-
echo ""
90-
echo "=== λ³΄μ•ˆ κ·Έλ£Ή 쑰회 μ‹œλ„ ==="
91-
aws ec2 describe-security-groups 2>&1 || echo "λ³΄μ•ˆ κ·Έλ£Ή 쑰회 μ‹€νŒ¨"
92-
93-
- name: Check S3 bucket
94-
run: |
95-
echo "=== S3 버킷 확인 ==="
96-
aws s3 ls s3://runnect-prod-bucket/ 2>&1 || echo "S3 μ ‘κ·Ό μ‹€νŒ¨"
53+
done

β€Žscripts/deploy.shβ€Ž

Lines changed: 24 additions & 77 deletions
Original file line numberDiff line numberDiff line change
@@ -77,87 +77,34 @@ do
7777
sleep 10
7878
done
7979

80-
echo "> Nginx μƒνƒœ 확인"
81-
if ! sudo systemctl is-active --quiet nginx; then
82-
echo "> Nginxκ°€ μ€‘μ§€λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€. μž¬μ‹œμž‘ν•©λ‹ˆλ‹€."
83-
sudo systemctl start nginx
84-
sleep 2
85-
if sudo systemctl is-active --quiet nginx; then
86-
echo "> Nginx μž¬μ‹œμž‘ 성곡"
87-
else
88-
echo "> Nginx μž¬μ‹œμž‘ μ‹€νŒ¨. μƒνƒœ:"
89-
sudo systemctl status nginx
90-
fi
80+
echo "> Nginx μƒνƒœ 확인 및 볡ꡬ"
81+
sudo systemctl stop nginx 2>/dev/null || true
82+
sleep 1
83+
sudo systemctl start nginx
84+
sleep 2
85+
if sudo systemctl is-active --quiet nginx; then
86+
echo "> Nginx μ‹œμž‘ 성곡"
9187
else
92-
echo "> Nginx 정상 ꡬ동 쀑"
88+
echo "> Nginx μ‹œμž‘ μ‹€νŒ¨. κ°•μ œ μž¬μ‹œμž‘ μ‹œλ„..."
89+
sudo killall nginx 2>/dev/null || true
90+
sleep 1
91+
sudo nginx
92+
sleep 2
9393
fi
9494

95+
echo "> λ°©ν™”λ²½ κ·œμΉ™ μ΄ˆκΈ°ν™” (μΈλ°”μš΄λ“œ νŠΈλž˜ν”½ ν—ˆμš©)"
96+
# UFW λΉ„ν™œμ„±ν™”
97+
sudo ufw disable 2>/dev/null || true
98+
99+
# iptables μ΄ˆκΈ°ν™” - λͺ¨λ“  νŠΈλž˜ν”½ ν—ˆμš©
100+
sudo iptables -P INPUT ACCEPT 2>/dev/null || true
101+
sudo iptables -P FORWARD ACCEPT 2>/dev/null || true
102+
sudo iptables -P OUTPUT ACCEPT 2>/dev/null || true
103+
sudo iptables -F 2>/dev/null || true
104+
sudo iptables -X 2>/dev/null || true
105+
95106
echo "> μŠ€μœ„μΉ­"
96107
sleep 10
97108
/home/ubuntu/app/nonstop/switch.sh
98109

99-
echo "> 배포 μ™„λ£Œ. 진단 정보 μˆ˜μ§‘ 쀑..."
100-
101-
DIAG_FILE="/tmp/server-diagnostic-$(date +%Y%m%d-%H%M%S).txt"
102-
{
103-
echo "========== SERVER DIAGNOSTIC =========="
104-
echo "Date: $(date)"
105-
echo ""
106-
107-
echo "=== Public IP (EC2 metadata) ==="
108-
curl -s --connect-timeout 3 http://169.254.169.254/latest/meta-data/public-ipv4 2>/dev/null || echo "메타데이터 μ ‘κ·Ό λΆˆκ°€"
109-
echo ""
110-
111-
echo "=== Network Interfaces ==="
112-
ip addr show 2>/dev/null || ifconfig 2>/dev/null
113-
echo ""
114-
115-
echo "=== Nginx Status ==="
116-
sudo systemctl status nginx 2>&1
117-
echo ""
118-
119-
echo "=== Nginx Config ==="
120-
sudo nginx -T 2>&1
121-
echo ""
122-
123-
echo "=== Listening Ports ==="
124-
sudo ss -tlnp 2>/dev/null || sudo netstat -tlnp 2>/dev/null
125-
echo ""
126-
127-
echo "=== Java Processes ==="
128-
pgrep -a java 2>/dev/null || echo "Java ν”„λ‘œμ„ΈμŠ€ μ—†μŒ"
129-
echo ""
130-
131-
echo "=== iptables Rules ==="
132-
sudo iptables -L -n 2>/dev/null || echo "iptables 쑰회 μ‹€νŒ¨"
133-
echo ""
134-
135-
echo "=== Localhost Health Check ==="
136-
curl -s http://localhost:8081/actuator/health 2>/dev/null
137-
echo ""
138-
curl -s http://localhost:8082/actuator/health 2>/dev/null
139-
echo ""
140-
curl -s http://localhost/actuator/health 2>/dev/null
141-
echo ""
142-
curl -s http://localhost/profile 2>/dev/null
143-
echo ""
144-
145-
echo "=== Disk Usage ==="
146-
df -h 2>/dev/null
147-
echo ""
148-
149-
echo "=== Memory Usage ==="
150-
free -h 2>/dev/null
151-
echo ""
152-
153-
echo "=== nohup.out (last 50 lines) ==="
154-
tail -50 /home/ubuntu/app/nohup.out 2>/dev/null || echo "nohup.out μ—†μŒ"
155-
echo ""
156-
157-
echo "========== END DIAGNOSTIC =========="
158-
} > "$DIAG_FILE" 2>&1
159-
160-
echo "> 진단 κ²°κ³Όλ₯Ό S3에 μ—…λ‘œλ“œ..."
161-
aws s3 cp "$DIAG_FILE" s3://runnect-prod-bucket/diagnostics/$(basename "$DIAG_FILE") 2>&1 || echo "> S3 μ—…λ‘œλ“œ μ‹€νŒ¨"
162-
163-
echo "> 진단 μ™„λ£Œ"
110+
echo "> 배포 μ™„λ£Œ"

0 commit comments

Comments
Β (0)