Skip to content

Instantly share code, notes, and snippets.

@ljamel
Created June 21, 2024 20:28
Show Gist options
  • Save ljamel/f5e07e70d209abc1c449e086da609d07 to your computer and use it in GitHub Desktop.
Save ljamel/f5e07e70d209abc1c449e086da609d07 to your computer and use it in GitHub Desktop.
#!/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."
@ljamel
Copy link
Author

ljamel commented Jun 21, 2024

first

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment