admin.sh 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  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. #!/bin/bash
  8. APP="waller.py"
  9. function init() {
  10. echo "Initing walle"
  11. echo "----------------"
  12. which pip
  13. if [ $? != "0" ]; then
  14. wget https://bootstrap.pypa.io/3.3/get-pip.py
  15. python get-pip.py
  16. fi
  17. pip install virtualenv
  18. if [ ! -d "venv" ]; then
  19. virtualenv --no-site-packages venv # 注意:安装失败请指定python路径. mac 可能会有用anaconda的python. 请不要mac试用, 麻烦多多
  20. fi
  21. echo "安装/更新可能缺少的依赖: mysql-community-devel gcc gcc-c++ python-devel"
  22. sudo yum install -y mysql-devel gcc gcc-c++ python-devel MySQL-python
  23. requirement
  24. echo "************************************************"
  25. echo -e "\033[32m init walle success \033[0m"
  26. echo -e "\033[32m welcome to walle 2.0 \033[0m"
  27. }
  28. function requirement() {
  29. source ./venv/bin/activate
  30. pip install -r ./requirements/prod.txt
  31. }
  32. function start() {
  33. echo "Starting walle"
  34. echo "----------------"
  35. source ./venv/bin/activate
  36. mkdir -p logs
  37. nohup python $APP >> logs/runtime.log 2>&1 &
  38. echo -e "Start walle: [\033[32m ok \033[0m]"
  39. echo -e "runtime: \033[32m logs/runtime.log \033[0m"
  40. echo -e "error: \033[32m logs/error.log \033[0m"
  41. }
  42. function stop() {
  43. echo "Stoping walle"
  44. echo "----------------"
  45. # 获取进程 PID
  46. PID=$(ps -ef | grep $APP | grep -v grep | awk '{print $2}')
  47. # 杀死进程
  48. kill -9 $PID
  49. echo -e "Stop walle: [\033[32m ok \033[0m]"
  50. }
  51. function restart() {
  52. stop
  53. echo ""
  54. start
  55. }
  56. function upgrade() {
  57. echo "Upgrading walle"
  58. echo "----------------"
  59. cd $(dirname $0)
  60. echo -e "建议先暂存本地修改\033[33m git stash\033[0m,更新后再弹出\033[33m git stash pop\033[0m,处理冲突。"
  61. source venv/bin/activate
  62. git pull
  63. }
  64. function walle_banner() {
  65. echo " ";
  66. echo " llllllllllllll ";
  67. echo " l::::l l::::l ";
  68. echo "wwwwwww wwwww wwwwww aaaaaaaaaaaaa l::::l l::::l eeeeeeeeeeee ";
  69. echo " w:::::w w:::::w w:::::w a::::::::::::a l::::l l::::l ee::::::::::::ee ";
  70. echo " w:::::w w:::::::w w:::::w aaaaaaaaa:::::a l::::l l::::l e::::::eeeee:::::ee";
  71. echo " w:::::w w:::::::::w w:::::w a::::a l::::l l::::l e::::::e e:::::e";
  72. echo " w:::::w w:::::w:::::w w:::::w aaaaaaa:::::a l::::l l::::l e:::::::eeeee::::::e";
  73. echo " w:::::w w:::::w w:::::w w:::::w aa::::::::::::a l::::l l::::l e:::::::::::::::::e ";
  74. echo " w:::::w:::::w w:::::w:::::w a::::aaaa::::::a l::::l l::::l e::::::eeeeeeeeeee ";
  75. echo " w:::::::::w w:::::::::w a::::a a:::::a l::::l l::::l e:::::::e ";
  76. echo " w:::::::w w:::::::w a::::a a:::::a l::::l l::::l e::::::::e ";
  77. echo " w:::::w w:::::w a:::::aaaa::::::a l::::l l::::l e::::::::eeeeeeee ";
  78. echo " w:::w w:::w a::::::::::aa::a l::::: l:::::l ee:::::::::::::e ";
  79. echo " www www aaaaaaaaaa aaaa llllllllllllllll eeeeeeeeeeeeee ";
  80. echo " ";
  81. }
  82. function migration() {
  83. echo "Migration walle"
  84. echo "----------------"
  85. source venv/bin/activate
  86. export FLASK_APP=waller.py
  87. flask db upgrade
  88. if [ $? == "0" ]; then
  89. echo -e "Migration: [\033[32m ok \033[0m]"
  90. else
  91. echo -e "Migration: [\033[31m fail \033[0m]"
  92. fi
  93. }
  94. case "$1" in
  95. init )
  96. walle_banner
  97. init
  98. ;;
  99. start )
  100. walle_banner
  101. start
  102. ;;
  103. stop )
  104. walle_banner
  105. stop
  106. ;;
  107. restart )
  108. walle_banner
  109. restart
  110. ;;
  111. upgrade )
  112. walle_banner
  113. upgrade
  114. requirement
  115. migration
  116. echo -e "\033[32m walle 更新成功. \033[0m \033[33m 建议重启服务 sh admin.sh restart\033[0m"
  117. ;;
  118. migration )
  119. walle_banner
  120. migration
  121. ;;
  122. * )
  123. walle_banner
  124. echo "************************************************"
  125. echo "Usage: sh admin {init|start|stop|restart|upgrade|migration}"
  126. echo "************************************************"
  127. ;;
  128. esac