WP-Deploy/deploy.sh

126 lines
4.2 KiB
Bash
Raw Normal View History

2024-09-24 22:48:53 +02:00
#!/bin/bash
# Vérifier si le script est lancé avec les droits sudo
if [[ "$EUID" -ne 0 ]]; then
# Afficher un message d'avertissement
echo "Veuillez lancer ce script avec les droits sudo"
# Quitter le script avec un code d'erreur
exit 1
fi
# Génération du mot de passe
charset='0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz!"#$%&'\''()*+,-./:;<=>?@[\]^_`{|}~'
password=$(openssl rand -base64 30 | tr -dc "$charset" | fold -w 30)
# Question pour la création du site internet
read -rp "Nom du site internet : " -e NAME_WEBSITE
read -rp "Utilisateur de la BDD : " -e USER_BDD
read -rp "Mot de passe de la BDD : " -e -i "${password}" PWD_BDD
read -rp "Prefix que vous voulez utilisez : " -e PREFIX
read -rp "Compte a utiliser pour wordpress : " -e LOGIN
read -sp "Mot de passe : " -e PWD_USER
read -rp "Mail pour le compte administrateur : " -e MAIL
read -rp "URL du site internet sans le http/s: " -e URL
# Création de la base de donnée
mysql -e "CREATE DATABASE $NAME_WEBSITE;"
mysql -e "CREATE USER '$USER_BDD'@'localhost' IDENTIFIED BY '$PWD_BDD';"
mysql -e "GRANT ALL ON $NAME_WEBSITE.* TO '$USER_BDD'@'localhost';"
mysql -e "FLUSH PRIVILEGES;"
# Téléchargement et installation du Wordpress
cd /var/www/html && wget https://fr.wordpress.org/latest-fr_FR.tar.gz > /dev/null 2>&1
tar -xvzf latest-fr_FR.tar.gz -C /var/www/html/ > /dev/null 2>&1
mkdir $NAME_WEBSITE
cp -r wordpress/* /var/www/html/$NAME_WEBSITE
chown -R apache:apache /var/www/html/$NAME_WEBSITE
rm -rf wordpress latest-fr_FR.tar.gz
# Création des clées de chiffrement du Wordpress
AUTH_KEY=$(openssl rand -hex 64)
SECURE_AUTH_KEY=$(openssl rand -hex 64)
LOGGED_IN_KEY=$(openssl rand -hex 64)
NONCE_KEY=$(openssl rand -hex 64)
AUTH_SALT=$(openssl rand -hex 64)
SECURE_AUTH_SALT=$(openssl rand -hex 64)
LOGGED_IN_SALT=$(openssl rand -hex 64)
NONCE_SALT=$(openssl rand -hex 64)
# Création du fichier wp-config.php
echo "<?php
/** Nom de la base de données de WordPress. */
define( 'DB_NAME', '$NAME_WEBSITE' );
/** Utilisateur de la base de données MySQL. */
define( 'DB_USER', '$USER_BDD' );
/** Mot de passe de la base de données MySQL. */
define( 'DB_PASSWORD', '$PWD_BDD' );
/** Adresse de lhébergement MySQL. */
define( 'DB_HOST', 'localhost' );
/** Jeu de caractères à utiliser par la base de données lors de la
création des tables. */
define( 'DB_CHARSET', 'utf8' );
define( 'DB_COLLATE', '' );
define( 'AUTH_KEY', '$AUTH_KEY' );
define( 'SECURE_AUTH_KEY', '$SECURE_AUTH_KEY' );
define( 'LOGGED_IN_KEY', '$LOGGED_IN_KEY' );
define( 'NONCE_KEY', '$NONCE_KEY' );
define( 'AUTH_SALT', '$AUTH_SALT' );
define( 'SECURE_AUTH_SALT', '$SECURE_AUTH_SALT' );
define( 'LOGGED_IN_SALT', '$LOGGED_IN_SALT' );
define( 'NONCE_SALT', '$NONCE_SALT' );
"'$table_prefix'" = '$PREFIX';
define( 'WP_DEBUG', false );
if ( ! defined( 'ABSPATH' ) )
define( 'ABSPATH', dirname( __FILE__ ) . '/' );
require_once( ABSPATH . 'wp-settings.php' );" > /var/www/html/$NAME_WEBSITE/wp-config.php
# Création du fichier HTTPD
echo "
<VirtualHost *:80>
ServerName $URL
ServerAlias www.$URL
ServerAdmin $MAIL
DocumentRoot /var/www/html/$NAME_WEBSITE
<Directory /var/www/html/$NAME_WEBSITE>
Options -Indexes +FollowSymLinks
AllowOverride All
</Directory>
ErrorLog /var/log/httpd/$NAME_WEBSITE-error.log
CustomLog /var/log/httpd/$NAME_WEBSITE-access.log combined
</VirtualHost> " > /etc/httpd/conf.d/$NAME_WEBSITE.conf
# Création des fichiers LOG
touch /var/log/httpd/$NAME_WEBSITE-access.log
touch /var/log/httpd/$NAME_WEBSITE-error.log
# Automatisation de l'install wordpress
cd /var/www/html/$NAME_WEBSITE
/usr/local/bin/wp core install --url=https://$URL/ --title=$NAME_WEBSITE --admin_user=$LOGIN --admin_password=$PWD_USER --admin_email=$MAIL --allow-root > /dev/null 2>&1
# Mettre le HTTPS dans le fichier de conf de WordPress
read -p "Voulez-vous mettre le HTTPS ? (o/n) : " -e -i o answer
if [[ $answer == "o" ]]; then
echo "<?php
if (isset(\$_SERVER['HTTP_X_FORWARDED_PROTO']) && \$_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') {
\$_SERVER['HTTPS'] = 'on';
}" >> /var/www/html/\$NAME_WEBSITE/wp-config.php
fi
# RESTART HTTPD SERVICE
systemctl restart httpd
echo "le site internet $NAME_WEBSITE est créer"