madibaalbert commited on
Commit
eff6515
·
verified ·
1 Parent(s): 8a9ab52

Update init.sh

Browse files
Files changed (1) hide show
  1. init.sh +36 -9
init.sh CHANGED
@@ -15,15 +15,11 @@ eval "$(rbenv init - bash)"
15
  echo "[0/8] Correction des permissions sur /data..."
16
  mkdir -p /data/postgresql /data/redis /data/mastodon/public/system /data/mastodon/tmp
17
 
18
- # PostgreSQL : chown -R avec erreurs FUSE ignorees
19
  chown -R postgres:postgres /data/postgresql 2>/dev/null || true
20
  chmod 700 /data/postgresql 2>/dev/null || true
21
-
22
- # Redis / Mastodon
23
  chown -R redis:redis /data/redis
24
  chown -R mastodon:mastodon /data/mastodon
25
 
26
- # Socket & log PG
27
  mkdir -p /var/run/postgresql /var/log/postgresql
28
  chown postgres:postgres /var/run/postgresql /var/log/postgresql
29
 
@@ -38,14 +34,17 @@ if [ -f /data/postgresql/postmaster.pid ]; then
38
  fi
39
 
40
  # ---------------------------------------------------------------------------
41
- # 2. Initialisation PostgreSQL si premier demarrage
42
  # ---------------------------------------------------------------------------
43
  NEED_INIT=false
 
 
44
  if [ ! -f /data/postgresql/PG_VERSION ]; then
45
  echo "[2/8] Premier demarrage detecte."
46
  NEED_INIT=true
47
  fi
48
 
 
49
  if [ -f /data/postgresql/.force_reinit ]; then
50
  echo "[2/8] Reinitialisation forcee demandee."
51
  rm -rf /data/postgresql/*
@@ -53,6 +52,19 @@ if [ -f /data/postgresql/.force_reinit ]; then
53
  NEED_INIT=true
54
  fi
55
 
 
 
 
 
 
 
 
 
 
 
 
 
 
56
  if [ "$NEED_INIT" = "true" ]; then
57
  echo " Initialisation de PostgreSQL..."
58
  su - postgres -c "/usr/lib/postgresql/15/bin/initdb -D /data/postgresql --locale=C --encoding=UTF8"
@@ -61,12 +73,19 @@ if [ "$NEED_INIT" = "true" ]; then
61
  mkdir -p /var/run/postgresql
62
  chown postgres:postgres /var/run/postgresql
63
 
64
- # Demarrage direct (pas pg_ctl -l sur FUSE)
65
  su - postgres -c "/usr/lib/postgresql/15/bin/postgres -D /data/postgresql &"
66
  PG_PID=$!
67
  sleep 3
 
 
68
  until su - postgres -c "psql -c '\\q'" >/dev/null 2>&1; do
69
- echo " Attente de PostgreSQL..."
 
 
 
 
 
 
70
  sleep 1
71
  done
72
 
@@ -80,7 +99,7 @@ if [ "$NEED_INIT" = "true" ]; then
80
  wait $PG_PID 2>/dev/null || true
81
  echo " PostgreSQL initialise."
82
  else
83
- echo "[2/8] PostgreSQL deja initialise."
84
  fi
85
 
86
  # ---------------------------------------------------------------------------
@@ -207,8 +226,16 @@ echo "[6/8] Demarrage temporaire de PostgreSQL..."
207
  su - postgres -c "/usr/lib/postgresql/15/bin/postgres -D /data/postgresql &"
208
  PG_PID=$!
209
  sleep 3
 
 
210
  until su - postgres -c "psql -c '\\q'" >/dev/null 2>&1; do
211
- echo " Attente de PostgreSQL..."
 
 
 
 
 
 
212
  sleep 1
213
  done
214
  echo " PostgreSQL pret."
 
15
  echo "[0/8] Correction des permissions sur /data..."
16
  mkdir -p /data/postgresql /data/redis /data/mastodon/public/system /data/mastodon/tmp
17
 
 
18
  chown -R postgres:postgres /data/postgresql 2>/dev/null || true
19
  chmod 700 /data/postgresql 2>/dev/null || true
 
 
20
  chown -R redis:redis /data/redis
21
  chown -R mastodon:mastodon /data/mastodon
22
 
 
23
  mkdir -p /var/run/postgresql /var/log/postgresql
24
  chown postgres:postgres /var/run/postgresql /var/log/postgresql
25
 
 
34
  fi
35
 
36
  # ---------------------------------------------------------------------------
37
+ # 2. Vérification / réinitialisation PostgreSQL
38
  # ---------------------------------------------------------------------------
39
  NEED_INIT=false
40
+
41
+ # Si PG_VERSION absent → premier boot
42
  if [ ! -f /data/postgresql/PG_VERSION ]; then
43
  echo "[2/8] Premier demarrage detecte."
44
  NEED_INIT=true
45
  fi
46
 
47
+ # Si force_reinit présent → réinit demandée manuellement
48
  if [ -f /data/postgresql/.force_reinit ]; then
49
  echo "[2/8] Reinitialisation forcee demandee."
50
  rm -rf /data/postgresql/*
 
52
  NEED_INIT=true
53
  fi
54
 
55
+ # Si fichiers critiques manquants → corruption detectee, on reinit
56
+ if [ "$NEED_INIT" = "false" ]; then
57
+ for critical in pg_notify pg_wal pg_commit_ts pg_dynshmem pg_logical pg_replslot pg_serial pg_snapshots pg_stat pg_stat_tmp pg_subtrans pg_tblspc pg_twophase global base; do
58
+ if [ ! -d "/data/postgresql/$critical" ]; then
59
+ echo "[2/8] CORRUPTION DETECTEE : repertoire '$critical' manquant."
60
+ echo " Suppression et reinitialisation de PostgreSQL..."
61
+ rm -rf /data/postgresql/*
62
+ NEED_INIT=true
63
+ break
64
+ fi
65
+ done
66
+ fi
67
+
68
  if [ "$NEED_INIT" = "true" ]; then
69
  echo " Initialisation de PostgreSQL..."
70
  su - postgres -c "/usr/lib/postgresql/15/bin/initdb -D /data/postgresql --locale=C --encoding=UTF8"
 
73
  mkdir -p /var/run/postgresql
74
  chown postgres:postgres /var/run/postgresql
75
 
 
76
  su - postgres -c "/usr/lib/postgresql/15/bin/postgres -D /data/postgresql &"
77
  PG_PID=$!
78
  sleep 3
79
+
80
+ RETRIES=0
81
  until su - postgres -c "psql -c '\\q'" >/dev/null 2>&1; do
82
+ RETRIES=$((RETRIES+1))
83
+ if [ $RETRIES -gt 30 ]; then
84
+ echo " ERREUR : PostgreSQL ne demarre pas apres 30s."
85
+ kill $PG_PID 2>/dev/null || true
86
+ exit 1
87
+ fi
88
+ echo " Attente de PostgreSQL... ($RETRIES/30)"
89
  sleep 1
90
  done
91
 
 
99
  wait $PG_PID 2>/dev/null || true
100
  echo " PostgreSQL initialise."
101
  else
102
+ echo "[2/8] PostgreSQL deja initialise et sain."
103
  fi
104
 
105
  # ---------------------------------------------------------------------------
 
226
  su - postgres -c "/usr/lib/postgresql/15/bin/postgres -D /data/postgresql &"
227
  PG_PID=$!
228
  sleep 3
229
+
230
+ RETRIES=0
231
  until su - postgres -c "psql -c '\\q'" >/dev/null 2>&1; do
232
+ RETRIES=$((RETRIES+1))
233
+ if [ $RETRIES -gt 30 ]; then
234
+ echo " ERREUR : PostgreSQL ne demarre pas apres 30s."
235
+ kill $PG_PID 2>/dev/null || true
236
+ exit 1
237
+ fi
238
+ echo " Attente de PostgreSQL... ($RETRIES/30)"
239
  sleep 1
240
  done
241
  echo " PostgreSQL pret."