Compare commits
7 Commits
8e882c7756
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 48c26f9f84 | |||
| 70facd85f3 | |||
| 5eda1c002e | |||
| 24a45fecf3 | |||
| 1b758b6161 | |||
| b75afa7df8 | |||
| 58b6a44819 |
@@ -16,6 +16,8 @@ PHP_VERSION="8.3"
|
||||
PHP_INI_CLI="/etc/php/${PHP_VERSION}/cli/php.ini"
|
||||
PHP_INI_APACHE="/etc/php/${PHP_VERSION}/apache2/php.ini"
|
||||
|
||||
TIMEZONE=$(timedatectl show --value --property=Timezone)
|
||||
|
||||
# Générer un mot de passe alphanumérique sécurisé
|
||||
DB_PASSWORD=$(tr -dc 'A-Za-z0-9' </dev/urandom | head -c 16)
|
||||
echo "Mot de passe généré pour la base de données : ${DB_PASSWORD}"
|
||||
@@ -40,9 +42,8 @@ php${PHP_VERSION}-mbstring php${PHP_VERSION}-curl php${PHP_VERSION}-xml php${PHP
|
||||
php${PHP_VERSION}-tokenizer libapache2-mod-php${PHP_VERSION} unzip
|
||||
|
||||
# Définir la timezone PHP pour CLI et Apache
|
||||
sed -i "s|^;*date.timezone =.*|date.timezone = Europe/Paris|" ${PHP_INI_CLI}
|
||||
sed -i "s|^;*date.timezone =.*|date.timezone = Europe/Paris|" ${PHP_INI_APACHE}
|
||||
|
||||
sed -i "s|^;*date.timezone =.*|date.timezone = ${TIMEZONE}|" "${PHP_INI_CLI}"
|
||||
sed -i "s|^;*date.timezone =.*|date.timezone = ${TIMEZONE}|" "${PHP_INI_APACHE}"
|
||||
|
||||
# Sécuriser MariaDB
|
||||
mysql_secure_installation <<EOF
|
||||
|
||||
@@ -138,6 +138,19 @@ configure_locales() {
|
||||
fi
|
||||
}
|
||||
|
||||
configure_timezone() {
|
||||
echo "Détection de la timezone via l'IP publique..."
|
||||
TIMEZONE=$(curl -s https://ipinfo.io/timezone)
|
||||
|
||||
# Définir la timezone via timedatectl
|
||||
echo "Définition de la timezone à : $TIMEZONE"
|
||||
timedatectl set-timezone "$TIMEZONE"
|
||||
}
|
||||
|
||||
install_paquets() {
|
||||
apt install -y curl
|
||||
}
|
||||
|
||||
### SECTION PRINCIPALE : Activer/Désactiver les options ici
|
||||
update_system
|
||||
install_sudo
|
||||
@@ -145,6 +158,8 @@ add_admin_user
|
||||
configure_ssh
|
||||
install_fail2ban
|
||||
configure_locales
|
||||
install_paquets
|
||||
configure_timezone
|
||||
|
||||
echo "Installation et configuration de base terminées."
|
||||
echo "Vous pouvez maintenant vous connecter avec l'utilisateur : $NEW_USER"
|
||||
@@ -20,6 +20,8 @@ apt update && apt upgrade -y || { echo -e "${RED}Échec de la mise à jour des p
|
||||
VERSION=$(lsb_release -sc)
|
||||
SUPPORTED_VERSIONS=("buster" "bullseye" "bookworm")
|
||||
|
||||
TIMEZONE=$(timedatectl show --value --property=Timezone)
|
||||
|
||||
if [[ ! " ${SUPPORTED_VERSIONS[@]} " =~ " ${VERSION} " ]]; then
|
||||
echo -e "${RED}Version de Debian non supportée : $VERSION${RESET}"
|
||||
exit 1
|
||||
@@ -41,6 +43,9 @@ fi
|
||||
# Définition de la version PHP souhaitée
|
||||
PHP_VERSION="8.3"
|
||||
|
||||
PHP_INI_CLI="/etc/php/${PHP_VERSION}/cli/php.ini"
|
||||
PHP_INI_APACHE="/etc/php/${PHP_VERSION}/apache2/php.ini"
|
||||
|
||||
# Vérification de l'installation de PHP
|
||||
echo -e "${YELLOW}Installation de PHP $PHP_VERSION et des modules courants...${RESET}"
|
||||
|
||||
@@ -137,6 +142,10 @@ apc.enable_cli=0
|
||||
EOF
|
||||
echo "==> Fichier $APCU_INI mis à jour."
|
||||
|
||||
# Définir la timezone PHP pour CLI et Apache
|
||||
sed -i "s|^;*date.timezone =.*|date.timezone = ${TIMEZONE}|" "${PHP_INI_CLI}"
|
||||
sed -i "s|^;*date.timezone =.*|date.timezone = ${TIMEZONE}|" "${PHP_INI_APACHE}"
|
||||
|
||||
# Test de la configuration Apache
|
||||
if systemctl is-active --quiet apache2; then
|
||||
read -rp "Voulez-vous tester le support de PHP par Apache ? (o/n) : " test_php
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
create_pg_db.sh
|
||||
create_pg_role.sh
|
||||
setup-postgres17.sh
|
||||
setup-postgres.sh
|
||||
|
||||
@@ -23,7 +23,8 @@ echo ""
|
||||
export PGPASSWORD="$DB_PASS"
|
||||
|
||||
echo "🔎 Vérification de l'existence de l'utilisateur PostgreSQL '$DB_USER'..."
|
||||
USER_EXISTS=$(psql -U postgres -tAc "SELECT 1 FROM pg_roles WHERE rolname='${DB_USER}'")
|
||||
USER_EXISTS=$(sudo -u postgres psql -tAc "SELECT 1 FROM pg_roles WHERE rolname='${DB_USER}'")
|
||||
|
||||
|
||||
if [[ "$USER_EXISTS" != "1" ]]; then
|
||||
echo "❌ L'utilisateur '$DB_USER' n'existe pas dans PostgreSQL."
|
||||
@@ -34,13 +35,14 @@ else
|
||||
fi
|
||||
|
||||
echo "🔎 Vérification de l'existence de la base de données '$DB_NAME'..."
|
||||
DB_EXISTS=$(psql -U postgres -tAc "SELECT 1 FROM pg_database WHERE datname='${DB_NAME}'")
|
||||
DB_EXISTS=$(sudo -u postgres psql -tAc "SELECT 1 FROM pg_database WHERE datname='${DB_NAME}'")
|
||||
|
||||
|
||||
if [[ "$DB_EXISTS" == "1" ]]; then
|
||||
echo "⚠️ La base de données '$DB_NAME' existe déjà."
|
||||
else
|
||||
echo "🛠 Création de la base de données '$DB_NAME' avec le propriétaire '$DB_USER'..."
|
||||
createdb -U postgres -O "$DB_USER" "$DB_NAME"
|
||||
sudo -u postgres createdb -O "$DB_USER" "$DB_NAME"
|
||||
echo "✅ Base de données '$DB_NAME' créée avec succès."
|
||||
fi
|
||||
|
||||
|
||||
@@ -25,28 +25,42 @@ fi
|
||||
read -s -p "🔑 Entrez le mot de passe de l'utilisateur 'postgres' : " POSTGRES_PASSWORD
|
||||
echo ""
|
||||
|
||||
export PGPASSWORD="${POSTGRES_PASSWORD}"
|
||||
|
||||
echo "🔎 Vérification de l'existence du rôle PostgreSQL '$ROLE_NAME'..."
|
||||
ROLE_EXISTS=$(psql -U postgres -tAc "SELECT 1 FROM pg_roles WHERE rolname='${ROLE_NAME}'")
|
||||
|
||||
if [[ "$ROLE_EXISTS" == "1" ]]; then
|
||||
echo "⚠️ Le rôle '$ROLE_NAME' existe déjà."
|
||||
else
|
||||
# Générer le mot de passe du rôle
|
||||
echo "🔐 Génération d'un mot de passe fort pour le rôle '$ROLE_NAME'..."
|
||||
ROLE_PASSWORD=$(generate_token 20)
|
||||
|
||||
echo "🛠 Création du rôle '$ROLE_NAME' avec LOGIN et mot de passe..."
|
||||
psql -U postgres -c "CREATE ROLE ${ROLE_NAME} WITH LOGIN PASSWORD '${ROLE_PASSWORD}';"
|
||||
# Générer un fichier SQL temporaire pour la vérification + création
|
||||
SQL_FILE=$(mktemp)
|
||||
|
||||
cat <<EOF > "$SQL_FILE"
|
||||
DO \$\$
|
||||
BEGIN
|
||||
IF NOT EXISTS (SELECT FROM pg_roles WHERE rolname = '${ROLE_NAME}') THEN
|
||||
RAISE NOTICE '🛠 Création du rôle "${ROLE_NAME}"...';
|
||||
CREATE ROLE ${ROLE_NAME} WITH LOGIN PASSWORD '${ROLE_PASSWORD}';
|
||||
ELSE
|
||||
RAISE NOTICE '⚠️ Le rôle "${ROLE_NAME}" existe déjà.';
|
||||
END IF;
|
||||
END
|
||||
\$\$;
|
||||
EOF
|
||||
|
||||
chmod 644 "$SQL_FILE"
|
||||
|
||||
# Une seule exécution de psql via sudo avec mot de passe PostgreSQL exporté
|
||||
echo "🔎 Exécution des commandes SQL avec sudo..."
|
||||
sudo -u postgres bash -c "PGPASSWORD='${POSTGRES_PASSWORD}' psql -v ON_ERROR_STOP=1 -f '${SQL_FILE}'"
|
||||
|
||||
rm -f "$SQL_FILE"
|
||||
|
||||
# Affichage des identifiants si création
|
||||
echo ""
|
||||
echo "✅ Rôle '$ROLE_NAME' créé avec succès."
|
||||
echo "-------------------------------------------"
|
||||
echo " Nom du rôle : ${ROLE_NAME}"
|
||||
echo " Mot de passe : ${ROLE_PASSWORD}"
|
||||
echo "-------------------------------------------"
|
||||
|
||||
# Proposer d'enregistrer dans .pgpass
|
||||
# Proposer d’enregistrer dans ~/.pgpass
|
||||
read -p "💾 Voulez-vous enregistrer ces identifiants dans ~/.pgpass ? (y/n) " SAVE_PASS
|
||||
if [[ "$SAVE_PASS" =~ ^[Yy]$ ]]; then
|
||||
PGPASS_FILE="${HOME}/.pgpass"
|
||||
@@ -56,9 +70,4 @@ else
|
||||
fi
|
||||
|
||||
echo "⚠️ Pensez à sauvegarder ces informations si vous ne les enregistrez pas."
|
||||
fi
|
||||
|
||||
unset PGPASSWORD
|
||||
unset POSTGRES_PASSWORD
|
||||
|
||||
echo "🎉 Opération terminée."
|
||||
|
||||
@@ -9,18 +9,32 @@ check_root
|
||||
|
||||
set -e
|
||||
|
||||
echo "Ajout du dépôt officiel PostgreSQL 17..."
|
||||
mkdir -p /etc/apt/keyrings
|
||||
wget -qO /etc/apt/keyrings/postgresql.asc https://www.postgresql.org/media/keys/ACCC4CF8.asc
|
||||
chmod 644 /etc/apt/keyrings/postgresql.asc
|
||||
|
||||
echo "deb [signed-by=/etc/apt/keyrings/postgresql.asc] http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list
|
||||
|
||||
echo "Installation de PostgreSQL 17..."
|
||||
echo "📦 Mise à jour des paquets..."
|
||||
apt update -y
|
||||
apt install -y postgresql-17
|
||||
|
||||
echo "Activation et démarrage du service PostgreSQL..."
|
||||
echo "📚 Installation de postgresql-common (pour script de dépôt officiel)..."
|
||||
apt install -y postgresql-common
|
||||
|
||||
echo "➕ Ajout automatique du dépôt officiel PostgreSQL (via pgdg script)..."
|
||||
/usr/share/postgresql-common/pgdg/apt.postgresql.org.sh -y
|
||||
|
||||
echo ""
|
||||
echo "🧩 Versions disponibles dans le dépôt :"
|
||||
AVAILABLE_VERSIONS=$(apt-cache search "^postgresql-[0-9][0-9]$" | awk '{print $1}' | cut -d'-' -f2 | sort -nr)
|
||||
echo "$AVAILABLE_VERSIONS"
|
||||
|
||||
read -p "➡️ Entrez la version PostgreSQL à installer (ex: 17) : " PG_VERSION
|
||||
|
||||
if ! echo "$AVAILABLE_VERSIONS" | grep -q "^${PG_VERSION}$"; then
|
||||
echo "❌ Version PostgreSQL invalide ou non disponible : ${PG_VERSION}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "📦 Installation de PostgreSQL $PG_VERSION..."
|
||||
apt update -y
|
||||
apt install -y "postgresql-${PG_VERSION}"
|
||||
|
||||
echo "🚀 Activation et démarrage du service PostgreSQL..."
|
||||
systemctl enable postgresql
|
||||
systemctl start postgresql
|
||||
|
||||
@@ -48,14 +62,14 @@ echo "🔧 Configuration du mot de passe de l'utilisateur postgres..."
|
||||
sudo -u postgres psql -c "ALTER USER postgres WITH PASSWORD '${POSTGRES_PASSWORD}';"
|
||||
|
||||
echo "🔧 Configuration de l'accès local en md5..."
|
||||
PG_HBA="/etc/postgresql/17/main/pg_hba.conf"
|
||||
PG_HBA="/etc/postgresql/${PG_VERSION}/main/pg_hba.conf"
|
||||
sed -i "s/^\(local\s\+all\s\+postgres\s\+\)peer/\1md5/" "$PG_HBA"
|
||||
|
||||
echo "♻️ Redémarrage de PostgreSQL pour appliquer les changements..."
|
||||
systemctl restart postgresql
|
||||
|
||||
echo ""
|
||||
echo "✅ Installation terminée."
|
||||
echo "✅ Installation de PostgreSQL ${PG_VERSION} terminée."
|
||||
echo "-------------------------------------------"
|
||||
echo " Mot de passe de l'utilisateur postgres :"
|
||||
echo " ${POSTGRES_PASSWORD}"
|
||||
Reference in New Issue
Block a user