install_and_run_handlers.sh 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. #!/bin/bash
  2. # поиск имени юзера
  3. USER_NAME=$(whoami)
  4. # папки
  5. HANDLER_DIR="/home/$USER_NAME/sharix-open-webapp-base/webservice_running/handlers"
  6. SERVICE_NAME="sharix-open-handlers.service"
  7. SERVICE_PATH="/etc/systemd/system/$SERVICE_NAME"
  8. # установка зависимости
  9. echo "Installing dependencies..."
  10. pip3 install -r /home/$USER_NAME/sharix-open-webapp-base/requirements.txt
  11. # создание службы
  12. echo "Creating systemd service for handlers..."
  13. # создание файла для службы
  14. sudo tee $SERVICE_PATH > /dev/null <<EOF
  15. [Unit]
  16. Description=ShariX Handlers
  17. After=network.target
  18. [Service]
  19. Type=simple
  20. User=$USER_NAME
  21. WorkingDirectory=$HANDLER_DIR
  22. ExecStart=/usr/bin/python3 /home/$USER_NAME/sharix-open-webapp-base/webservice_running/handlers/run_handlers.py
  23. Restart=always
  24. RestartSec=60s
  25. [Install]
  26. WantedBy=multi-user.target
  27. EOF
  28. # создание скрипта который запускает все обработчики
  29. RUN_HANDLER_SCRIPT="$HANDLER_DIR/run_handlers.py"
  30. echo "Creating Python script to run all handlers..."
  31. sudo tee $RUN_HANDLER_SCRIPT > /dev/null <<EOF
  32. import os
  33. import subprocess
  34. import time
  35. # List all handler scripts (excluding non-Python files)
  36. handlers = [f for f in os.listdir('$HANDLER_DIR') if f.endswith('.py')]
  37. # Start each handler script as a subprocess
  38. processes = []
  39. for handler in handlers:
  40. print(f"Starting {handler}...")
  41. process = subprocess.Popen(['python3', os.path.join('$HANDLER_DIR', handler)])
  42. processes.append(process)
  43. # Keep the handlers running
  44. try:
  45. while True:
  46. time.sleep(60) # Keep the process alive
  47. except KeyboardInterrupt:
  48. for process in processes:
  49. process.terminate() # Terminate all handler processes if interrupted
  50. EOF
  51. # перезапуск демона служб
  52. echo "Reloading systemd..."
  53. sudo systemctl daemon-reload
  54. # включение и запуск нашей службы
  55. echo "Enabling and starting the service..."
  56. sudo systemctl enable $SERVICE_NAME
  57. sudo systemctl start $SERVICE_NAME
  58. echo "All handlers are now running as a service."
  59. # проверка работы службы
  60. echo "Checking status of the handler service..."
  61. sudo systemctl status $SERVICE_NAME