django项目《术士之战》运行命令

yuanheci 2025年02月14日 25次浏览

启动thrift服务

cd match_system/src/
chmod +x main.py
./main.py

启动Redis服务
sudo redis-server /etc/redis/redis.conf

项目启动
启动uwsgi服务
uwsgi --ini scripts/uwsgi.ini

启动django_channels服务
daphne -b 0.0.0.0 -p 5015 acapp.asgi:application

启动django项目(最后没用到这种):
python3 manage.py runserver 0.0.0.0:端口号

django后台操作redis(使用django-redis库)
1.打开项目的django交互式后台
python3 manage.py shell

2.导入cache层相关的包
from django.core.cache import cache

3.操作redis的一些命令

  • 列出redis中的所有key:cache.keys('*')cache.keys()中的表达式支持正则
  • 向redis中插入一条数据:cache.set(key, value, passtime)
  • 查询某个key是否存在:cache.has_key('')
  • 删除所有数据:cache.clear()

  有些命令会导致阻塞,因此简单的shell脚本把以上命令执行一遍是不行的。可以通过脚本操作tmux来实现。

USER_PASSWORD=当前用户的密码
USERNAME=当前用户的用户名

修改成自己的账户即可。

#! /bin/bash

# 教程:https://blog.csdn.net/woswod/article/details/80353254
# tmux kill-session -t acapp_workspace

USER_PASSWORD=当前用户的密码
USERNAME=当前用户的用户名
#项目路径
WORKDIR=/home/$USERNAME/acapp
#tmux session的名字
TMUX_SESSION_NAME=acapp_workspace
#
cd $WORKDIR || exit
#su- $USERNAME

echo $USER_PASSWORD | sudo -S /etc/init.d/nginx start
echo $USER_PASSWORD | sudo -S redis-server /etc/redis/redis.conf

result=$(tmux ls | grep $TMUX_SESSION_NAME)

echo "$result"

  #tmux每开一个窗口,相当于新开了一个bash,每新开一个bash,就会执行整个脚本
  #所以每次执行脚本之前,应该判断一下这个脚本之前是否执行过,即判断tmux是否被创建出来

if [[ $result = "" ]]; then
  #
  cd $WORKDIR || exit
  #su- $USERNAME

  echo $USER_PASSWORD | sudo -S /etc/init.d/nginx start
  echo $USER_PASSWORD | sudo -S redis-server /etc/redis/redis.conf


PROCESS=$(ps -ef | grep uwsgi)
for i in $PROCESS; do
  case "$i" in
  [1-9][0-9]*)
    echo "Kill the process [ $i ]"
    kill -9 $i
    ;;
  *) ;;

  esac

done

#   后台新建一个session
  tmux new-session -d -s $TMUX_SESSION_NAME

  #向选择的窗口发送指令

  tmux send-keys -t $TMUX_SESSION_NAME "uwsgi --ini scripts/uwsgi.ini" C-m

  #该命令会把当前工作区域分成左右两个小窗格,光标会移动到右面的窗口
  tmux split-window -h
  tmux send-keys -t $TMUX_SESSION_NAME "cd $WORKDIR/scripts" C-m
  tmux send-keys -t $TMUX_SESSION_NAME "./compress_game_js.sh" C-m


  #启动`django_channels`服务
  #该命令 -t 后参数[session]:[window].[pane]; -v表示向右分割,-h表示向下分割
  tmux split-window -t $TMUX_SESSION_NAME:0.0 -v
  tmux send-keys -t $TMUX_SESSION_NAME "cd $WORKDIR" C-m
  tmux send-keys -t $TMUX_SESSION_NAME "daphne -b 0.0.0.0 -p 5015 acapp.asgi:application" C-m

  #多次切割后每个小窗口的编号会变化

  #该命令会把当前工作区域分成左右两个小窗格,光标会移动到右面的窗口
  tmux split-window -t $TMUX_SESSION_NAME:0.0 -v

  tmux send-keys -t $TMUX_SESSION_NAME "cd match_system/src/" C-m
  tmux send-keys -t $TMUX_SESSION_NAME "chmod +x main.py" C-m
  tmux send-keys -t $TMUX_SESSION_NAME "./main.py" C-m


  tmux split-window -t $TMUX_SESSION_NAME:0.0 -h
  tmux send-keys -t $TMUX_SESSION_NAME "python3 manage.py shell" C-m
  tmux send-keys -t $TMUX_SESSION_NAME "from django.core.cache import cache" C-m
  tmux send-keys -t $TMUX_SESSION_NAME "cache.keys('*')" C-m
  tmux send-keys -t $TMUX_SESSION_NAME "cache.clear()" C-m
  tmux send-keys -t $TMUX_SESSION_NAME "cache.has_key('')" C-m
  #tmux select-pane -t 2
  #tmux send-keys "mysql -uroot -p123456 --host 192.168.1.221 --sigint-ignore --auto-vertical-output" C-m
  #tmux send-keys "use data" C-m
  #tmux -2 attach-session -t ssh  //挂载到之前运行的session上

  #tmux每开一个窗口,相当于新开了一个bash,每新开一个bash,就会执行整个脚本
  echo "66666666"

fi

#tmux a -t $TMUX_SESSION_NAME

最终效果:
image-1739517788737