/wp_install_auto.sh

https://gitlab.com/auchalet/wp-autodeploy · Shell · 233 lines · 170 code · 49 blank · 14 comment · 5 complexity · 7c326bd223dc73ce195990ac6ad6a8fc MD5 · raw file

  1. #!/bin/bash
  2. #Dossier www dans le /home
  3. if [ ! -d "/home/$USER/websites" ];then
  4. echo "Création dossier";
  5. mkdir -f /home/$USER/websites;
  6. fi
  7. export WEBSITES="/home/$USER/websites"
  8. echo "============================================"
  9. echo "Nom de votre site ? (= Dirname)";
  10. echo "============================================"
  11. read -e wp_name
  12. # Si le site n'existe pas, on fait toute l'install
  13. if [ ! -d "$WEBSITES/$wp_name" ];then
  14. echo "============================================"
  15. echo "Installation des pré-requis"
  16. echo "============================================"
  17. #Pré-requis
  18. sudo apt-get update
  19. sudo apt-get install apache2 php5 mysql-server libapache2-mod-php5 php5-mysql
  20. echo "============================================"
  21. echo "Téléchargement de WP + Installation dans /home/$USER/websites"
  22. echo "============================================"
  23. cd /home/$USER
  24. #Téléchargement WP
  25. if [ ! -f "/home/$USER/latest.tar.gz" ];then
  26. echo "============================================"
  27. echo "Téléchargement de la dernière version de WP :";
  28. echo "============================================"
  29. curl -O https://wordpress.org/latest.tar.gz
  30. else
  31. echo "Archive déjà téléchargée"
  32. fi
  33. #Unzip WP
  34. if [ ! -d "/home/$USER/wordpress" ];then
  35. tar -zxvf latest.tar.gz
  36. mv wordpress $wp_name
  37. else
  38. rm -rf /home/$USER/wordpress
  39. tar -zxvf latest.tar.gz
  40. mv wordpress $wp_name
  41. fi
  42. #Déplacer le dossier dans /home
  43. mv $wp_name $WEBSITES
  44. #Lien symbolique vers /var/www
  45. echo "============================================"
  46. echo "Création d'un lien vers /var/www + Droits"
  47. echo "============================================"
  48. sudo ln -s $WEBSITES/$wp_name /var/www
  49. cd $WEBSITES/$wp_name
  50. echo "============================================"
  51. echo "Configuration DB";
  52. echo "============================================"
  53. echo "Activation du service MySQL"
  54. sudo service mysql start
  55. echo "-> DB Name"
  56. read dbname
  57. echo "-> DB User"
  58. read dbuser
  59. echo "-> DB Password"
  60. read -s dbpswd
  61. echo "============================================"
  62. echo "Création de la DB";
  63. echo "============================================"
  64. echo "-> Connexion MySQL"
  65. mysql -u root -p -e "
  66. CREATE USER '$dbuser'@'localhost';
  67. CREATE DATABASE $dbname;
  68. SET password FOR '$dbuser'@'localhost' = password('$dbpswd');
  69. GRANT ALL ON $dbname.* TO '$dbuser'@'localhost';
  70. SHOW databases;
  71. "
  72. echo "-> Configuration du wp-config.php"
  73. #create wp config
  74. cp wp-config-sample.php wp-config.php
  75. #set database details with perl find and replace
  76. perl -pi -e "s/database_name_here/$dbname/g" wp-config.php
  77. perl -pi -e "s/username_here/$dbuser/g" wp-config.php
  78. perl -pi -e "s/password_here/$dbpswd/g" wp-config.php
  79. #create uploads folder and set permissions
  80. mkdir wp-content/uploads
  81. chmod 775 wp-content/uploads
  82. #Suppression de l'archive
  83. #rm -rf /home/$USER/latest.tar.gz
  84. else
  85. #Si le site existe on se déplace dans son dossier pour l'installer
  86. cd $WEBSITES/$wp_name
  87. fi
  88. echo "============================================"
  89. echo "Installation via WP-CLI";
  90. echo "============================================"
  91. #Test pour savoir si WP-Cli est déjà installé -- Ne détecte pas le dossier...
  92. if [ ! -d "/usr/local/bin/wp" ];then
  93. curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
  94. chmod +x wp-cli.phar
  95. sudo mkdir /usr/local/bin/wp
  96. sudo mv wp-cli.phar /usr/local/bin/wp
  97. echo "WP-CLI installé, utilisez la commande 'wp'"
  98. else
  99. echo "WP-CLI est déjà installé"
  100. fi
  101. # Config install du site
  102. echo "-> Configuration du site"
  103. echo "Adresse du site"
  104. read -e addr
  105. echo "Nom du site (Title)"
  106. read -e title
  107. echo "Admin - Login"
  108. read -e admin
  109. echo "Admin - Password"
  110. read -s adminpwd
  111. echo "Admin - Email"
  112. read -e adminmail
  113. # Install et Update
  114. echo "-> Installation de Wordpress"
  115. install=$(wp core install --url="$addr" --title="$title" --admin_user="$admin" --admin_password="$adminpwd" --admin_email="$adminmail")
  116. echo "-> Mise à jour de Wordpress"
  117. wp core update
  118. echo $install
  119. # Gestion des thèmes
  120. echo "Thèmes"
  121. echo "-> Désinstallation des thèmes pré-installés"
  122. wp theme delete twentyfifteen
  123. wp theme delete fourteen
  124. echo "-> Installation d'un thème"
  125. echo "Installer ou Rechercher ou Quitter ? [I/R/Q]"
  126. read -e temp
  127. OPTIONS="I R Q"
  128. select temp in $OPTIONS
  129. do
  130. echo $temp
  131. if [ $temp == "R" ];then
  132. echo "Rechercher un thème"
  133. read -e theme
  134. wp theme search $theme
  135. elif [ $temp == "I" ];then
  136. echo "Installer un thème"
  137. read -e theme
  138. wp theme install $theme --activate
  139. elif [ $temp == "Q" ];then
  140. exit;
  141. fi
  142. echo "Installer ou Rechercher ou Quitter ? [I/R/Q]"
  143. read -e temp
  144. done
  145. # Droits d'accès
  146. sudo addgroup $USER www-data
  147. sudo chown -R $USER:www-data $WEBSITES/$wp_name
  148. sudo chmod 775 -R $WEBSITES/$wp_name
  149. echo "Install terminée"
  150. exit;