admin.sh 3.3 KB

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