admin.sh 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  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 "init walle"
  11. echo "----------------"
  12. which pip
  13. if [ $? != "0" ]; then
  14. exit 1
  15. fi
  16. pip install virtualenv
  17. rm -rf venv
  18. virtualenv --no-site-packages venv # 注意:安装失败请指定python路径. mac 可能会有用anaconda的python
  19. source ./venv/bin/activate
  20. pip install -r ./requirements/prod.txt
  21. echo "************************************************"
  22. echo -e "\033[32m init walle success \033[0m"
  23. echo -e "\033[32m welcome to walle 2.0 \033[0m"
  24. }
  25. function start() {
  26. echo "start walle"
  27. echo "----------------"
  28. source ./venv/bin/activate
  29. mkdir -p logs
  30. nohup python $APP >> logs/runtime.log 2>&1 &
  31. echo -e "Starting walle: [\033[32m ok \033[0m]"
  32. echo -e "runtime: \033[32m logs/runtime.log \033[0m"
  33. echo -e "error: \033[32m logs/error.log \033[0m"
  34. }
  35. function stop() {
  36. echo "stop walle"
  37. echo "----------------"
  38. # 获取进程 PID
  39. PID=$(ps -ef | grep $APP | grep -v grep | awk '{print $2}')
  40. # 杀死进程
  41. kill -9 $PID
  42. }
  43. function restart() {
  44. echo "restart walle"
  45. echo "----------------"
  46. stop
  47. start
  48. }
  49. function upgrade() {
  50. echo "upgrade walle"
  51. echo "----------------"
  52. cd `dirname $0`
  53. git pull
  54. }
  55. function migration() {
  56. echo "migration walle"
  57. echo "----------------"
  58. source venv/bin/activate
  59. export FLASK_APP=waller.py
  60. flask db upgrade
  61. if [ $? == "0" ]; then
  62. echo -e "Migration: [\033[32m ok \033[0m]"
  63. else
  64. echo -e "Migration: [\033[31m fail \033[0m]"
  65. fi
  66. }
  67. case "$1" in
  68. init )
  69. echo "************************************************"
  70. init
  71. echo "************************************************"
  72. ;;
  73. start )
  74. echo "************************************************"
  75. start
  76. echo "************************************************"
  77. ;;
  78. stop )
  79. echo "************************************************"
  80. stop
  81. echo "************************************************"
  82. ;;
  83. restart )
  84. echo "************************************************"
  85. restart
  86. echo "************************************************"
  87. ;;
  88. upgrade )
  89. echo "************************************************"
  90. upgrade
  91. migration
  92. echo "************************************************"
  93. ;;
  94. migration )
  95. echo "************************************************"
  96. migration
  97. echo "************************************************"
  98. ;;
  99. * )
  100. echo "************************************************"
  101. echo "Usage: sh admin {init|start|stop|restart|upgrade|migration}"
  102. echo "************************************************"
  103. ;;
  104. esac