PageRenderTime 53ms CodeModel.GetById 24ms RepoModel.GetById 0ms app.codeStats 0ms

/installWebServer.sh

https://bitbucket.org/all4dk/webserverinstall
Shell | 272 lines | 242 code | 20 blank | 10 comment | 9 complexity | 6d418f631244b7bf739902b317ccfc88 MD5 | raw file
  1. #!/bin/bash
  2. clear
  3. DOMAIN="loc"
  4. DOCUMENT_ROOT="/home/web"
  5. showhelp () {
  6. echo " Web Server AutoInstall Script "
  7. echo "-------------------------------------------------------------------------------"
  8. echo "НАЗВАНИЕ"
  9. echo ""
  10. echo " Web Server AutoInstall Script"
  11. echo ""
  12. echo ""
  13. echo "ДИРЕКТИВЫ"
  14. echo ""
  15. echo " -d - указать желаемую локальную доменую зону."
  16. echo ""
  17. echo " Синтаксис:"
  18. echo " installWebServer.sh -d <domain_name>"
  19. echo " Пример:"
  20. echo " installWebServer.sh -d dev"
  21. echo " Значение по умолчанию: loc"
  22. echo ""
  23. echo ""
  24. echo " -r - указать путь к корневой папке веб-сервера"
  25. echo ""
  26. echo " Синтаксис:"
  27. echo " installWebServer.sh -r <document_root>"
  28. echo " Пример:"
  29. echo " installWebServer.sh -r /home/username/server"
  30. echo " Значение по умолчанию: /home/web"
  31. echo ""
  32. echo ""
  33. }
  34. # WELLCOME MESSAGE
  35. show_wellcome () {
  36. echo "Привет!"
  37. echo "Этот скрипт должен быть запущен с правами супер пользователя!"
  38. echo "Если это так, то для начала установки web-сервера ознакомьтесть с информацией и нажми Enter."
  39. echo ""
  40. echo "1) Этот скрипт не подходит для установки на продуктивных системах - только лично для Вас, как для разработчика."
  41. echo "2) Автор скрипта не несёт ответсвеность за любые последствия использоваия этого скрипта. Если не согласны, то нажмите Ctrl+C и удалите скрипт!"
  42. echo ""
  43. echo "Для получения помощи по использованию скрипта закройте программу (Ctrl+С) и запустите ее снова с флагом -h"
  44. echo ""
  45. echo "Приятной разработки ;)"
  46. echo ""
  47. echo "-------------------------------------------------------------------------------"
  48. echo ""
  49. read
  50. }
  51. # SHOW LAST MESSAGE
  52. show_goodbye () {
  53. echo "
  54. ВНИМАНИЕ!"
  55. echo "Для корректной работы может потребоваться в свойствах сетевого подключения САМОСТОЯТЕЛЬНО указать DNS сервера явным образом, поставив локальный DNS первым. К примеру так:"
  56. echo "127.0.0.1, 8.8.8.8, 208.67.222.222"
  57. echo "Для продолжения нажмите Enter"
  58. read
  59. echo "Настройка завершена. Для проверки попробуйте посмотреть информацию о своём сервере на http://info.""$DOMAIN""/"
  60. echo "Чтобы подключиться к PHPMyAdmin зайдите по адресу http://pma.""$DOMAIN""/"
  61. echo "Создавайте свои проекты в ""$DOCUMENT_ROOT"
  62. echo ""
  63. echo "All4DK 2012г. http://all4dk.blogspot.com/"
  64. echo "Primebit 2012г. https://bitbucket.org/primebit"
  65. echo "Для завершения нажмите Enter"
  66. read
  67. }
  68. # INSTALL APACHE, PHP, MYSQL AND PHPMYADMIN
  69. install_lamp () {
  70. echo ""
  71. echo "-------------------------------------------------------------------------------"
  72. echo ""
  73. echo "Установка Apache и PHP"
  74. echo ""
  75. echo "-------------------------------------------------------------------------------"
  76. echo ""
  77. apt-get install apache2 php5 libapache2-mod-php5 php5-curl --yes
  78. echo ""
  79. echo "-------------------------------------------------------------------------------"
  80. echo ""
  81. echo "Установка MySQL сервера. При установке введите пароль 'root' (без кавычек, маленькими буквами)"
  82. echo "Для продолжения нажмите Enter"
  83. echo ""
  84. echo "-------------------------------------------------------------------------------"
  85. echo ""
  86. read
  87. apt-get install mysql-server mysql-client php5-mysql --yes
  88. echo ""
  89. echo "-------------------------------------------------------------------------------"
  90. echo ""
  91. echo "Установка PHPMyAdmin."
  92. echo "При вопросе об используемом сервере отметьте apache2 (используйте пробел и табуляцию или мышь)"
  93. echo "Соглашаемся на автоматическое конфигурирование базы данных"
  94. echo "При запросе пароля вводим 'root' (без кавычек, маленькими буквами)"
  95. echo "Для продолжения нажмите Enter"
  96. echo ""
  97. echo "-------------------------------------------------------------------------------"
  98. echo ""
  99. read
  100. apt-get install phpmyadmin --yes
  101. echo ""
  102. echo "-------------------------------------------------------------------------------"
  103. echo ""
  104. echo "Настройка Apache"
  105. echo ""
  106. echo "-------------------------------------------------------------------------------"
  107. echo ""
  108. a2enmod rewrite
  109. a2enmod vhost_alias
  110. echo "
  111. <VirtualHost *:80>
  112. ServerName "$DOMAIN"
  113. ServerAlias *."$DOMAIN"
  114. VirtualDocumentRoot "$DOCUMENT_ROOT"/%-2/public
  115. LogLevel warn
  116. <Directory \""$DOCUMENT_ROOT"\">
  117. AllowOverride All
  118. Options -Indexes
  119. Order allow,deny
  120. Allow from all
  121. </Directory>
  122. </VirtualHost>
  123. " >> /etc/apache2/sites-enabled/000-default
  124. echo ""
  125. echo "-------------------------------------------------------------------------------"
  126. echo ""
  127. echo "Настройка Apache завершена. Перезапускаем."
  128. echo ""
  129. echo "-------------------------------------------------------------------------------"
  130. echo ""
  131. service apache2 restart
  132. }
  133. # INSTALL DNSMASQ
  134. install_dnsmasq () {
  135. echo ""
  136. echo "-------------------------------------------------------------------------------"
  137. echo ""
  138. echo "Установка DNSMASQ"
  139. echo ""
  140. echo "-------------------------------------------------------------------------------"
  141. echo ""
  142. apt-get install dnsmasq --yes
  143. echo ""
  144. echo "-------------------------------------------------------------------------------"
  145. echo ""
  146. echo "Настройка DNSMASQ"
  147. echo ""
  148. echo "-------------------------------------------------------------------------------"
  149. echo ""
  150. echo "address=/""$DOMAIN""/127.0.0.1" >> /etc/dnsmasq.conf
  151. echo ""
  152. echo "-------------------------------------------------------------------------------"
  153. echo ""
  154. echo "Настройка DNSMASQ завершена. Перезапускаем."
  155. echo ""
  156. echo "-------------------------------------------------------------------------------"
  157. echo ""
  158. service dnsmasq restart
  159. }
  160. create_document_root () {
  161. echo ""
  162. echo "-------------------------------------------------------------------------------"
  163. echo ""
  164. echo "Создание рабочей директории"
  165. echo ""
  166. echo "-------------------------------------------------------------------------------"
  167. echo ""
  168. if [ -a "$DOCUMENT_ROOT" ]
  169. then
  170. echo ""
  171. echo "-------------------------------------------------------------------------------"
  172. echo ""
  173. echo "Директория" "$DOCUMENT_ROOT" "уже существует"
  174. echo ""
  175. echo "-------------------------------------------------------------------------------"
  176. echo ""
  177. else
  178. mkdir "$DOCUMENT_ROOT"
  179. fi
  180. cd "$DOCUMENT_ROOT"
  181. chmod 777 ./
  182. echo ""
  183. echo "-------------------------------------------------------------------------------"
  184. echo ""
  185. echo "Рабочая директория создана"
  186. echo ""
  187. echo "-------------------------------------------------------------------------------"
  188. echo ""
  189. }
  190. # CONFIGURING PHPMYADMIN
  191. config_pma () {
  192. echo ""
  193. echo "-------------------------------------------------------------------------------"
  194. echo ""
  195. echo "Создание http://pma.""$DOMAIN""/ для доступа к PHPMyAdmin"
  196. echo ""
  197. echo "-------------------------------------------------------------------------------"
  198. echo ""
  199. cd "$DOCUMENT_ROOT"
  200. mkdir pma
  201. mkdir pma/public
  202. echo "Redirect 301 / http://127.0.0.1/phpmyadmin/" > pma/public/.htaccess
  203. }
  204. # MAKE PHPINFO RESOURCE
  205. config_phpinfo () {
  206. echo ""
  207. echo "-------------------------------------------------------------------------------"
  208. echo ""
  209. echo "Создание http://info.""$DOMAIN""/ для просмотра информации о Web-сервере"
  210. echo ""
  211. echo "-------------------------------------------------------------------------------"
  212. echo ""
  213. cd "$DOCUMENT_ROOT"
  214. mkdir info
  215. mkdir info/public
  216. echo "<?php phpinfo();" > info/public/index.php
  217. }
  218. # READ PARAMS
  219. while getopts ":r:d:h" optname
  220. do
  221. if [ "$optname" = "d" ]
  222. then
  223. DOMAIN="$OPTARG"
  224. fi
  225. if [ "$optname" = "r" ] && [ "$OPTARG" != "" ]
  226. then
  227. DOCUMENT_ROOT="$OPTARG"
  228. DOCUMENT_ROOT=${DOCUMENT_ROOT%\/} # удаляем последний слеш, если он есть
  229. fi
  230. if [ "$optname" = "h" ]
  231. then
  232. showhelp;
  233. exit 0
  234. fi
  235. done
  236. # CHECK FOR ROOT PRIVELEGIES
  237. if [ "$(whoami)" != 'root' ]; then
  238. echo "Скрипт должен быть запущен от пользователя root!"
  239. echo ""
  240. echo "Введите ./installWebServer.sh -h для получения справки"
  241. echo ""
  242. echo ""
  243. exit 1;
  244. fi
  245. # COMMANDS WATERFALL
  246. show_wellcome;
  247. install_lamp;
  248. install_dnsmasq;
  249. create_document_root;
  250. config_pma;
  251. config_phpinfo;
  252. show_goodbye;