uninstall.sh 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414
  1. #!/bin/bash
  2. # Author: yeho <lj2007331 AT gmail.com>
  3. # BLOG: https://blog.linuxeye.com
  4. #
  5. # Notes: OneinStack for CentOS/RadHat 6+ Debian 7+ and Ubuntu 12+
  6. #
  7. # Project home page:
  8. # https://oneinstack.com
  9. # https://github.com/lj2007331/oneinstack
  10. export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
  11. clear
  12. printf "
  13. #######################################################################
  14. # OneinStack for CentOS/RadHat 6+ Debian 7+ and Ubuntu 12+ #
  15. # Uninstall OneinStack #
  16. # For more information please visit https://oneinstack.com #
  17. #######################################################################
  18. "
  19. . ./options.conf
  20. . ./include/color.sh
  21. . ./include/get_char.sh
  22. . ./include/check_dir.sh
  23. # Check if user is root
  24. [ $(id -u) != "0" ] && { echo "${CFAILURE}Error: You must be root to run this script${CEND}"; exit 1; }
  25. Usage(){
  26. printf "
  27. Usage: $0 [ ${CMSG}all${CEND} | ${CMSG}web${CEND} | ${CMSG}mysql${CEND} | ${CMSG}postgresql${CEND} | ${CMSG}mongodb${CEND} | ${CMSG}php${CEND} | ${CMSG}hhvm${CEND} | ${CMSG}pureftpd${CEND} | ${CMSG}redis${CEND} | ${CMSG}memcached${CEND} ]
  28. ${CMSG}all${CEND} --->Uninstall All
  29. ${CMSG}web${CEND} --->Uninstall Nginx/Tengine/Apache/Tomcat
  30. ${CMSG}mysql${CEND} --->Uninstall MySQL/MariaDB/Percona/AliSQL
  31. ${CMSG}postgresql${CEND} --->Uninstall PostgreSQL
  32. ${CMSG}mongodb${CEND} --->Uninstall MongoDB
  33. ${CMSG}php${CEND} --->Uninstall PHP
  34. ${CMSG}hhvm${CEND} --->Uninstall HHVM
  35. ${CMSG}pureftpd${CEND} --->Uninstall PureFtpd
  36. ${CMSG}redis${CEND} --->Uninstall Redis
  37. ${CMSG}memcached${CEND} --->Uninstall Memcached
  38. "
  39. }
  40. Uninstall_status() {
  41. while :; do echo
  42. read -p "Do you want to uninstall? [y/n]: " uninstall_yn
  43. echo
  44. if [[ ! ${uninstall_yn} =~ ^[y,n]$ ]]; then
  45. echo "${CWARNING}input error! Please only input 'y' or 'n'${CEND}"
  46. else
  47. break
  48. fi
  49. done
  50. }
  51. Print_Warn() {
  52. echo
  53. echo "${CWARNING}You will uninstall OneinStack, Please backup your configure files and DB data! ${CEND}"
  54. }
  55. Print_web() {
  56. [ -d "${nginx_install_dir}" ] && echo "${nginx_install_dir}"
  57. [ -d "${tengine_install_dir}" ] && echo "${tengine_install_dir}"
  58. [ -d "${openresty_install_dir}" ] && echo "${openresty_install_dir}"
  59. [ -e "/etc/init.d/nginx" ] && echo '/etc/init.d/nginx'
  60. [ -e "/etc/logrotate.d/nginx" ] && echo '/etc/logrotate.d/nginx'
  61. [ -d "${apache_install_dir}" ] && echo "${apache_install_dir}"
  62. [ -e "/etc/init.d/httpd" ] && echo "/etc/init.d/httpd"
  63. [ -e "/etc/logrotate.d/apache" ] && echo "/etc/logrotate.d/apache"
  64. [ -d "${tomcat_install_dir}" ] && echo "${tomcat_install_dir}"
  65. [ -e "/etc/init.d/tomcat" ] && echo "/etc/init.d/tomcat"
  66. [ -e "/etc/logrotate.d/tomcat" ] && echo "/etc/logrotate.d/tomcat"
  67. [ -d "/usr/java" ] && echo '/usr/java'
  68. [ -d "/usr/local/apr" ] && echo '/usr/local/apr'
  69. }
  70. Uninstall_Web() {
  71. [ -d "${nginx_install_dir}" ] && { killall nginx > /dev/null 2>&1; rm -rf ${nginx_install_dir} /etc/init.d/nginx /etc/logrotate.d/nginx; sed -i "s@${nginx_install_dir}/sbin:@@" /etc/profile; }
  72. [ -d "${tengine_install_dir}" ] && { killall nginx > /dev/null 2>&1; rm -rf ${tengine_install_dir} /etc/init.d/nginx /etc/logrotate.d/nginx; sed -i "s@${tengine_install_dir}/sbin:@@" /etc/profile; }
  73. [ -d "${openresty_install_dir}" ] && { killall nginx > /dev/null 2>&1; rm -rf ${openresty_install_dir} /etc/init.d/nginx /etc/logrotate.d/nginx; sed -i "s@${openresty_install_dir}/nginx/sbin:@@" /etc/profile; }
  74. [ -d "${apache_install_dir}" ] && { service httpd stop > /dev/null 2>&1; rm -rf ${apache_install_dir} /etc/init.d/httpd /etc/logrotate.d/apache; sed -i "s@${apache_install_dir}/bin:@@" /etc/profile; }
  75. [ -d "${tomcat_install_dir}" ] && { killall java > /dev/null 2>&1; chmod +x /etc/logrotate.d/tomcat; rm -rf ${tomcat_install_dir} /etc/init.d/tomcat /etc/logrotate.d/tomcat /usr/local/apr; }
  76. [ -d "/usr/java" ] && { rm -rf /usr/java; sed -i '/export JAVA_HOME=/d' /etc/profile; sed -i '/export CLASSPATH=/d' /etc/profile; sed -i 's@\$JAVA_HOME/bin:@@' /etc/profile; }
  77. [ -e "${wwwroot_dir}" ] && /bin/mv ${wwwroot_dir}{,$(date +%Y%m%d%H)}
  78. sed -i 's@^website_name=.*@website_name=@' ./options.conf
  79. sed -i 's@^local_bankup_yn=.*@local_bankup_yn=y@' ./options.conf
  80. sed -i 's@^remote_bankup_yn=.*@remote_bankup_yn=n@' ./options.conf
  81. echo "${CMSG}Web uninstall completed${CEND}"
  82. }
  83. Print_DB() {
  84. [ -e "${db_install_dir}" ] && echo "${db_install_dir}"
  85. [ -e "/etc/init.d/mysqld" ] && echo "/etc/init.d/mysqld"
  86. [ -e "/etc/my.cnf" ] && echo "/etc/my.cnf"
  87. [ -e "${pgsql_install_dir}" ] && echo "${pgsql_install_dir}"
  88. [ -e "/etc/init.d/postgresql" ] && echo "/etc/init.d/postgresql"
  89. [ -e "${mongo_install_dir}" ] && echo "${mongo_install_dir}"
  90. [ -e "/etc/init.d/mongod" ] && echo "/etc/init.d/mongod"
  91. }
  92. Uninstall_MySQL() {
  93. # uninstall mysql,mariadb,percona,alisql
  94. if [ -d "${db_install_dir}/support-files" ];then
  95. service mysqld stop > /dev/null 2>&1
  96. rm -rf ${db_install_dir} /etc/init.d/mysqld /etc/my.cnf /etc/ld.so.conf.d/{mysql,mariadb,percona,alisql}*.conf
  97. id -u mysql >/dev/null 2>&1 ; [ $? -eq 0 ] && userdel mysql
  98. [ -e "${db_data_dir}" ] && /bin/mv ${db_data_dir}{,$(date +%Y%m%d%H)}
  99. sed -i 's@^dbrootpwd=.*@dbrootpwd=@' ./options.conf
  100. sed -i "s@${db_install_dir}/bin:@@" /etc/profile
  101. else
  102. echo "${CWARNING}MySQL already uninstalled! ${CEND}"
  103. fi
  104. }
  105. Uninstall_PostgreSQL() {
  106. # uninstall postgresql
  107. if [ -e "${pgsql_install_dir}/bin/psql" ]; then
  108. service postgresql stop > /dev/null 2>&1
  109. rm -rf ${pgsql_install_dir} /etc/init.d/postgresql ${php_install_dir}/etc/php.d/ext-pgsql.ini
  110. id -u postgres >/dev/null 2>&1 ; [ $? -eq 0 ] && userdel postgres
  111. [ -e "${pgsql_data_dir}" ] && /bin/mv ${pgsql_data_dir}{,$(date +%Y%m%d%H)}
  112. sed -i 's@^dbpostgrespwd=.*@dbpostgrespwd=@' ./options.conf
  113. sed -i "s@${pgsql_install_dir}/bin:@@" /etc/profile
  114. echo "${CMSG}PostgreSQL uninstall completed${CEND}"
  115. else
  116. echo "${CWARNING}PostgreSQL already uninstalled! ${CEND}"
  117. fi
  118. }
  119. Uninstall_MongoDB() {
  120. # uninstall mongodb
  121. if [ -e "${mongo_install_dir}/bin/mongo" ]; then
  122. service mongod stop > /dev/null 2>&1
  123. rm -rf ${mongo_install_dir} /etc/mongod.conf /etc/init.d/mongod /var/log/mongodb /tmp/mongo*.sock
  124. id -u mongod > /dev/null 2>&1 ; [ $? -eq 0 ] && userdel mongod
  125. [ -e "${mongo_data_dir}" ] && /bin/mv ${mongo_data_dir}{,$(date +%Y%m%d%H)}
  126. sed -i 's@^dbmongopwd=.*@dbmongopwd=@' ./options.conf
  127. sed -i "s@${mongo_install_dir}/bin:@@" /etc/profile
  128. echo "${CMSG}MongoDB uninstall completed${CEND}"
  129. else
  130. echo "${CWARNING}MongoDB already uninstalled! ${CEND}"
  131. fi
  132. }
  133. Print_PHP() {
  134. [ -e "${php_install_dir}" ] && echo "${php_install_dir}"
  135. [ -e "/etc/init.d/php-fpm" ] && echo "/etc/init.d/php-fpm"
  136. [ -e "/usr/local/imagemagick" ] && echo "/usr/local/imagemagick"
  137. [ -e "/usr/local/graphicsmagick" ] && echo '/usr/local/graphicsmagick'
  138. }
  139. Uninstall_PHP() {
  140. [ -e "${php_install_dir}/bin/phpize" -a -e "${php_install_dir}/etc/php-fpm.conf" ] && { service php-fpm stop > /dev/null 2>&1; rm -rf ${php_install_dir} /etc/init.d/php-fpm; }
  141. [ -e "${php_install_dir}/bin/phpize" -a ! -e "${php_install_dir}/etc/php-fpm.conf" ] && rm -rf ${php_install_dir}
  142. [ -e "/usr/local/imagemagick" ] && rm -rf /usr/local/imagemagick
  143. [ -e "/usr/local/graphicsmagick" ] && rm -rf /usr/local/graphicsmagick
  144. sed -i "s@${php_install_dir}/bin:@@" /etc/profile
  145. echo "${CMSG}PHP uninstall completed${CEND}"
  146. }
  147. Print_HHVM() {
  148. [ -e "/usr/bin/hhvm" ] && echo "/usr/bin/hhvm"
  149. [ -e "/etc/hhvm" ] && echo "/etc/hhvm"
  150. [ -e "/var/log/hhvm" ] && echo "/var/log/hhvm"
  151. [ -e "/etc/supervisord.conf" ] && echo "/etc/supervisord.conf"
  152. [ -e "/etc/init.d/supervisord" ] && echo "/etc/init.d/supervisord"
  153. }
  154. Uninstall_HHVM() {
  155. [ -e "/etc/init.d/supervisord" ] && { service supervisord stop > /dev/null 2>&1; rm -rf /etc/supervisord.conf /etc/init.d/supervisord; }
  156. [ -e "/usr/bin/hhvm" ] && { rpm -e hhvm; rm -rf /etc/hhvm /var/log/hhvm /usr/bin/hhvm; }
  157. echo "${CMSG}HHVM uninstall completed${CEND}"
  158. }
  159. Print_PureFtpd() {
  160. [ -e "$pureftpd_install_dir" ] && echo "$pureftpd_install_dir"
  161. [ -e "/etc/init.d/pureftpd" ] && echo "/etc/init.d/pureftpd"
  162. }
  163. Uninstall_PureFtpd() {
  164. [ -e "$pureftpd_install_dir" ] && { service pureftpd stop > /dev/null 2>&1; rm -rf $pureftpd_install_dir /etc/init.d/pureftpd; }
  165. echo "${CMSG}Pureftpd uninstall completed${CEND}"
  166. }
  167. Print_Redis() {
  168. [ -e "$redis_install_dir" ] && echo "$redis_install_dir"
  169. [ -e "/etc/init.d/redis-server" ] && echo "/etc/init.d/redis-server"
  170. }
  171. Uninstall_Redis() {
  172. [ -e "$redis_install_dir" ] && { service redis-server stop > /dev/null 2>&1; rm -rf $redis_install_dir /etc/init.d/redis-server /usr/local/bin/redis-*; }
  173. [ -e "${php_install_dir}/etc/php.d/ext-redis.ini" ] && rm -rf ${php_install_dir}/etc/php.d/ext-redis.ini
  174. echo "${CMSG}Redis uninstall completed${CEND}"
  175. }
  176. Print_Memcached() {
  177. [ -e "${memcached_install_dir}" ] && echo "${memcached_install_dir}"
  178. [ -e "/etc/init.d/memcached" ] && echo "/etc/init.d/memcached"
  179. [ -e "/usr/bin/memcached" ] && echo "/usr/bin/memcached"
  180. }
  181. Uninstall_Memcached() {
  182. [ -e "${memcached_install_dir}" ] && { service memcached stop > /dev/null 2>&1; rm -rf ${memcached_install_dir} /etc/init.d/memcached /usr/bin/memcached; }
  183. [ -e "${php_install_dir}/etc/php.d/ext-memcache.ini" ] && rm -rf ${php_install_dir}/etc/php.d/ext-memcache.ini
  184. [ -e "${php_install_dir}/etc/php.d/ext-memcached.ini" ] && rm -rf ${php_install_dir}/etc/php.d/ext-memcached.ini
  185. echo "${CMSG}Memcached uninstall completed${CEND}"
  186. }
  187. Print_curlopenssl() {
  188. [ -e "/usr/local/bin/curl" ] && echo "/usr/local/bin/curl"
  189. [ -d "${openssl_install_dir}" ] && echo "${openssl_install_dir}"
  190. }
  191. Uninstall_curlopenssl() {
  192. [ -e "/usr/local/bin/curl" ] && rm -rf /usr/local/lib/libcurl* /usr/local/bin/curl
  193. [ -d "${openssl_install_dir}" ] && { rm -rf ${openssl_install_dir} /etc/ld.so.conf.d/openssl.conf; ldconfig; }
  194. }
  195. Menu(){
  196. while :; do
  197. printf "
  198. What Are You Doing?
  199. \t${CMSG}0${CEND}. Uninstall All
  200. \t${CMSG}1${CEND}. Uninstall Nginx/Tengine/Apache/Tomcat
  201. \t${CMSG}2${CEND}. Uninstall MySQL/MariaDB/Percona/AliSQL
  202. \t${CMSG}3${CEND}. Uninstall PostgreSQL
  203. \t${CMSG}4${CEND}. Uninstall MongoDB
  204. \t${CMSG}5${CEND}. Uninstall PHP
  205. \t${CMSG}6${CEND}. Uninstall HHVM
  206. \t${CMSG}7${CEND}. Uninstall PureFtpd
  207. \t${CMSG}8${CEND}. Uninstall Redis
  208. \t${CMSG}9${CEND}. Uninstall Memcached
  209. \t${CMSG}q${CEND}. Exit
  210. "
  211. echo
  212. read -p "Please input the correct option: " Number
  213. if [[ ! $Number =~ ^[0-9,q]$ ]]; then
  214. echo "${CWARNING}input error! Please only input 0~9 and q${CEND}"
  215. else
  216. case "$Number" in
  217. 0)
  218. Print_Warn
  219. Print_web
  220. Print_DB
  221. Print_PHP
  222. Print_HHVM
  223. Print_PureFtpd
  224. Print_Redis
  225. Print_Memcached
  226. Print_curlopenssl
  227. Uninstall_status
  228. if [ "${uninstall_yn}" == 'y' ]; then
  229. Uninstall_Web
  230. Uninstall_MySQL
  231. Uninstall_PostgreSQL
  232. Uninstall_MongoDB
  233. Uninstall_PHP
  234. Uninstall_HHVM
  235. Uninstall_PureFtpd
  236. Uninstall_Redis
  237. Uninstall_Memcached
  238. Uninstall_curlopenssl
  239. else
  240. exit
  241. fi
  242. ;;
  243. 1)
  244. Print_Warn
  245. Print_web
  246. Uninstall_status
  247. [ "${uninstall_yn}" == 'y' ] && Uninstall_Web || exit
  248. ;;
  249. 2)
  250. Print_Warn
  251. Print_DB
  252. Uninstall_status
  253. [ "${uninstall_yn}" == 'y' ] && Uninstall_MySQL || exit
  254. ;;
  255. 3)
  256. Print_Warn
  257. Print_DB
  258. Uninstall_status
  259. [ "${uninstall_yn}" == 'y' ] && Uninstall_PostgreSQL || exit
  260. ;;
  261. 4)
  262. Print_Warn
  263. Print_DB
  264. Uninstall_status
  265. [ "${uninstall_yn}" == 'y' ] && Uninstall_MongoDB || exit
  266. ;;
  267. 5)
  268. Print_PHP
  269. Uninstall_status
  270. [ "${uninstall_yn}" == 'y' ] && Uninstall_PHP || exit
  271. ;;
  272. 6)
  273. Print_HHVM
  274. Uninstall_status
  275. [ "${uninstall_yn}" == 'y' ] && Uninstall_HHVM || exit
  276. ;;
  277. 7)
  278. Print_PureFtpd
  279. Uninstall_status
  280. [ "${uninstall_yn}" == 'y' ] && Uninstall_PureFtpd || exit
  281. ;;
  282. 8)
  283. Print_Redis
  284. Uninstall_status
  285. [ "${uninstall_yn}" == 'y' ] && Uninstall_Redis || exit
  286. ;;
  287. 9)
  288. Print_Memcached
  289. Uninstall_status
  290. [ "${uninstall_yn}" == 'y' ] && Uninstall_Memcached || exit
  291. ;;
  292. q)
  293. exit
  294. ;;
  295. esac
  296. fi
  297. done
  298. }
  299. if [ $# == 0 ]; then
  300. Menu
  301. elif [ $# == 1 ]; then
  302. case $1 in
  303. all)
  304. Print_Warn
  305. Print_web
  306. Print_DB
  307. Print_PHP
  308. Print_HHVM
  309. Print_PureFtpd
  310. Print_Redis
  311. Print_Memcached
  312. Print_curlopenssl
  313. Uninstall_status
  314. if [ "${uninstall_yn}" == 'y' ]; then
  315. Uninstall_Web
  316. Uninstall_MySQL
  317. Uninstall_PHP
  318. Uninstall_HHVM
  319. Uninstall_PureFtpd
  320. Uninstall_Redis
  321. Uninstall_Memcached
  322. Uninstall_curlopenssl
  323. else
  324. exit
  325. fi
  326. ;;
  327. web)
  328. Print_Warn
  329. Print_web
  330. Uninstall_status
  331. [ "${uninstall_yn}" == 'y' ] && Uninstall_Web || exit
  332. ;;
  333. mysql)
  334. Print_Warn
  335. Print_DB
  336. Uninstall_status
  337. [ "${uninstall_yn}" == 'y' ] && Uninstall_MySQL || exit
  338. ;;
  339. postgresql)
  340. Print_Warn
  341. Print_DB
  342. Uninstall_status
  343. [ "${uninstall_yn}" == 'y' ] && Uninstall_PostgreSQL || exit
  344. ;;
  345. mongodb)
  346. Print_Warn
  347. Print_DB
  348. Uninstall_status
  349. [ "${uninstall_yn}" == 'y' ] && Uninstall_MongoDB || exit
  350. ;;
  351. php)
  352. Print_PHP
  353. Uninstall_status
  354. [ "${uninstall_yn}" == 'y' ] && Uninstall_PHP || exit
  355. ;;
  356. hhvm)
  357. Print_HHVM
  358. Uninstall_status
  359. [ "${uninstall_yn}" == 'y' ] && Uninstall_HHVM || exit
  360. ;;
  361. pureftpd)
  362. Print_PureFtpd
  363. Uninstall_status
  364. [ "${uninstall_yn}" == 'y' ] && Uninstall_PureFtpd || exit
  365. ;;
  366. redis)
  367. Print_Redis
  368. Uninstall_status
  369. [ "${uninstall_yn}" == 'y' ] && Uninstall_Redis || exit
  370. ;;
  371. memcached)
  372. Print_Memcached
  373. Uninstall_status
  374. [ "${uninstall_yn}" == 'y' ] && Uninstall_Memcached || exit
  375. ;;
  376. *)
  377. Usage
  378. ;;
  379. esac
  380. else
  381. Usage
  382. fi