/
opt
/
canhelp
/
scripts
/
/opt/canhelp/scripts
mkdir
upload
Name
Size
Mode
Actions
backup.sh
3132
0755
edit
dl
rm
deploy-no-install.sh
4130
0755
edit
dl
rm
deploy.sh
4948
0755
edit
dl
rm
health-check.sh
2805
0755
edit
dl
rm
install.sh
2650
0755
edit
dl
rm
restart.sh
1478
0755
edit
dl
rm
submit-sitemap.mjs
1854
0644
edit
dl
rm
Edit:
/opt/canhelp/scripts/deploy-no-install.sh
(4130B)
#!/usr/bin/env bash # ============================================================================= # deploy-no-install.sh — быстрый деплой без npm install # Использование: # scripts/deploy-no-install.sh — git pull + сборка + миграции + перезапуск # ============================================================================= set -euo pipefail APP_DIR="/opt/canhelp" BRANCH="master" ENV_FILE="$APP_DIR/.env" LOG_FILE="$APP_DIR/deploy.log" TIMESTAMP=$(date '+%Y-%m-%d %H:%M:%S') mkdir -p "$APP_DIR" : > "$LOG_FILE" log() { echo "[$TIMESTAMP] $*" | tee -a "$LOG_FILE"; } log "====== DEPLOY (no-install) START ======" if [[ ! -f "$ENV_FILE" ]]; then echo "ОШИБКА: $ENV_FILE не найден." exit 1 fi # ─── 1. git pull ───────────────────────────────────────────────────────────── log "[1/5] Обновление репозитория (git pull)" cd "$APP_DIR" git fetch origin "$BRANCH" git reset --hard "FETCH_HEAD" # ─── 2. Docker (PostgreSQL + Redis) ─────────────────────────────────────── log "[2/5] Запуск Docker-сервисов" docker compose up -d postgres redis --quiet-pull for i in {1..30}; do docker compose exec -T postgres pg_isready -U canhelp -d canhelp >/dev/null 2>&1 && break sleep 2 done if ! docker compose exec -T postgres pg_isready -U canhelp -d canhelp >/dev/null 2>&1; then log "ОШИБКА: PostgreSQL не стал доступен после запуска контейнера." exit 1 fi # ─── 3. Миграции ───────────────────────────────────────────────────────────── log "[3/5] Миграции базы данных" set -a; source "$ENV_FILE"; set +a export DB_HOST="${DB_HOST:-127.0.0.1}" export DB_PORT="${DB_PORT:-5433}" export DB_NAME="${DB_NAME:-canhelp}" export DB_USER="${DB_USER:-canhelp}" export DB_PASSWORD="${DB_PASSWORD:-canhelp}" export DATABASE_URL="postgresql://${DB_USER}:${DB_PASSWORD}@${DB_HOST}:${DB_PORT}/${DB_NAME}" export PGHOST="${DB_HOST}" export PGPORT="${DB_PORT}" export PGDATABASE="${DB_NAME}" export PGUSER="${DB_USER}" export PGPASSWORD="${DB_PASSWORD}" DRIZZLE_BIN="$APP_DIR/node_modules/.bin/drizzle-kit" [[ ! -f "$DRIZZLE_BIN" ]] && DRIZZLE_BIN="$APP_DIR/packages/db/node_modules/.bin/drizzle-kit" (cd "$APP_DIR/packages/db" && "$DRIZZLE_BIN" migrate) # ─── 4. Сборка Web ─────────────────────────────────────────────────────────── log "[4/5] Сборка Web" if [[ -f "$APP_DIR/apps/web/.env.local" ]]; then log "[3/5] ВНИМАНИЕ: найден apps/web/.env.local, временно отключаю его для production build" mv "$APP_DIR/apps/web/.env.local" "$APP_DIR/apps/web/.env.local.bak" fi (cd "$APP_DIR/apps/web" && "$APP_DIR/node_modules/.bin/next" build) if [[ -f "$APP_DIR/apps/web/.env.local.bak" ]]; then mv "$APP_DIR/apps/web/.env.local.bak" "$APP_DIR/apps/web/.env.local" fi # ─── 5. Директории ─────────────────────────────────────────────────────────── mkdir -p "$APP_DIR/apps/api/uploads" # ─── 6. Перезапуск PM2 ─────────────────────────────────────────────────────── log "[5/5] Перезапуск PM2" if pm2 list | grep -q "canhelp"; then pm2 reload ecosystem.config.js --update-env else pm2 start ecosystem.config.js pm2 save fi log "====== DEPLOY DONE ======" echo "" echo "✓ Быстрый деплой завершён. Проверьте статус: pm2 status"
Save
cmd:
run