-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsetup-wsl.sh
More file actions
191 lines (164 loc) · 5.63 KB
/
Copy pathsetup-wsl.sh
File metadata and controls
191 lines (164 loc) · 5.63 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
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
#!/bin/bash
# Script de setup para Pike Style API no WSL2/Debian
set -e
echo "🚀 Configurando Pike Style API no WSL2/Debian..."
# Atualizar sistema
echo "📦 Atualizando sistema..."
sudo apt-get update
# Instalar dependências básicas
echo "🔧 Instalando ferramentas básicas..."
sudo apt-get install -y \
build-essential \
gcc \
make \
pkg-config \
curl \
wget \
git
# Instalar PostgreSQL
echo "🐘 Instalando PostgreSQL..."
sudo apt-get install -y \
postgresql \
postgresql-contrib \
postgresql-client \
libpq-dev
# Instalar libcjson
echo "📄 Instalando libcjson..."
sudo apt-get install -y libcjson-dev
# Verificar instalações
echo "✅ Verificando instalações..."
# Verificar GCC
if gcc --version > /dev/null 2>&1; then
echo "✓ GCC: $(gcc --version | head -n1)"
else
echo "✗ GCC não encontrado"
exit 1
fi
# Verificar pkg-config
if pkg-config --version > /dev/null 2>&1; then
echo "✓ pkg-config: $(pkg-config --version)"
else
echo "✗ pkg-config não encontrado"
exit 1
fi
# Verificar PostgreSQL dev
if pg_config --version > /dev/null 2>&1; then
echo "✓ PostgreSQL dev: $(pg_config --version)"
else
echo "✗ PostgreSQL dev não encontrado"
exit 1
fi
# Verificar libpq
if pkg-config --exists libpq; then
echo "✓ libpq: $(pkg-config --modversion libpq)"
echo " - Include: $(pkg-config --cflags libpq)"
echo " - Libs: $(pkg-config --libs libpq)"
else
echo "⚠️ libpq não encontrado via pkg-config, verificando manualmente..."
if find /usr -name "libpq-fe.h" 2>/dev/null | head -1; then
echo "✓ libpq-fe.h encontrado em: $(find /usr -name "libpq-fe.h" 2>/dev/null | head -1)"
else
echo "✗ libpq-fe.h não encontrado"
exit 1
fi
fi
# Verificar libcjson
if pkg-config --exists libcjson; then
echo "✓ libcjson: $(pkg-config --modversion libcjson)"
echo " - Include: $(pkg-config --cflags libcjson)"
echo " - Libs: $(pkg-config --libs libcjson)"
else
echo "⚠️ libcjson não encontrado via pkg-config, verificando manualmente..."
if find /usr -name "cjson.h" 2>/dev/null | head -1; then
echo "✓ cjson.h encontrado em: $(find /usr -name "cjson.h" 2>/dev/null | head -1)"
else
echo "✗ cjson.h não encontrado"
exit 1
fi
fi
# Configurar PostgreSQL
echo "🔐 Configurando PostgreSQL..."
# Verificar se PostgreSQL está rodando
if ! sudo systemctl is-active --quiet postgresql; then
echo "📍 Iniciando PostgreSQL..."
sudo systemctl start postgresql
sudo systemctl enable postgresql
fi
# Criar banco e usuário
echo "🗄️ Configurando banco de dados..."
sudo -u postgres psql -c "SELECT 1" > /dev/null 2>&1 || {
echo "✗ Erro ao conectar no PostgreSQL"
exit 1
}
# Criar banco apidb se não existir
sudo -u postgres psql -lqt | cut -d \| -f 1 | grep -qw apidb || {
echo "📊 Criando banco apidb..."
sudo -u postgres createdb apidb
}
# Criar usuário se não existir
sudo -u postgres psql -c "SELECT 1 FROM pg_roles WHERE rolname='apiuser'" | grep -q 1 || {
echo "👤 Criando usuário apiuser..."
sudo -u postgres psql -c "CREATE USER apiuser WITH PASSWORD 'apipass';"
}
# Conceder privilégios
echo "🔑 Configurando permissões..."
sudo -u postgres psql -c "GRANT ALL PRIVILEGES ON DATABASE apidb TO apiuser;"
# Testar conexão
echo "🧪 Testando conexão com banco..."
if PGPASSWORD=apipass psql -h localhost -U apiuser -d apidb -c "SELECT 1;" > /dev/null 2>&1; then
echo "✓ Conexão com banco funcionando"
else
echo "⚠️ Problema na conexão, verificando configuração..."
# Verificar se precisa configurar autenticação
sudo sed -i "s/#listen_addresses = 'localhost'/listen_addresses = 'localhost'/g" /etc/postgresql/*/main/postgresql.conf 2>/dev/null || true
# Adicionar linha de autenticação local se necessário
PG_VERSION=$(sudo -u postgres psql -c "SHOW server_version;" | grep -o '[0-9]\+' | head -1)
HBA_FILE="/etc/postgresql/$PG_VERSION/main/pg_hba.conf"
if [ -f "$HBA_FILE" ]; then
sudo cp "$HBA_FILE" "$HBA_FILE.backup"
echo "local apidb apiuser md5" | sudo tee -a "$HBA_FILE" > /dev/null
echo "host apidb apiuser 127.0.0.1/32 md5" | sudo tee -a "$HBA_FILE" > /dev/null
sudo systemctl restart postgresql
sleep 2
if PGPASSWORD=apipass psql -h localhost -U apiuser -d apidb -c "SELECT 1;" > /dev/null 2>&1; then
echo "✓ Conexão com banco funcionando após configuração"
else
echo "✗ Ainda há problema na conexão do banco"
fi
fi
fi
# Criar arquivo de configuração para VS Code
echo "🔧 Configurando VS Code..."
mkdir -p .vscode
cat > .vscode/c_cpp_properties.json << 'EOF'
{
"configurations": [
{
"name": "Linux",
"includePath": [
"${workspaceFolder}/**",
"/usr/include/**",
"/usr/include/postgresql/**",
"/usr/include/cjson/**"
],
"defines": [
"_GNU_SOURCE"
],
"compilerPath": "/usr/bin/gcc",
"cStandard": "c99",
"cppStandard": "c++17",
"intelliSenseMode": "linux-gcc-x64"
}
],
"version": 4
}
EOF
echo "✅ Configuração concluída!"
echo ""
echo "🎯 Próximos passos:"
echo "1. Compile o projeto: make"
echo "2. Execute o servidor: ./api_server"
echo "3. Teste a API: make test"
echo ""
echo "🔍 Para debug, use: make debug"
echo "🧪 Para verificar dependências: make check-deps"