49 lines
1.6 KiB
Bash
Executable File
49 lines
1.6 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
BASE_DIR="${1:-/opt/domaincheck}"
|
|
API_DIR="$BASE_DIR/domain-api"
|
|
WEB_DIR="$BASE_DIR/domain-web"
|
|
RUNTIME_DIR="$API_DIR/runtime"
|
|
SERVICE_NAME="domaincheck-api"
|
|
ENV_FILE="/etc/default/domaincheck-api"
|
|
TEMPLATE_FILE="$API_DIR/deploy/multi-region/templates/domaincheck-api.env.example"
|
|
|
|
echo "[1/6] preparing directories"
|
|
mkdir -p "$BASE_DIR" "$API_DIR" "$WEB_DIR" "$RUNTIME_DIR"
|
|
|
|
echo "[2/6] checking python environment"
|
|
if [ ! -x "$BASE_DIR/domainCheck/.venv/bin/python" ]; then
|
|
echo "missing python venv: $BASE_DIR/domainCheck/.venv/bin/python"
|
|
echo "please deploy domainCheck first and create .venv there"
|
|
exit 1
|
|
fi
|
|
|
|
echo "[3/6] installing api dependencies"
|
|
"$BASE_DIR/domainCheck/.venv/bin/pip" install -q fastapi uvicorn pydantic-settings psycopg2-binary redis openpyxl python-multipart
|
|
|
|
echo "[4/6] installing systemd service"
|
|
install -m 0644 "$API_DIR/deploy/systemd/domain-api.service" "/etc/systemd/system/${SERVICE_NAME}.service"
|
|
|
|
echo "[4.5/6] preparing environment file"
|
|
if [ ! -f "$ENV_FILE" ]; then
|
|
install -m 0644 "$TEMPLATE_FILE" "$ENV_FILE"
|
|
sed -i "s#__BASE_DIR__#${BASE_DIR}#g" "$ENV_FILE"
|
|
chmod 0644 "$ENV_FILE"
|
|
echo "created env template: $ENV_FILE"
|
|
else
|
|
echo "env file already exists: $ENV_FILE"
|
|
fi
|
|
|
|
echo "[5/6] reloading systemd"
|
|
systemctl daemon-reload
|
|
|
|
echo "[6/6] summary"
|
|
echo "overseas bootstrap completed"
|
|
echo "service: ${SERVICE_NAME}"
|
|
echo "next commands:"
|
|
echo " systemctl enable ${SERVICE_NAME}"
|
|
echo " systemctl restart ${SERVICE_NAME}"
|
|
echo " systemctl status ${SERVICE_NAME} --no-pager -l"
|
|
echo " vi ${ENV_FILE}"
|