forked from moulongzhang/2025-Github-Copilot-Workshop-Python
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathserver_manager.sh
More file actions
executable file
·136 lines (119 loc) · 3.51 KB
/
Copy pathserver_manager.sh
File metadata and controls
executable file
·136 lines (119 loc) · 3.51 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
#!/bin/bash
# ポモドーロタイマーサーバー管理スクリプト
APP_NAME="ポモドーロタイマー"
APP_DIR="/workspaces/2025-Github-Copilot-Workshop-Python"
PID_FILE="$APP_DIR/server.pid"
LOG_FILE="$APP_DIR/server.log"
# 色の定義
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
RED='\033[0;31m'
BLUE='\033[0;34m'
NC='\033[0m'
# 使用方法を表示
usage() {
echo -e "${BLUE}使用方法:${NC}"
echo " $0 {start|stop|restart|status|logs}"
echo ""
echo -e "${BLUE}コマンド:${NC}"
echo " start - サーバーを開始"
echo " stop - サーバーを停止"
echo " restart - サーバーを再起動"
echo " status - サーバーの状態を確認"
echo " logs - サーバーログを表示"
}
# サーバー開始
start_server() {
if [ -f "$PID_FILE" ] && kill -0 $(cat "$PID_FILE") 2>/dev/null; then
echo -e "${YELLOW}$APP_NAME は既に動作中です (PID: $(cat $PID_FILE))${NC}"
return 1
fi
echo -e "${GREEN}$APP_NAME を開始中...${NC}"
cd "$APP_DIR"
# バックグラウンドでサーバーを起動
nohup .venv/bin/python app.py > "$LOG_FILE" 2>&1 &
echo $! > "$PID_FILE"
sleep 2
if kill -0 $(cat "$PID_FILE") 2>/dev/null; then
echo -e "${GREEN}✅ $APP_NAME が正常に開始されました (PID: $(cat $PID_FILE))${NC}"
echo ""
echo -e "${GREEN}🌐 アクセスURL:${NC}"
echo " • ローカル: http://127.0.0.1:8000"
echo " • ネットワーク: http://10.0.3.246:8000"
else
echo -e "${RED}❌ $APP_NAME の開始に失敗しました${NC}"
rm -f "$PID_FILE"
return 1
fi
}
# サーバー停止
stop_server() {
if [ ! -f "$PID_FILE" ]; then
echo -e "${YELLOW}$APP_NAME は動作していません${NC}"
return 1
fi
PID=$(cat "$PID_FILE")
if kill -0 "$PID" 2>/dev/null; then
echo -e "${YELLOW}$APP_NAME を停止中... (PID: $PID)${NC}"
kill "$PID"
sleep 2
if kill -0 "$PID" 2>/dev/null; then
echo -e "${RED}強制停止中...${NC}"
kill -9 "$PID"
fi
echo -e "${GREEN}✅ $APP_NAME が停止されました${NC}"
else
echo -e "${YELLOW}プロセス $PID は見つかりません${NC}"
fi
rm -f "$PID_FILE"
}
# サーバー状態確認
check_status() {
if [ -f "$PID_FILE" ] && kill -0 $(cat "$PID_FILE") 2>/dev/null; then
PID=$(cat "$PID_FILE")
echo -e "${GREEN}✅ $APP_NAME は動作中です (PID: $PID)${NC}"
echo ""
echo -e "${BLUE}アクセスURL:${NC}"
echo " • ローカル: http://127.0.0.1:8000"
echo " • ネットワーク: http://10.0.3.246:8000"
return 0
else
echo -e "${RED}❌ $APP_NAME は停止中です${NC}"
[ -f "$PID_FILE" ] && rm -f "$PID_FILE"
return 1
fi
}
# ログ表示
show_logs() {
if [ -f "$LOG_FILE" ]; then
echo -e "${BLUE}$APP_NAME ログ (最新20行):${NC}"
echo "================================="
tail -20 "$LOG_FILE"
else
echo -e "${YELLOW}ログファイルが見つかりません${NC}"
fi
}
# メイン処理
case "$1" in
start)
start_server
;;
stop)
stop_server
;;
restart)
stop_server
sleep 1
start_server
;;
status)
check_status
;;
logs)
show_logs
;;
*)
usage
exit 1
;;
esac