Created
June 21, 2024 20:28
-
-
Save ljamel/f5e07e70d209abc1c449e086da609d07 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# Demander à l'utilisateur de saisir les variables nécessaires | |
read -p "Entrez le nom de votre sous-domaine (par exemple, sub.localhost) : " SUBDOMAIN | |
read -p "Entrez le nom de votre domaine principal (par exemple, localhost) : " DOMAIN | |
# Définir les autres variables en fonction des entrées utilisateur | |
WEB_ROOT="/var/www/$SUBDOMAIN/public_html" | |
APACHE_CONF="/etc/apache2/sites-available/$SUBDOMAIN.conf" | |
HOSTS_FILE="/etc/hosts" | |
# Fonction pour ajouter ServerName globalement si ce n'est pas déjà fait | |
function add_global_servername() { | |
if ! grep -q "ServerName $DOMAIN" /etc/apache2/apache2.conf; then | |
echo "Ajout de 'ServerName $DOMAIN' dans /etc/apache2/apache2.conf" | |
echo "ServerName $DOMAIN" | sudo tee -a /etc/apache2/apache2.conf | |
else | |
echo "ServerName global déjà configuré." | |
fi | |
} | |
# Fonction pour créer le répertoire du sous-domaine | |
function create_web_root() { | |
echo "Création du répertoire web pour $SUBDOMAIN" | |
sudo mkdir -p $WEB_ROOT | |
sudo chown -R www-data:www-data /var/www/$SUBDOMAIN | |
sudo chmod -R 755 /var/www/$SUBDOMAIN | |
} | |
# Fonction pour créer le fichier de configuration Apache | |
function create_apache_conf() { | |
echo "Création du fichier de configuration Apache pour $SUBDOMAIN" | |
sudo tee $APACHE_CONF > /dev/null <<EOL | |
<VirtualHost *:80> | |
ServerName $SUBDOMAIN | |
DocumentRoot $WEB_ROOT | |
<Directory $WEB_ROOT> | |
Options Indexes FollowSymLinks | |
AllowOverride All | |
Require all granted | |
</Directory> | |
ErrorLog \${APACHE_LOG_DIR}/$SUBDOMAIN-error.log | |
CustomLog \${APACHE_LOG_DIR}/$SUBDOMAIN-access.log combined | |
</VirtualHost> | |
EOL | |
} | |
# Fonction pour activer le site et redémarrer Apache | |
function enable_site_and_restart_apache() { | |
echo "Activation du site $SUBDOMAIN et redémarrage d'Apache" | |
sudo a2ensite $SUBDOMAIN.conf | |
sudo systemctl restart apache2 | |
} | |
# Fonction pour ajouter le sous-domaine au fichier hosts | |
function add_to_hosts() { | |
if ! grep -q "$SUBDOMAIN" $HOSTS_FILE; then | |
echo "Ajout de $SUBDOMAIN au fichier hosts" | |
echo "127.0.0.1 $SUBDOMAIN" | sudo tee -a $HOSTS_FILE | |
else | |
echo "$SUBDOMAIN déjà présent dans le fichier hosts." | |
fi | |
} | |
# Fonction pour obtenir un certificat SSL avec Certbot | |
function obtain_ssl_certificate() { | |
echo "Obtention du certificat SSL pour $SUBDOMAIN avec Certbot" | |
sudo certbot --apache -d $SUBDOMAIN | |
sudo systemctl restart apache2 | |
} | |
# Exécution des fonctions | |
add_global_servername | |
create_web_root | |
create_apache_conf | |
enable_site_and_restart_apache | |
add_to_hosts | |
echo "Sous-domaine $SUBDOMAIN configuré avec succès." | |
# Demander à l'utilisateur s'il souhaite configurer SSL | |
read -p "Voulez-vous configurer SSL pour $SUBDOMAIN maintenant ? (o/n) : " CONFIGURE_SSL | |
if [ "$CONFIGURE_SSL" == "o" ]; then | |
obtain_ssl_certificate | |
echo "Configuration SSL terminée." | |
else | |
echo "Configuration SSL annulée." | |
fi | |
echo "Configuration terminée." |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
first