-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsetup-nginx.sh
More file actions
executable file
·160 lines (137 loc) · 4.71 KB
/
setup-nginx.sh
File metadata and controls
executable file
·160 lines (137 loc) · 4.71 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
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
#!/bin/bash
###############################################################################
# Setup nginx configuration for LLM Performance Test Platform
###############################################################################
set -e
# Colors
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m'
# Check if running as root
if [ "$EUID" -ne 0 ]; then
echo -e "${RED}Please run as root (sudo ./setup-nginx.sh)${NC}"
exit 1
fi
# Configuration
INSTALL_DIR=${INSTALL_DIR:-$(pwd)}
BACKEND_PORT=${BACKEND_PORT:-8000}
DOMAIN=${DOMAIN:-localhost}
SSL_ENABLED=${SSL_ENABLED:-false}
echo -e "${GREEN}Setting up nginx configuration...${NC}"
echo "Install Directory: $INSTALL_DIR"
echo "Backend Port: $BACKEND_PORT"
echo "Domain: $DOMAIN"
echo "SSL Enabled: $SSL_ENABLED"
echo ""
# Create nginx configuration
if [ "$SSL_ENABLED" = "true" ]; then
cat > /etc/nginx/sites-available/llm-perf-platform <<EOF
server {
listen 80;
server_name $DOMAIN;
# Redirect HTTP to HTTPS
return 301 https://\$server_name\$request_uri;
}
server {
listen 443 ssl http2;
server_name $DOMAIN;
# SSL configuration
ssl_certificate /etc/ssl/certs/llm-perf-platform.crt;
ssl_certificate_key /etc/ssl/private/llm-perf-platform.key;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
# Frontend - serve built static files
location / {
root $INSTALL_DIR/frontend/dist;
try_files \$uri \$uri/ /index.html;
}
# Backend API
location /api/ {
proxy_pass http://localhost:$BACKEND_PORT/api/;
proxy_http_version 1.1;
proxy_set_header Upgrade \$http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host \$host;
proxy_set_header X-Real-IP \$remote_addr;
proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto \$scheme;
proxy_cache_bypass \$http_upgrade;
# Increase timeouts for long-running requests
proxy_connect_timeout 300s;
proxy_send_timeout 300s;
proxy_read_timeout 300s;
}
# Logs
access_log /var/log/nginx/llm-perf-platform-access.log;
error_log /var/log/nginx/llm-perf-platform-error.log;
}
EOF
echo -e "${YELLOW}SSL is enabled. Please ensure SSL certificates are placed at:${NC}"
echo " Certificate: /etc/ssl/certs/llm-perf-platform.crt"
echo " Private Key: /etc/ssl/private/llm-perf-platform.key"
echo ""
echo "To generate self-signed certificates for testing:"
echo " sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \\"
echo " -keyout /etc/ssl/private/llm-perf-platform.key \\"
echo " -out /etc/ssl/certs/llm-perf-platform.crt"
echo ""
else
cat > /etc/nginx/sites-available/llm-perf-platform <<EOF
server {
listen 80;
server_name $DOMAIN;
# Frontend - serve built static files
location / {
root $INSTALL_DIR/frontend/dist;
try_files \$uri \$uri/ /index.html;
}
# Backend API
location /api/ {
proxy_pass http://localhost:$BACKEND_PORT/api/;
proxy_http_version 1.1;
proxy_set_header Upgrade \$http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host \$host;
proxy_set_header X-Real-IP \$remote_addr;
proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto \$scheme;
proxy_cache_bypass \$http_upgrade;
# Increase timeouts for long-running requests
proxy_connect_timeout 300s;
proxy_send_timeout 300s;
proxy_read_timeout 300s;
}
# Logs
access_log /var/log/nginx/llm-perf-platform-access.log;
error_log /var/log/nginx/llm-perf-platform-error.log;
}
EOF
fi
# Enable the site
ln -sf /etc/nginx/sites-available/llm-perf-platform /etc/nginx/sites-enabled/
# Test nginx configuration
echo -e "${GREEN}Testing nginx configuration...${NC}"
nginx -t
# Reload nginx
echo -e "${GREEN}Reloading nginx...${NC}"
systemctl reload nginx
echo -e "${GREEN}========================================${NC}"
echo -e "${GREEN}Nginx configuration completed!${NC}"
echo -e "${GREEN}========================================${NC}"
echo ""
echo "Your application should now be accessible at:"
if [ "$SSL_ENABLED" = "true" ]; then
echo " https://$DOMAIN"
else
echo " http://$DOMAIN"
fi
echo ""
echo "Nginx commands:"
echo " Test config: sudo nginx -t"
echo " Reload: sudo systemctl reload nginx"
echo " Restart: sudo systemctl restart nginx"
echo " Status: sudo systemctl status nginx"
echo " Access logs: sudo tail -f /var/log/nginx/llm-perf-platform-access.log"
echo " Error logs: sudo tail -f /var/log/nginx/llm-perf-platform-error.log"
echo ""