admin.sh 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  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. 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-community-devel gcc gcc-c++ python-devel
  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 "start walle"
  34. echo "----------------"
  35. source ./venv/bin/activate
  36. mkdir -p logs
  37. nohup python $APP >> logs/runtime.log 2>&1 &
  38. echo -e "Starting 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 "stop walle"
  44. echo "----------------"
  45. # 获取进程 PID
  46. PID=$(ps -ef | grep $APP | grep -v grep | awk '{print $2}')
  47. # 杀死进程
  48. kill -9 $PID
  49. }
  50. function restart() {
  51. echo "restart walle"
  52. echo "----------------"
  53. stop
  54. start
  55. }
  56. function upgrade() {
  57. echo "upgrade 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 migration() {
  65. echo "migration walle"
  66. echo "----------------"
  67. export FLASK_APP=waller.py
  68. flask db upgrade
  69. if [ $? == "0" ]; then
  70. echo -e "Migration: [\033[32m ok \033[0m]"
  71. else
  72. echo -e "Migration: [\033[31m fail \033[0m]"
  73. fi
  74. }
  75. case "$1" in
  76. init )
  77. echo "************************************************"
  78. init
  79. echo "************************************************"
  80. ;;
  81. start )
  82. echo "************************************************"
  83. start
  84. echo "************************************************"
  85. ;;
  86. stop )
  87. echo "************************************************"
  88. stop
  89. echo "************************************************"
  90. ;;
  91. restart )
  92. echo "************************************************"
  93. restart
  94. echo "************************************************"
  95. ;;
  96. upgrade )
  97. echo "************************************************"
  98. upgrade
  99. requirement
  100. migration
  101. echo -e "\033[32m walle 更新成功. \033[0m \033[33m 建议重启服务 sh admin.sh restart\033[0m"
  102. echo "************************************************"
  103. ;;
  104. migration )
  105. echo "************************************************"
  106. migration
  107. echo "************************************************"
  108. ;;
  109. * )
  110. echo "************************************************"
  111. echo "Usage: sh admin {init|start|stop|restart|upgrade|migration}"
  112. echo "************************************************"
  113. ;;
  114. esac