forked from denoland/denokv
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmanage-services.sh
More file actions
executable file
·139 lines (118 loc) · 4.22 KB
/
manage-services.sh
File metadata and controls
executable file
·139 lines (118 loc) · 4.22 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
137
138
139
#!/bin/bash
# Service management script for DenoKV on Rocky Linux
set -e
# Colors for output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m'
print_status() { echo -e "${BLUE}[INFO]${NC} $1"; }
print_success() { echo -e "${GREEN}[SUCCESS]${NC} $1"; }
print_warning() { echo -e "${YELLOW}[WARNING]${NC} $1"; }
print_error() { echo -e "${RED}[ERROR]${NC} $1"; }
case "${1:-help}" in
start)
print_status "Starting all services..."
# Start PostgreSQL service
print_status "Starting PostgreSQL service..."
sudo systemctl start postgresql
# Wait for PostgreSQL
until sudo -u postgres pg_isready; do
echo "Waiting for PostgreSQL..."
sleep 2
done
print_success "PostgreSQL service started"
# Start DenoKV server
print_status "Starting DenoKV server..."
source ~/.cargo/env
source .env 2>/dev/null || true
if pgrep -f "denokv.*serve" > /dev/null; then
print_warning "DenoKV server is already running"
else
nohup cargo run --release -- serve --addr 0.0.0.0:4512 > denokv.log 2>&1 &
sleep 2
if pgrep -f "denokv.*serve" > /dev/null; then
print_success "DenoKV server started"
else
print_error "Failed to start DenoKV server"
fi
fi
;;
stop)
print_status "Stopping DenoKV server..."
# Stop DenoKV server only
if pgrep -f "denokv.*serve" > /dev/null; then
pkill -f "denokv.*serve"
print_success "DenoKV server stopped"
else
print_warning "DenoKV server was not running"
fi
print_status "PostgreSQL service remains running (persistent)"
;;
restart)
$0 stop
sleep 2
$0 start
;;
stop-postgres)
print_status "Stopping PostgreSQL service..."
sudo systemctl stop postgresql
print_success "PostgreSQL service stopped"
print_warning "Note: DenoKV server will not work without PostgreSQL"
;;
start-postgres)
print_status "Starting PostgreSQL service..."
sudo systemctl start postgresql
until sudo -u postgres pg_isready; do
echo "Waiting for PostgreSQL..."
sleep 2
done
print_success "PostgreSQL service started"
;;
status)
print_status "Service Status:"
echo ""
# Check PostgreSQL service
if systemctl is-active --quiet postgresql; then
print_success "PostgreSQL Service: Running"
else
print_warning "PostgreSQL Service: Stopped"
fi
# Check DenoKV server
if pgrep -f "denokv.*serve" > /dev/null; then
print_success "DenoKV Server: Running (PID: $(pgrep -f 'denokv.*serve'))"
else
print_warning "DenoKV Server: Stopped"
fi
# Check port 4512
if netstat -tlnp 2>/dev/null | grep -q ":4512 "; then
print_success "Port 4512: Open"
else
print_warning "Port 4512: Closed"
fi
;;
logs)
if [ -f "denokv.log" ]; then
tail -f denokv.log
else
print_warning "No log file found"
fi
;;
*)
echo "DenoKV Service Manager"
echo "Usage: $0 {start|stop|restart|status|logs|start-postgres|stop-postgres}"
echo ""
echo "Commands:"
echo " start - Start DenoKV server (PostgreSQL must be running)"
echo " stop - Stop DenoKV server only (PostgreSQL stays running)"
echo " restart - Restart DenoKV server only"
echo " status - Show service status"
echo " logs - Show DenoKV server logs"
echo " start-postgres - Start PostgreSQL service"
echo " stop-postgres - Stop PostgreSQL service (use with caution)"
echo ""
echo "Note: PostgreSQL runs as a persistent system service"
echo " DenoKV server can be started/stopped independently"
;;
esac