admin.sh 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166
  1. #########################################################################
  2. # File APP: admin.sh
  3. # Author: wushuiyong
  4. # mail: wushuiyong@walle-web.io
  5. # Created Time: 2018年11月03日 星期六 06时09分46秒
  6. #########################################################################
  7. # Update Time : 2019-03-05
  8. # Author: alenx <alenx.hai@gmail.com>
  9. # -->> 新增ubuntu初始化,全面支持Ubuntu环境(16.x/18.x)
  10. #########################################################################
  11. #!/bin/bash
  12. APP="waller.py"
  13. function init() {
  14. echo "Initing walle"
  15. echo "----------------"
  16. SystemName
  17. pip install virtualenv
  18. if [ ! -d "venv" ]; then
  19. virtualenv --no-site-packages venv # 注意:安装失败请指定python路径. mac 可能会有用anaconda的python. 请不要mac试用, 麻烦多多
  20. fi
  21. requirement
  22. echo "************************************************"
  23. echo -e "\033[32m init walle success \033[0m"
  24. echo -e "\033[32m welcome to walle 2.0 \033[0m"
  25. }
  26. function requirement() {
  27. source ./venv/bin/activate
  28. pip install -r ./requirements/prod.txt
  29. }
  30. function SystemName() {
  31. source /etc/os-release
  32. case $ID in
  33. centos|fedora|rhel)
  34. which pip
  35. if [ $? != "0" ]; then
  36. wget https://bootstrap.pypa.io/3.3/get-pip.py
  37. python get-pip.py
  38. fi
  39. echo "安装/更新可能缺少的依赖: mysql-community-devel gcc gcc-c++ python-devel"
  40. sudo yum install -y mysql-devel gcc gcc-c++ python-devel MySQL-python
  41. ;;
  42. debian|ubuntu|devuan)
  43. echo "安装/更新可能缺少的依赖: ibmysqld-dev gcc gcc-c++ python-dev"
  44. sudo apt update -y
  45. sudo apt install -y libmysqld-dev python-dev virtualenv python-pip
  46. ;;
  47. *)
  48. exit 1
  49. ;;
  50. esac
  51. }
  52. function start() {
  53. echo "Starting walle"
  54. echo "----------------"
  55. source ./venv/bin/activate
  56. mkdir -p logs
  57. nohup python ${APP} >> logs/runtime.log 2>&1 &
  58. echo -e "Start walle: [\033[32m ok \033[0m]"
  59. echo -e "runtime: \033[32m logs/runtime.log \033[0m"
  60. echo -e "error: \033[32m logs/error.log \033[0m"
  61. }
  62. function stop() {
  63. echo "Stoping walle"
  64. echo "----------------"
  65. # 获取进程 PID
  66. PID=$(ps -ef | grep ${APP} | grep -v grep | awk '{print $2}')
  67. # 杀死进程
  68. kill -9 ${PID}
  69. echo -e "Stop walle: [\033[32m ok \033[0m]"
  70. }
  71. function restart() {
  72. stop
  73. echo ""
  74. start
  75. }
  76. function upgrade() {
  77. echo "Upgrading walle"
  78. echo "----------------"
  79. cd $(dirname $0)
  80. echo -e "建议先暂存本地修改\033[33m git stash\033[0m,更新后再弹出\033[33m git stash pop\033[0m,处理冲突。"
  81. source ./venv/bin/activate
  82. git pull
  83. }
  84. function walle_banner() {
  85. echo " ";
  86. echo " llllllllllllll ";
  87. echo " l::::l l::::l ";
  88. echo "wwwwwww wwwww wwwwww aaaaaaaaaaaaa l::::l l::::l eeeeeeeeeeee ";
  89. echo " w:::::w w:::::w w:::::w a::::::::::::a l::::l l::::l ee::::::::::::ee ";
  90. echo " w:::::w w:::::::w w:::::w aaaaaaaaa:::::a l::::l l::::l e::::::eeeee:::::ee";
  91. echo " w:::::w w:::::::::w w:::::w a::::a l::::l l::::l e::::::e e:::::e";
  92. echo " w:::::w w:::::w:::::w w:::::w aaaaaaa:::::a l::::l l::::l e:::::::eeeee::::::e";
  93. echo " w:::::w w:::::w w:::::w w:::::w aa::::::::::::a l::::l l::::l e:::::::::::::::::e ";
  94. echo " w:::::w:::::w w:::::w:::::w a::::aaaa::::::a l::::l l::::l e::::::eeeeeeeeeee ";
  95. echo " w:::::::::w w:::::::::w a::::a a:::::a l::::l l::::l e:::::::e ";
  96. echo " w:::::::w w:::::::w a::::a a:::::a l::::l l::::l e::::::::e ";
  97. echo " w:::::w w:::::w a:::::aaaa::::::a l::::l l::::l e::::::::eeeeeeee ";
  98. echo " w:::w w:::w a::::::::::aa::a l::::: l:::::l ee:::::::::::::e ";
  99. echo " www www aaaaaaaaaa aaaa llllllllllllllll eeeeeeeeeeeeee ";
  100. echo " ";
  101. }
  102. function migration() {
  103. echo "Migration walle"
  104. echo "----------------"
  105. source ./venv/bin/activate
  106. export FLASK_APP=waller.py
  107. flask db upgrade
  108. if [ $? == "0" ]; then
  109. echo -e "Migration: [\033[32m ok \033[0m]"
  110. else
  111. echo -e "Migration: [\033[31m fail \033[0m]"
  112. fi
  113. }
  114. case "$1" in
  115. init )
  116. walle_banner
  117. init
  118. ;;
  119. start )
  120. walle_banner
  121. start
  122. ;;
  123. stop )
  124. walle_banner
  125. stop
  126. ;;
  127. restart )
  128. walle_banner
  129. restart
  130. ;;
  131. upgrade )
  132. walle_banner
  133. upgrade
  134. requirement
  135. migration
  136. echo -e "\033[32m walle 更新成功. \033[0m \033[33m 建议重启服务 sh admin.sh restart\033[0m"
  137. ;;
  138. migration )
  139. walle_banner
  140. migration
  141. ;;
  142. * )
  143. walle_banner
  144. echo "************************************************"
  145. echo "Usage: sh admin {init|start|stop|restart|upgrade|migration}"
  146. echo "************************************************"
  147. ;;
  148. esac