Updates
This commit is contained in:
7
.gitignore
vendored
7
.gitignore
vendored
@@ -1,5 +1,8 @@
|
|||||||
/db/
|
db/
|
||||||
/temp/
|
db/Settings/
|
||||||
|
temp/
|
||||||
|
app/static/WAV/
|
||||||
|
config.py
|
||||||
|
|
||||||
# ---> Python
|
# ---> Python
|
||||||
# Byte-compiled / optimized / DLL files
|
# Byte-compiled / optimized / DLL files
|
||||||
|
|||||||
@@ -1,5 +0,0 @@
|
|||||||
FNAME=site_main.service
|
|
||||||
|
|
||||||
echo Install $FNAME
|
|
||||||
cp $FNAME /etc/systemd/system/$NAME
|
|
||||||
systemctl enable $FNAME
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
echo " Загружаем настройки в память..."
|
|
||||||
#Создаем папку для программы, если её не было
|
|
||||||
DIR="/dev/shm/mainsite"
|
|
||||||
if [ ! -d "$DIR" ]; then
|
|
||||||
mkdir $DIR
|
|
||||||
fi
|
|
||||||
|
|
||||||
#Копируем настройки
|
|
||||||
#rsync -ah --delete db/Settings $DIR
|
|
||||||
27
Restart.sh
27
Restart.sh
@@ -1,27 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
###!/usr/bin/env bash
|
|
||||||
|
|
||||||
echo "Мягко закрываем службу"
|
|
||||||
killall -s 15 gunicorn -r
|
|
||||||
x=7
|
|
||||||
#P = if pgrep 'gunicorn';
|
|
||||||
#echo $P
|
|
||||||
while [ $x -gt 0 ] && pgrep 'gunicorn' ;
|
|
||||||
do
|
|
||||||
sleep 1
|
|
||||||
echo "Ожидание закрытия сек: $x"
|
|
||||||
x=$(( $x - 1 ))
|
|
||||||
done
|
|
||||||
|
|
||||||
|
|
||||||
if pgrep 'gunicorn';
|
|
||||||
then
|
|
||||||
echo "Принудительно убиваем службу"
|
|
||||||
killall -s 9 gunicorn -r
|
|
||||||
sleep 3
|
|
||||||
else
|
|
||||||
echo "Служба успешно закрыта"
|
|
||||||
|
|
||||||
fi
|
|
||||||
|
|
||||||
sh Gunicorn.sh
|
|
||||||
28
Scripts.py
Executable file
28
Scripts.py
Executable file
@@ -0,0 +1,28 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
# -*- coding: UTF-8 -*-
|
||||||
|
|
||||||
|
import sys #для работы с аргументами
|
||||||
|
|
||||||
|
#активация FLASK
|
||||||
|
from flask import Flask
|
||||||
|
app = Flask(__name__, static_url_path='', static_folder='')
|
||||||
|
app.config.from_object('config') #активируем файл конфигурации
|
||||||
|
|
||||||
|
#=======================================================================
|
||||||
|
#Процедура чтения переменных из файла config.py
|
||||||
|
#=======================================================================
|
||||||
|
def GetConfig(VarName):
|
||||||
|
try:
|
||||||
|
return app.config[VarName] #чтение конфига
|
||||||
|
except:
|
||||||
|
return "" #если переменная не задана в конфиге, то выдаем пустоту
|
||||||
|
|
||||||
|
#=======================================================================
|
||||||
|
#MAIN
|
||||||
|
#=======================================================================
|
||||||
|
if __name__ == "__main__":
|
||||||
|
if len (sys.argv) > 1: #если что-то передано кроме имени файла
|
||||||
|
if (sys.argv[1]=='--getconfig'): #получаем команду
|
||||||
|
print (GetConfig(sys.argv[2])) #отправляем аргумент в процедуру
|
||||||
|
|
||||||
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
git config --global credential.helper cache
|
|
||||||
git fetch
|
|
||||||
git pull
|
|
||||||
171
shell/0-CheckSystem.sh
Executable file
171
shell/0-CheckSystem.sh
Executable file
@@ -0,0 +1,171 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
cd ..
|
||||||
|
#======================================================================
|
||||||
|
#Pip 3
|
||||||
|
#======================================================================
|
||||||
|
UpdatePip3()
|
||||||
|
{
|
||||||
|
echo ""
|
||||||
|
echo "============================================================="
|
||||||
|
echo "Pip 3"
|
||||||
|
echo "============================================================="
|
||||||
|
echo "Обновляем Pip 3 на всякий случай"
|
||||||
|
sudo pip3 install --upgrade pip
|
||||||
|
}
|
||||||
|
|
||||||
|
#======================================================================
|
||||||
|
#Проверка Python3
|
||||||
|
#======================================================================
|
||||||
|
CheckPython3()
|
||||||
|
{
|
||||||
|
echo ""
|
||||||
|
echo "============================================================="
|
||||||
|
echo "Python 3.7.7"
|
||||||
|
echo "============================================================="
|
||||||
|
echo "Проверяем наличие Python3 в системе "
|
||||||
|
T=$(python3 -V | grep 3.7.7)
|
||||||
|
if [ "$T" == "" ];
|
||||||
|
then
|
||||||
|
echo "Устанавливаем зависимости для Python 3.7 "
|
||||||
|
sudo apt-get build-dep python3.7
|
||||||
|
|
||||||
|
echo "Скачиваем Python 3.7.7 "
|
||||||
|
cd /tmp/
|
||||||
|
wget -c https://www.python.org/ftp/python/3.7.7/Python-3.7.7.tgz
|
||||||
|
|
||||||
|
echo "Распаковываем архив... "
|
||||||
|
tar -xvzf Python-3.7.7.tgz
|
||||||
|
cd Python-3.7.7
|
||||||
|
|
||||||
|
echo "Настраиваем пакет... "
|
||||||
|
./configure --enable-optimizations
|
||||||
|
|
||||||
|
echo "Компилируем пакет... "
|
||||||
|
make
|
||||||
|
make test
|
||||||
|
|
||||||
|
echo "Устанавливаем Python 3.7.7... "
|
||||||
|
sudo make install
|
||||||
|
else
|
||||||
|
echo "Уже установлен Python 3.7.7"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Перепроверяем " $1
|
||||||
|
T=$(python3 -V | grep 3.7.7)
|
||||||
|
if $T= ""
|
||||||
|
then
|
||||||
|
echo "Не удалось установить " $1
|
||||||
|
return 0 #Неудача
|
||||||
|
fi
|
||||||
|
echo "Успешно установлен " $1
|
||||||
|
echo "Рекомендуется перезагрузить Linux командой: sudo reboot 0"
|
||||||
|
return 1 #Успех
|
||||||
|
}
|
||||||
|
|
||||||
|
#======================================================================
|
||||||
|
#Проверка пакетов Linux
|
||||||
|
#======================================================================
|
||||||
|
Check()
|
||||||
|
{
|
||||||
|
echo ""
|
||||||
|
echo "============================================================="
|
||||||
|
echo "Linux:" $1
|
||||||
|
echo "============================================================="
|
||||||
|
|
||||||
|
echo "Проверяем наличие пакета Python 3 в системе "
|
||||||
|
T=$(dpkg --get-selections | grep $1 | grep install)
|
||||||
|
if [ "$T" == "" ];
|
||||||
|
then
|
||||||
|
echo "Устанавливаем " $1
|
||||||
|
sudo apt-get -y install $1
|
||||||
|
else
|
||||||
|
echo "Уже установлен " $1
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Перепроверяем " $1
|
||||||
|
T=$(dpkg --get-selections | grep $1 | grep install)
|
||||||
|
if [ "$T" == "" ];
|
||||||
|
then
|
||||||
|
echo "Не удалось установить " $1
|
||||||
|
return 0 #Неудача
|
||||||
|
fi
|
||||||
|
echo "Успешно установлен " $1
|
||||||
|
return 1 #Успех
|
||||||
|
}
|
||||||
|
|
||||||
|
#======================================================================
|
||||||
|
#Проверка пакетов Python 3
|
||||||
|
#======================================================================
|
||||||
|
CheckPip()
|
||||||
|
{
|
||||||
|
echo ""
|
||||||
|
echo "============================================================="
|
||||||
|
echo "Pip 3: " $1
|
||||||
|
echo "============================================================="
|
||||||
|
|
||||||
|
echo "Проверяем наличие пакета в Python 3 "
|
||||||
|
T=$(sudo pip3 freeze | grep $1)
|
||||||
|
if [ "$T" == "" ];
|
||||||
|
then
|
||||||
|
echo "Устанавливаем " $1
|
||||||
|
sudo pip3 install $1
|
||||||
|
else
|
||||||
|
echo "Уже установлен " $1
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Перепроверяем " $1
|
||||||
|
T=$(sudo pip3 freeze | grep $1)
|
||||||
|
if [ "$T" == "" ];
|
||||||
|
then
|
||||||
|
echo "Не удалось установить " $1
|
||||||
|
return 0 #Неудача
|
||||||
|
fi
|
||||||
|
echo "Успешно установлен " $1
|
||||||
|
return 1 #Успех
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
echo "Обновление существующих пакетов Linux..."
|
||||||
|
sudo apt-get update
|
||||||
|
sudo apt-get -y upgrade
|
||||||
|
|
||||||
|
Check "git" #Система управления репозиториями
|
||||||
|
Check "rsync" #Копировальщик
|
||||||
|
Check "build-essential" #информационный список пакетов необходимых для сборки
|
||||||
|
Check "make" #утилита управления компиляцией
|
||||||
|
Check "libssl-dev" #для работы с SSL
|
||||||
|
Check "libcurl4-gnutls-dev" #development files and documentation for libcurl (GnuTLS flavour). libcurl is an easy-to-use client-side URL transfer library, supporting DICT, FILE, FTP, FTPS, GOPHER, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS, TELNET and TFTP.
|
||||||
|
Check "libgnutls28-dev" #GNU TLS library - development files GnuTLS is a portable library which implements the Transport Layer Security (TLS 1.0, 1.1, 1.2, 1.3) and Datagram Transport Layer Security (DTLS 1.0, 1.2) protocols.
|
||||||
|
Check "zlib1g-dev" #для сжатия
|
||||||
|
Check "libbz2-dev" #библиотека сжатия по алгоритму Барроуза—Уилера (версия для разработки) Статические библиотеки и заголовочные файлы, требуемые для сборки приложений, использующих библиотеку bzip2.
|
||||||
|
Check "libreadline-dev" #GNU readline and history libraries, development files
|
||||||
|
Check "libsqlite3-dev" #SQLite 3 development files
|
||||||
|
Check "wget" #Для возможности скачивания с Инета, например Python3
|
||||||
|
Check "curl" #передача данных с синтаксисом URL, инструмент командной строки. curl — инструмент командной строки для передачи данных с синтаксисом URL, поддерживающий DICT, FILE, FTP, FTPS, GOPHER, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS, TELNET и TFTP.
|
||||||
|
#Check "llvm" #Low-Level Virtual Machine (LLVM). The Low-Level Virtual Machine (LLVM) is a collection of libraries and tools that make it easy to build compilers, optimizers, Just-In-Time code generators, and many other compiler-related programs.
|
||||||
|
#Check "libncurses5-dev" # transitional package for libncurses-dev. This is a transitional package that can safely be removed.
|
||||||
|
#Check "libncursesw5-dev" #transitional package for libncurses-dev. This is a transitional package that can safely be removed.
|
||||||
|
#Check "xz-utils" #утилита для работы с архивами в формате XZ
|
||||||
|
Check "tk-dev" #Toolkit for Tcl and X11 (default version) - development files Tk is a cross-platform graphical toolkit which provides the Motif look-and-feel and is implemented using the Tcl scripting language.
|
||||||
|
Check "postfix" #высокопроизводительный агент пересылки почты
|
||||||
|
Check "ssh" #для возможности работы по удаленке
|
||||||
|
|
||||||
|
CheckPython3 #Проверка и установка Python3
|
||||||
|
UpdatePip3 # Обновление Pip3
|
||||||
|
|
||||||
|
CheckPip "Flask"
|
||||||
|
CheckPip "Flask-Compress"
|
||||||
|
CheckPip "grab"
|
||||||
|
CheckPip "gunicorn"
|
||||||
|
CheckPip "pymssql"
|
||||||
|
CheckPip "XlsxWriter"
|
||||||
|
CheckPip "wget"
|
||||||
|
CheckPip "crypto"
|
||||||
|
CheckPip "pycrypto"
|
||||||
|
CheckPip "config"
|
||||||
|
CheckPip "dnspython"
|
||||||
|
CheckPip "python-whois"
|
||||||
|
CheckPip "websockets"
|
||||||
12
shell/1-UpdateClient.sh
Executable file
12
shell/1-UpdateClient.sh
Executable file
@@ -0,0 +1,12 @@
|
|||||||
|
git config --global credential.helper cache #чтение настроек авторизации
|
||||||
|
git reset --hard #игнорировать изменения у клиента
|
||||||
|
git fetch
|
||||||
|
git pull
|
||||||
|
|
||||||
|
#systemctl --user restart $(ls *.service | sed 's/\..*//')
|
||||||
|
#Устанавливаем получаем имя файла сервиса
|
||||||
|
FNAME=$(ls *.service )
|
||||||
|
|
||||||
|
echo "Запускаем сервис для пользователя $FNAME"
|
||||||
|
systemctl --user restart $FNAME
|
||||||
|
|
||||||
25
shell/2-InstallService.sh
Executable file
25
shell/2-InstallService.sh
Executable file
@@ -0,0 +1,25 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
./Prepare.sh
|
||||||
|
cd ..
|
||||||
|
|
||||||
|
ServiceName=$(python3 Scripts.py --getconfig PROGNAME)
|
||||||
|
SHMName=$(python3 Scripts.py --getconfig SHMNAME)
|
||||||
|
|
||||||
|
echo '[Unit]
|
||||||
|
Description=Запуск '$ServiceName'
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
ExecStart='$PWD'/shell/Gunicorn.sh
|
||||||
|
User='$USER'
|
||||||
|
Group='$USER'
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
|
|
||||||
|
|
||||||
|
' > /tmp/site_$SHMName.service
|
||||||
|
|
||||||
|
#echo "Устанавливаем сервис для пользователя $FNAME"
|
||||||
|
sudo cp /tmp/site_$SHMName.service /etc/systemd/system/site_$SHMName.service
|
||||||
|
sudo systemctl enable site_$SHMName.service
|
||||||
|
sudo systemctl restart site_$SHMName.service
|
||||||
6
shell/3-Sudoers.sh
Executable file
6
shell/3-Sudoers.sh
Executable file
@@ -0,0 +1,6 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
echo $USER' ALL=NOPASSWD: /usr/bin/service, /usr/bin/apt-get update, /usr/bin/apt-get upgrade
|
||||||
|
' > /tmp/tmp_sudoers
|
||||||
|
|
||||||
|
sudo cp /tmp/tmp_sudoers /etc/sudoers.d/$USER
|
||||||
@@ -1,7 +1,9 @@
|
|||||||
#!/bin/sh -e
|
#!/bin/sh -e
|
||||||
cd /home/elforcer/FlaskSite/MainSite/
|
|
||||||
|
|
||||||
echo "Подготовка..."
|
echo "Подготовка..."
|
||||||
sh Prepare.sh
|
sh Prepare.sh
|
||||||
|
cd ..
|
||||||
|
|
||||||
echo "Запускаем сервер Gunicorn с MainSite..."
|
echo "Запускаем сервер Gunicorn с Проигрывателем записей разговоров..."
|
||||||
gunicorn -w 4 --timeout 900 --keep-alive 900 --keyfile=/etc/letsencrypt/live/elforcer.udm.ru/privkey.pem --certfile=/etc/letsencrypt/live/elforcer.udm.ru/cert.pem --bind 0.0.0.0:8009 StartServer:app
|
gunicorn -w 4 --timeout 900 --keep-alive 900 --keyfile=/etc/letsencrypt/live/elforcer.udm.ru/privkey.pem --certfile=/etc/letsencrypt/live/elforcer.udm.ru/cert.pem --bind 0.0.0.0:8001 StartServer:app
|
||||||
27
shell/Prepare.sh
Executable file
27
shell/Prepare.sh
Executable file
@@ -0,0 +1,27 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
cd ..
|
||||||
|
|
||||||
|
#Копируем файл конфигурации, если его не было
|
||||||
|
if [ ! -f "config.py" ]; then
|
||||||
|
echo " Не найден файл конфигурации. Копируем его из примера...";
|
||||||
|
cp samples/config_sample.py config.py
|
||||||
|
fi
|
||||||
|
|
||||||
|
DIR="app/static/WAV"
|
||||||
|
if [ ! -d "$DIR" ]; then
|
||||||
|
echo " Создаем папку настроек для звуковых записей.."
|
||||||
|
mkdir $DIR
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo " Загружаем настройки в память..."
|
||||||
|
#Создаем папку для программы, если её не было
|
||||||
|
DIR="/dev/shm/"$(python3 Scripts.py --getconfig SHMNAME) #"/dev/shm/phonecalls"
|
||||||
|
|
||||||
|
if [ ! -d "$DIR" ]; then
|
||||||
|
echo " Создаем папку настроек в памяти..."
|
||||||
|
mkdir $DIR
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
#Копируем настройки
|
||||||
|
rsync -ah --delete db/Settings $DIR
|
||||||
8
shell/Restart.sh
Executable file
8
shell/Restart.sh
Executable file
@@ -0,0 +1,8 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
./Prepare.sh
|
||||||
|
|
||||||
|
ServiceName=$(python3 Scripts.py --getconfig PROGNAME)
|
||||||
|
SHMName=$(python3 Scripts.py --getconfig SHMNAME)
|
||||||
|
|
||||||
|
echo 'Перезапуск '$ServiceName
|
||||||
|
sudo systemctl restart site_$SHMName.service
|
||||||
7
shell/StopServer.sh
Executable file
7
shell/StopServer.sh
Executable file
@@ -0,0 +1,7 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
ServiceName=$(python3 Scripts.py --getconfig PROGNAME)
|
||||||
|
SHMName=$(python3 Scripts.py --getconfig SHMNAME)
|
||||||
|
|
||||||
|
echo 'Остановка '$ServiceName
|
||||||
|
sudo systemctl stop site_$SHMName.service
|
||||||
@@ -1,4 +1,6 @@
|
|||||||
|
cd ..
|
||||||
git config --global credential.helper cache
|
git config --global credential.helper cache
|
||||||
git add .
|
git add .
|
||||||
git commit -m "Updates"
|
git commit -m "Updates"
|
||||||
git push
|
git push
|
||||||
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
|
|
||||||
[Unit]
|
|
||||||
Description=Запуск Основного сайта
|
|
||||||
|
|
||||||
[Service]
|
|
||||||
ExecStart=/home/elforcer/FlaskSite/MainSite/Gunicorn.sh
|
|
||||||
|
|
||||||
[Install]
|
|
||||||
WantedBy=multi-user.target
|
|
||||||
|
|
||||||
Reference in New Issue
Block a user