Изменения документа Установка SQL REST Proxy сервиса

Редактировал(а) PROSTO:СКУД 2026/09/16 13:37

От версии 11.1
отредактировано PROSTO:СКУД
на 2026/07/22 08:30
Изменить комментарий: К данной версии нет комментариев
К версии 12.1
отредактировано PROSTO:СКУД
на 2026/07/22 08:43
Изменить комментарий: К данной версии нет комментариев

Сводка

Подробности

Свойства страницы
Содержимое
... ... @@ -173,6 +173,11 @@
173 173  
174 174  И переместите его в каталог /etc/sql-proxy/certs
175 175  
176 +Далее запустим скрипт `generate_certs.sh` и назначим права на созданные файлы сертификатов
177 +># sudo chown root:sqlproxy /etc/sql-proxy/certs/key.pem /etc/sql-proxy/certs/cert.pem
178 +># sudo chmod 640 /etc/sql-proxy/certs/key.pem
179 +># sudo chmod 644 /etc/sql-proxy/certs/cert.pem
180 +
176 176  === 3.4 Создание виртуального окружения===
177 177  
178 178  ># sudo python3 -m venv /opt/sql-proxy/venv
... ... @@ -195,4 +195,109 @@
195 195  ># sudo /opt/sql-proxy/venv/bin/python -c "import fastapi, uvicorn, sqlalchemy, psycopg2, pymssql, pymysql; print('OK')"
196 196  
197 197  
198 -
203 +3.6 Настройка конфигурации
204 +
205 +В проекте есть `.env.example`. Для промышленного сервера лучше хранить конфигурацию в `/etc/sql-proxy/sql-proxy.env`, а не в каталоге приложения.
206 +
207 +Создайте файл:
208 +
209 +># sudo nano /etc/sql-proxy/sql-proxy.env
210 +
211 +И перенестите в него содержимое из примера (`.env.example`) либо заполните свое:
212 +># API Key для аутентификации запросов
213 +># API_KEY=skud_proxy_19e1d5c545b55bdb3459281bd3a1c06a29c467c5645b3ceb748bb2589a5e0d46
214 +
215 +>## Ограничения
216 +># MAX_ROWS_LIMIT=10000
217 +># DEFAULT_ROWS_LIMIT=1000
218 +
219 +>## Пул соединений
220 +># POOL_SIZE=10
221 +># MAX_OVERFLOW=20
222 +># POOL_TIMEOUT=30
223 +># POOL_RECYCLE=3600
224 +># POOL_PRE_PING=true
225 +
226 +>## Таймауты
227 +># QUERY_TIMEOUT=300
228 +># CONNECTION_TIMEOUT=30
229 +
230 +>## SSL/TLS
231 +># SSL_ENABLED=true
232 +># SSL_CERTFILE=/app/certs/cert.pem
233 +># SSL_KEYFILE=/app/certs/key.pem
234 +
235 +>## Сервис
236 +># SERVICE_PORT=8443
237 +># PROMETHEUS_PORT=9090
238 +
239 +Далее назначим права:
240 +
241 +># sudo chown root:sqlproxy /etc/sql-proxy/sql-proxy.env
242 +># sudo chmod 640 /etc/sql-proxy/sql-proxy.env
243 +
244 +3.6 Настройка запуска через systemd
245 +
246 +Создадим unit:
247 +
248 +># sudo nano /etc/systemd/system/sql-proxy.service
249 +
250 +Содержимое файла:
251 +
252 +
253 +># [Unit]
254 +># Description=P-SKUD SQL REST Proxy Service
255 +># After=network-online.target
256 +># Wants=network-online.target
257 +
258 +[Service]
259 +Type=simple
260 +User=sqlproxy
261 +Group=sqlproxy
262 +
263 +WorkingDirectory=/opt/sql-proxy
264 +EnvironmentFile=/etc/sql-proxy/sql-proxy.env
265 +Environment=PYTHONUNBUFFERED=1
266 +
267 +ExecStart=/opt/sql-proxy/venv/bin/uvicorn app.main:app --host **IP_ВАШЕГО_СЕРВЕРА** --port 8443 --ssl-keyfile /etc/sql-proxy/certs/key.pem --ssl-certfile /etc/sql-proxy/certs/cert.pem
268 +
269 +Restart=on-failure
270 +RestartSec=5
271 +TimeoutStartSec=30
272 +TimeoutStopSec=30
273 +
274 +NoNewPrivileges=true
275 +PrivateTmp=true
276 +ProtectHome=true
277 +ProtectSystem=strict
278 +ProtectKernelTunables=true
279 +ProtectKernelModules=true
280 +ProtectControlGroups=true
281 +RestrictSUIDSGID=true
282 +LockPersonality=true
283 +UMask=0027
284 +
285 +ReadWritePaths=/var/lib/sql-proxy /var/log/sql-proxy
286 +ReadOnlyPaths=/etc/sql-proxy /opt/sql-proxy
287 +
288 +StandardOutput=journal
289 +StandardError=journal
290 +
291 +[Install]
292 +WantedBy=multi-user.target
293 +```
294 +
295 +Включить службу:
296 +
297 +```bash
298 +sudo systemctl daemon-reload
299 +sudo systemctl enable --now sql-proxy
300 +```
301 +
302 +Проверить:
303 +
304 +```bash
305 +sudo systemctl status sql-proxy
306 +
307 +
308 +