Update init.sh
Browse files
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.
|
| 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 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 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 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 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."
|