1. #!/bin/bash
    2. if [[ -n "$1" ]] ; then
    3. action=$1
    4. else
    5. action='install'
    6. fi
    7. if [ "$action" == "start" ] ;then
    8. sudo -s service docker start
    9. sudo -s docker start showdoc
    10. exit 1
    11. fi
    12. if [ "$action" == "restart" ] ;then
    13. sudo -s docker restart showdoc
    14. exit 1
    15. fi
    16. if [ "$action" == "stop" ] ;then
    17. sudo -s docker stop showdoc
    18. exit 1
    19. fi
    20. if [ "$action" == "update" ] ;then
    21. DATE=$(date +%Y%m%d_%H%M%S_%N)
    22. if [ ! -d "/showdoc_data/html" ]; then
    23. echo "/showdoc_data/html 目录不存在"
    24. exit 1 ;
    25. fi
    26. rm -f master.tar.gz
    27. wget https://github.com/star7th/showdoc/archive/master.tar.gz
    28. if [ ! -f "master.tar.gz" ]; then
    29. echo "文件下载失败"
    30. exit 1
    31. fi
    32. sudo -s docker stop showdoc
    33. sudo -s chmod 777 -R /showdoc_data/
    34. sudo -s mv /showdoc_data/html /showdoc_data/html_bak_${DATE}
    35. tar -zxvf master.tar.gz -C /showdoc_data/
    36. sudo -s mv /showdoc_data/showdoc-master /showdoc_data/html ##// */
    37. if [ ! -d "/showdoc_data/html" ]; then
    38. echo "/showdoc_data/html 目录不存在"
    39. exit 1 ;
    40. fi
    41. sudo -s chmod 777 -R /showdoc_data/html
    42. sudo -s docker start showdoc
    43. sleep 10
    44. curl http://localhost:4999/install/non_interactive.php?lang=zh
    45. \cp -f /showdoc_data/html_bak_${DATE}/Sqlite/showdoc.db.php /showdoc_data/html/Sqlite/showdoc.db.php
    46. \cp -r -f /showdoc_data/html_bak_${DATE}/Public/Uploads /showdoc_data/html/Public/
    47. sudo -s curl http://localhost:4999?s=/home/update/db
    48. rm -f master.tar.gz
    49. exit 1
    50. fi
    51. if [ "$action" == "uninstall" ] ;then
    52. read -r -p "即将卸载showdoc,你是否确认删除showdoc所有数据? [Y/n] " input
    53. case $input in
    54. [yY][eE][sS]|[yY])
    55. echo "正在卸载..."
    56. sudo -s docker stop showdoc
    57. sudo -s docker rm showdoc
    58. sudo -s docker rmi registry.docker-cn.com/star7th/showdoc
    59. sudo -s rm -rf /showdoc_data
    60. ;;
    61. [nN][oO]|[nN])
    62. ;;
    63. *)
    64. exit 1
    65. ;;
    66. esac
    67. exit 1
    68. fi
    69. if ! [ -x "$(command -v docker)" ]; then
    70. echo '检测到Docker尚未安装。正在试图从网络安装...所需时间与你的网络环境有关'
    71. sudo -s curl -sSL https://get.daocloud.io/docker | sh
    72. sudo -s chkconfig docker on
    73. fi
    74. if ! [ -x "$(command -v docker)" ]; then
    75. echo '检测到Docker尚未安装。正在试图从网络安装...所需时间与你的网络环境有关'
    76. sudo -s curl -sSL http://acs-public-mirror.oss-cn-hangzhou.aliyuncs.com/docker-engine/internet | sh -
    77. sudo -s chkconfig docker on
    78. fi
    79. if ! [ -x "$(command -v docker)" ]; then
    80. echo 'Docker自动安装失败,建议你手动安装好docker环境后再启动本脚本'
    81. exit 1
    82. fi
    83. if [ "$(docker images |grep showdoc)" ]; then
    84. echo "你已经安装过showdoc镜像"
    85. echo "如果你想更新showdoc,请执行 ./showdoc update "
    86. echo "如果你想重启showdoc,请执行 ./showdoc restart "
    87. echo "如果你想卸载showdoc,请执行 ./showdoc uninstall "
    88. exit 1
    89. fi
    90. sudo -s service docker start
    91. echo '正在拉取showdoc镜像,请稍后...所需时间与你的网络环境有关'
    92. sudo -s docker pull registry.docker-cn.com/star7th/showdoc
    93. sudo -s mkdir /showdoc_data
    94. if [ ! -d "/showdoc_data" ]; then
    95. echo "/showdoc_data 目录不存在,请确保有创建权限"
    96. exit 1 ;
    97. fi
    98. sudo -s mkdir /showdoc_data/html
    99. sudo -s chmod 777 -R /showdoc_data
    100. sudo -s docker run -d --name showdoc -p 4999:80 -v /showdoc_data/html:/var/www/html/ registry.docker-cn.com/star7th/showdoc
    101. sleep 10
    102. sudo -s docker exec showdoc \cp -fr /showdoc_data/html/ /var/www/
    103. if [[ ! $(sudo -s docker exec showdoc php -m | grep ldap) ]] ; then
    104. echo "没有安装ldap,正在安装ing"
    105. sudo -s docker exec showdoc sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories
    106. sudo -s docker exec showdoc apk update
    107. sudo -s docker exec showdoc apk add openldap-dev
    108. sudo -s docker exec showdoc docker-php-ext-install ldap
    109. pid=$(sudo -s docker exec showdoc pgrep "php-fpm: master process")
    110. sudo -s docker exec showdoc kill -USR2 $pid
    111. else
    112. echo "已安装ldap"
    113. fi
    114. wget https://github.com/star7th/showdoc/archive/master.tar.gz
    115. if [ ! -f "master.tar.gz" ]; then
    116. echo "文件下载失败"
    117. exit 1
    118. fi
    119. docker stop showdoc
    120. sudo -s chmod 777 -R /showdoc_data/
    121. DATE=$(date +%Y%m%d_%H%M%S_%N)
    122. sudo -s mv /showdoc_data/html /showdoc_data/html_bak_${DATE}
    123. tar -zxvf master.tar.gz -C /showdoc_data/
    124. sudo -s mv /showdoc_data/showdoc-master /showdoc_data/html ##// */
    125. sudo -s chmod 777 -R /showdoc_data
    126. rm -f master.tar.gz
    127. docker start showdoc
    128. sleep 5
    129. if [ "$action" == "en" ] ;then
    130. sudo -s curl http://localhost:4999/install/non_interactive.php?lang=en
    131. else
    132. sudo -s curl http://localhost:4999/install/non_interactive.php?lang=zh
    133. fi
    134. sudo -s wget http://localhost:4999/install/install.lock
    135. if [ -f "install.lock" ]; then
    136. rm -rf install.lock
    137. echo -e "\n \033[32m 安装成功,访问地址:http://localhost:4999 (你也可以用局域网或者公网IP/域名访问) \033[0m \n"
    138. echo -e " \033[32m 账户密码是showdoc/123456,登录后你便可以看到右上方的管理后台入口。建议登录后修改密码。 \033[0m \n"
    139. echo -e " \033[32m 对showdoc的问题或建议请至https://github.com/star7th/showdoc 提issue \033[0m \n"
    140. echo -e " \033[32m 若觉得showdoc好用,不妨到github点个star。良好的关注度和参与度有助于开源项目的长远发展 \033[0m \n"
    141. fi