diff --git a/install.sh b/install.sh index 1343c8f..453dbb3 100644 --- a/install.sh +++ b/install.sh @@ -11,55 +11,64 @@ # Обновление таблиц и системы sysUpdate (){ - echo "===================================" >> $logsINST 2>&1 - echo "Обновление системы..." | tee -a $logsINST - echo "===================================" >> $logsINST 2>&1 - apt-get -y update >> $logsINST 2>&1 - apt-get -y upgrade >> $logsINST 2>&1 + echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null + echo "Обновление системы..." | tee -a "$logsInst" + echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null + apt-get -y update 2>&1 | sudo tee -a "$logsInst" > /dev/null + apt-get -y upgrade 2>&1 | sudo tee -a "$logsInst" > /dev/null } # Очистка экрана перед установкой clear # Создаём переменную для логов -logsINST="$(dirname "$0")/enginegp_install.log" +logsInst="$(dirname "$0")/enginegp_install.log" # Директория сохранения данных -saveDIR="/root/enginegp.cfg" +saveDir="/root/enginegp.cfg" # Обновление системы sysUpdate # Установка начальных пакетов. -pkgsREQ=(sudo curl lsb-release wget gnupg pwgen zip unzip bc tar software-properties-common git) +pkgsReq=("sudo" "curl" "lsb-release" "wget" "gnupg" "pwgen" "zip" "unzip" "bc" "tar" "software-properties-common" "git") # Цикл установки пакетов -for package in "${pkgsREQ[@]}"; do +for package in "${pkgsReq[@]}"; do if ! dpkg-query -W -f='${Status}' "$package" 2>/dev/null | grep -q "install ok installed"; then - echo "===================================" >> $logsINST 2>&1 - echo "$package не установлен. Выполняется установка..." | tee -a $logsINST - echo "===================================" >> $logsINST 2>&1 - apt-get install -y "$package" >> $logsINST 2>&1 + echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null + echo "$package не установлен. Выполняется установка..." | tee -a "$logsInst" + echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null + apt-get install -y "$package" 2>&1 | sudo tee -a "$logsInst" > /dev/null fi done # Массив с поддерживаемыми версиями операционной системы -suppOS=("Debian 11" "Debian 12" "Ubuntu 22.04" "Ubuntu 24.04") +suppOs=("Debian 11" "Debian 12" "Ubuntu 22.04" "Ubuntu 24.04") # Получаем текущую версию операционной системы -disOS=`lsb_release -si` -relOS=`lsb_release -sr` -currOS="$disOS $relOS" +disOs=$(lsb_release -si) +relOs=$(lsb_release -sr) +currOs="$disOs $relOs" + +# Проверка, есть ли currOs в массиве suppOs +foundOs=false +for os in "${suppOs[@]}"; do + if [[ "$os" == "$currOs" ]]; then + foundOs=true + break + fi +done # Файловый репозиторий -resURL="https://resources.enginegp.com" +resUrl="https://resources.enginegp.com" # Проверка аргументов командной строки if [ $# -gt 0 ]; then # Переменные для хранения - verPHP="" - sysIP="" - gitEGP="" + verPhp="" + sysIp="" + gitEgp="" # Перебор всех аргументов while [[ $# -gt 0 ]]; do @@ -68,19 +77,19 @@ if [ $# -gt 0 ]; then case $key in --php) # Если передан аргумент --php, сохранить указанную версию PHP - verPHP="$2" + verPhp="$2" shift # Пропустить значение версии shift # Пропустить аргумент --php ;; --ip) # Если передан аргумент --ip, сохранить указанный IP-адрес - sysIP="$2" + sysIp="$2" shift # Пропустить значение IP-адреса shift # Пропустить аргумент --ip ;; --branch) # Если передан аргумент --ip, сохранить указанный IP-адрес - gitEGP="$2" + gitEgp="$2" shift # Пропустить значение ветки shift # Пропустить аргумент --branch ;; @@ -97,30 +106,28 @@ if [ $# -gt 0 ]; then done # Если версия PHP не выбрана, использовать PHP 7.4 по умолчанию - if [ -z "$verPHP" ]; then - verPHP="7.4" + if [ -z "$verPhp" ]; then + verPhp="7.4" fi # Если IP-адрес не указан, получить внешний IP-адрес с помощью сервиса ipinfo.io - if [ -z "$sysIP" ]; then - sysIP=$(curl -s ipinfo.io/ip) + if [ -z "$sysIp" ]; then + sysIp=$(curl -s ipinfo.io/ip) fi # Если ветка не указана, использовать main - if [ -z "$gitEGP" ]; then - gitEGP="main" + if [ -z "$gitEgp" ]; then + gitEgp="main" fi else # Если нет аргументов, задаём по умолчанию - verPHP="7.4" - sysIP=$(curl -s ipinfo.io/ip) - gitEGP="main" + verPhp="7.4" + sysIp=$(curl -s ipinfo.io/ip) + gitEgp="main" fi # Проверяем, является ли полученный IP-адрес действительным IPv4 адресом -if [[ $sysIP =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$ ]]; then - sysIP=$sysIP -else +if [[ ! $sysIp =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$ ]]; then clear echo "Не удалось получить внешний IP-адрес" echo "Используй: ./install.sh [--ip IP-адрес]" @@ -136,101 +143,100 @@ while true; do echo "4. Системная информация" echo "0. Выход" - read -p "Выберите пункт меню: " choice + read -rp "Выберите пункт меню: " choice case $choice in 1) clear # Проверяем, содержится ли текущая версия в массиве поддерживаемых версий - if [[ " ${suppOS[@]} " =~ " ${currOS} " ]]; then + if $foundOs; then # Проверяем наличие репозитория php - if [[ " ${disOS} " =~ " Debian " ]]; then + if [[ " ${disOs} " =~ " Debian " ]]; then if [ ! -f "/etc/apt/sources.list.d/php.list" ]; then - echo "===================================" >> $logsINST 2>&1 - echo "Репозиторий php не обнаружен. Добавляем..." | tee -a $logsINST - echo "===================================" >> $logsINST 2>&1 + echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null + echo "Репозиторий php не обнаружен. Добавляем..." | tee -a "$logsInst" + echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null # Скачиваем ключа зеркала репозитория Sury - curl -sSLo /tmp/debsuryorg-archive-keyring.deb https://mirror.enginegp.com/sury/debsuryorg-archive-keyring.deb >> $logsINST 2>&1 + curl -sSLo /tmp/debsuryorg-archive-keyring.deb https://mirror.enginegp.com/sury/debsuryorg-archive-keyring.deb 2>&1 | sudo tee -a "$logsInst" > /dev/null # Устанавливаем ключа зеркала репозитория Sury - sudo dpkg -i /tmp/debsuryorg-archive-keyring.deb >> $logsINST 2>&1 + sudo dpkg -i /tmp/debsuryorg-archive-keyring.deb 2>&1 | sudo tee -a "$logsInst" > /dev/null # Добавляем репозиторий php - sudo sh -c 'echo "deb [signed-by=/usr/share/keyrings/deb.sury.org-php.gpg] https://mirror.enginegp.com/sury/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list' >> $logsINST 2>&1 + sh -c 'echo "deb [signed-by=/usr/share/keyrings/deb.sury.org-php.gpg] https://mirror.enginegp.com/sury/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list' 2>&1 | sudo tee -a "$logsInst" > /dev/null # Обновление таблиц и пакетов - sudo apt-get -y update >> $logsINST 2>&1 - sudo apt-get -y upgrade >> $logsINST 2>&1 + sudo apt-get -y update 2>&1 | sudo tee -a "$logsInst" > /dev/null + sudo apt-get -y upgrade 2>&1 | sudo tee -a "$logsInst" > /dev/null # Определяем версию php по умолчанию - defPHP=$(apt-cache policy php | awk -F ': ' '/Candidate:/ {split($2, a, "[:+~]"); print a[2]}') + defPhp=$(apt-cache policy php | awk -F ': ' '/Candidate:/ {split($2, a, "[:+~]"); print a[2]}') fi else if [ ! -f "/etc/apt/sources.list.d/ondrej-ubuntu-php-*.list" ]; then - echo "===================================" >> $logsINST 2>&1 - echo "Репозиторий php не обнаружен. Добавляем..." | tee -a $logsINST - echo "===================================" >> $logsINST 2>&1 + echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null + echo "Репозиторий php не обнаружен. Добавляем..." | tee -a "$logsInst" + echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null # Добавляем репозиторий php - sudo LC_ALL=C.UTF-8 add-apt-repository ppa:ondrej/php -y >> $logsINST 2>&1 + sudo LC_ALL=C.UTF-8 add-apt-repository ppa:ondrej/php -y 2>&1 | sudo tee -a "$logsInst" > /dev/null # Обновление таблиц и пакетов - sudo apt-get -y update >> $logsINST 2>&1 - sudo apt-get -y upgrade >> $logsINST 2>&1 + sudo apt-get -y update 2>&1 | sudo tee -a "$logsInst" > /dev/null + sudo apt-get -y upgrade 2>&1 | sudo tee -a "$logsInst" > /dev/null # Определяем версию php по умолчанию - defPHP=$(apt-cache policy php | awk -F ': ' '/Candidate:/ {split($2, a, "[:+~]"); print a[2]}') + defPhp=$(apt-cache policy php | awk -F ': ' '/Candidate:/ {split($2, a, "[:+~]"); print a[2]}') fi fi # Проверяем наличие репозитория nginx - if [[ " ${disOS} " =~ " Debian " ]]; then + if [[ " ${disOs} " =~ " Debian " ]]; then if [ ! -f "/etc/apt/sources.list.d/nginx.list" ]; then - echo "===================================" >> $logsINST 2>&1 - echo "Репозиторий nginx не обнаружен. Добавляем..." | tee -a $logsINST - echo "===================================" >> $logsINST 2>&1 + echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null + echo "Репозиторий nginx не обнаружен. Добавляем..." | tee -a "$logsInst" + echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null # Скачиваем ключа зеркала репозитория Sury - curl -sSLo /tmp/debsuryorg-archive-keyring.deb https://mirror.enginegp.com/sury/debsuryorg-archive-keyring.deb >> $logsINST 2>&1 + curl -sSLo /tmp/debsuryorg-archive-keyring.deb https://mirror.enginegp.com/sury/debsuryorg-archive-keyring.deb 2>&1 | sudo tee -a "$logsInst" > /dev/null # Устанавливаем ключа зеркала репозитория Sury - sudo dpkg -i /tmp/debsuryorg-archive-keyring.deb >> $logsINST 2>&1 + sudo dpkg -i /tmp/debsuryorg-archive-keyring.deb 2>&1 | sudo tee -a "$logsInst" > /dev/null # Добавляем репозиторий nginx - sudo sh -c 'echo "deb [signed-by=/usr/share/keyrings/deb.sury.org-nginx.gpg] https://mirror.enginegp.com/sury/nginx/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/nginx.list' >> $logsINST 2>&1 + sh -c 'echo "deb [signed-by=/usr/share/keyrings/deb.sury.org-nginx.gpg] https://mirror.enginegp.com/sury/nginx/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/nginx.list' 2>&1 | sudo tee -a "$logsInst" > /dev/null # Обновление таблиц и пакетов - sudo apt-get -y update >> $logsINST 2>&1 - sudo apt-get -y upgrade >> $logsINST 2>&1 + sudo apt-get -y update 2>&1 | sudo tee -a "$logsInst" > /dev/null + sudo apt-get -y upgrade 2>&1 | sudo tee -a "$logsInst" > /dev/null fi else if [ ! -f "/etc/apt/sources.list.d/ondrej-ubuntu-nginx-*.list" ]; then - echo "===================================" >> $logsINST 2>&1 - echo "Репозиторий nginx не обнаружен. Добавляем..." | tee -a $logsINST - echo "===================================" >> $logsINST 2>&1 + echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null + echo "Репозиторий nginx не обнаружен. Добавляем..." | tee -a "$logsInst" + echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null # Добавляем репозиторий nginx - sudo LC_ALL=C.UTF-8 add-apt-repository ppa:ondrej/nginx -y >> $logsINST 2>&1 + sudo LC_ALL=C.UTF-8 add-apt-repository ppa:ondrej/nginx -y 2>&1 | sudo tee -a "$logsInst" > /dev/null # Обновление таблиц и пакетов - sudo apt-get -y update >> $logsINST 2>&1 - sudo apt-get -y upgrade >> $logsINST 2>&1 + sudo apt-get -y update 2>&1 | sudo tee -a "$logsInst" > /dev/null + sudo apt-get -y upgrade 2>&1 | sudo tee -a "$logsInst" > /dev/null fi fi # Список пакетов для установки - pkgsLIST=(php$verPHP-fpm php$verPHP-common php$verPHP-cli php$verPHP-memcache php$verPHP-mysql php$verPHP-xml php$verPHP-mbstring php$verPHP-gd php$verPHP-imagick php$verPHP-zip php$verPHP-curl php$verPHP-ssh2 nginx mariadb-server ufw memcached screen cron) - pkgsPMA=(php$defPHP-fpm php$defPHP-mbstring php$defPHP-zip php$defPHP-gd php$defPHP-json php$defPHP-curl) + pkgsList=("php$verPhp-fpm" "php$verPhp-common" "php$verPhp-cli" "php$verPhp-memcache" "php$verPhp-mysql" "php$verPhp-xml" "php$verPhp-mbstring" "php$verPhp-gd" "php$verPhp-imagick" "php$verPhp-zip" "php$verPhp-curl" "php$verPhp-ssh2" "nginx" "mariadb-server" "ufw" "memcached" "screen" "cron") + pkgsPma=("php$defPhp-fpm" "php$defPhp-mbstring" "php$defPhp-zip" "php$defPhp-gd" "php$defPhp-json" "php$defPhp-curl") # Генерирование паролей и имён - passSQL=$(pwgen -cns -1 16) - passPMA=$(pwgen -cns -1 16) - usrEgpSQL="enginegp_$(pwgen -cns -1 8)" - dbEgpSQL="enginegp_$(pwgen -1 8)" - passEgpSQL=$(pwgen -cns -1 16) - usrEgpPASS=$(pwgen -cns -1 16) + passPma=$(pwgen -cns -1 16) + usrEgpSql="enginegp_$(pwgen -cns -1 8)" + dbEgpSql="enginegp_$(pwgen -1 8)" + passEgpSql=$(pwgen -cns -1 16) + usrEgpPass=$(pwgen -cns -1 16) # Конфигурация nginx для EngineGP nginx_enginegp="server { listen 80; - server_name $sysIP; + server_name $sysIp; root /var/www/enginegp; index index.php; @@ -275,7 +281,7 @@ while true; do location ~ \.php$ { include fastcgi_params; - fastcgi_pass unix:/run/php/php$verPHP-fpm.sock; + fastcgi_pass unix:/run/php/php$verPhp-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name; include fastcgi_params; @@ -285,7 +291,7 @@ while true; do # Конфигурация nginx для phpMyAdmin nginx_phpmyadmin="server { listen 9090; - server_name $sysIP; + server_name $sysIp; root /usr/share/phpmyadmin; index index.php; @@ -304,7 +310,7 @@ while true; do location ~ \.php$ { include fastcgi_params; - fastcgi_pass unix:/run/php/php$defPHP-fpm.sock; + fastcgi_pass unix:/run/php/php$defPhp-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name; include fastcgi_params; @@ -312,184 +318,185 @@ while true; do }" # Цикл установки пакетов - for package in "${pkgsLIST[@]}"; do + for package in "${pkgsList[@]}"; do # Проверка на наличие и установка пакетов if ! dpkg-query -W -f='${Status}' "$package" 2>/dev/null | grep -q "install ok installed"; then - echo "===================================" >> $logsINST 2>&1 - echo "$package не установлен. Выполняется установка..." | tee -a $logsINST - echo "===================================" >> $logsINST 2>&1 - sudo apt-get install -y "$package" >> $logsINST 2>&1 + echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null + echo "$package не установлен. Выполняется установка..." | tee -a "$logsInst" + echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null + sudo apt-get install -y "$package" 2>&1 | sudo tee -a "$logsInst" > /dev/null fi done # Цикл установки пакетов - for package in "${pkgsPMA[@]}"; do + for package in "${pkgsPma[@]}"; do # Проверка на наличие и установка пакетов if ! dpkg-query -W -f='${Status}' "$package" 2>/dev/null | grep -q "install ok installed"; then - echo "===================================" >> $logsINST 2>&1 - echo "$package не установлен. Выполняется установка..." | tee -a $logsINST - echo "===================================" >> $logsINST 2>&1 - sudo apt-get install -y "$package" >> $logsINST 2>&1 + echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null + echo "$package не установлен. Выполняется установка..." | tee -a "$logsInst" + echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null + sudo apt-get install -y "$package" 2>&1 | sudo tee -a "$logsInst" > /dev/null fi done # Установка phpMyAdmin if ! dpkg-query -W -f='${Status}' "phpmyadmin" 2>/dev/null | grep -q "install ok installed"; then - echo "===================================" >> $logsINST 2>&1 - echo "phpmyadmin не установлен. Выполняется установка..." | tee -a $logsINST - echo "===================================" >> $logsINST 2>&1 + echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null + echo "phpmyadmin не установлен. Выполняется установка..." | tee -a "$logsInst" + echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null sudo debconf-set-selections <> $logsINST 2>&1 - echo -e "$nginx_phpmyadmin" | sudo tee /etc/nginx/sites-available/00-phpmyadmin.conf >> $logsINST 2>&1 - sudo ln -s /etc/nginx/sites-available/00-phpmyadmin.conf /etc/nginx/sites-enabled/ >> $logsINST 2>&1 + sudo DEBIAN_FRONTEND="noninteractive" apt-get install -y phpmyadmin 2>&1 | sudo tee -a "$logsInst" > /dev/null + echo -e "$nginx_phpmyadmin" | sudo tee /etc/nginx/sites-available/00-phpmyadmin.conf 2>&1 | sudo tee -a "$logsInst" > /dev/null + sudo ln -s /etc/nginx/sites-available/00-phpmyadmin.conf /etc/nginx/sites-enabled/ 2>&1 | sudo tee -a "$logsInst" > /dev/null # Проводим тестирование и запускаем конфиг NGINX - sudo nginx -t >> $logsINST 2>&1 - sudo systemctl restart nginx >> $logsINST 2>&1 + sudo nginx -t 2>&1 | sudo tee -a "$logsInst" > /dev/null + sudo systemctl restart nginx 2>&1 | sudo tee -a "$logsInst" > /dev/null else - echo "===================================" >> $logsINST 2>&1 - echo "phpmyadmin уже установлен в системе. Продолжение установки невозможно." | tee -a $logsINST - echo "===================================" >> $logsINST 2>&1 - read -p "Нажмите Enter для завершения..." + echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null + echo "phpmyadmin уже установлен в системе. Продолжение установки невозможно." | tee -a "$logsInst" + echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null + read -rp "Нажмите Enter для завершения..." continue fi # Установка версии php по умолчанию - if [[ "$(php -v | grep -oP '(?<=PHP )(\d+\.\d+)')" != "$verPHP" ]]; then - sudo update-alternatives --set php /usr/bin/php$verPHP >> $logsINST 2>&1 - sudo update-alternatives --set php-config /usr/bin/php-config$verPHP >> $logsINST 2>&1 - sudo update-alternatives --set phpdbg /usr/bin/phpdbg$verPHP >> $logsINST 2>&1 - sudo update-alternatives --set phpize /usr/bin/phpize$verPHP >> $logsINST 2>&1 + if [[ "$(php -v | grep -oP '(?<=PHP )(\d+\.\d+)')" != "$verPhp" ]]; then + sudo update-alternatives --set php /usr/bin/php"$verPhp" 2>&1 | sudo tee -a "$logsInst" > /dev/null + sudo update-alternatives --set php-config /usr/bin/php-config"$verPhp" 2>&1 | sudo tee -a "$logsInst" > /dev/null + sudo update-alternatives --set phpdbg /usr/bin/phpdbg"$verPhp" 2>&1 | sudo tee -a "$logsInst" > /dev/null + sudo update-alternatives --set phpize /usr/bin/phpize"$verPhp" 2>&1 | sudo tee -a "$logsInst" > /dev/null fi # Проверяем установку php-fpm по умолчанию - if dpkg-query -W -f='${Status}' "php$defPHP-fpm" 2>/dev/null | grep -q "install ok installed"; then - if ! systemctl is-active --quiet php$defPHP-fpm; then - echo "===================================" >> $logsINST 2>&1 - echo "php$defPHP-fpm не запущен. Выполняется запуск..." | tee -a $logsINST - echo "===================================" >> $logsINST 2>&1 - sudo systemctl start php$defPHP-fpm >> $logsINST 2>&1 + if dpkg-query -W -f='${Status}' "php$defPhp-fpm" 2>/dev/null | grep -q "install ok installed"; then + if ! systemctl is-active --quiet php"$defPhp"-fpm; then + echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null + echo "php$defPhp-fpm не запущен. Выполняется запуск..." | tee -a "$logsInst" + echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null + sudo systemctl start php"$defPhp"-fpm 2>&1 | sudo tee -a "$logsInst" > /dev/null fi fi # Проверяем установку php-fpm для EngineGP - if dpkg-query -W -f='${Status}' "php$verPHP-fpm" 2>/dev/null | grep -q "install ok installed"; then - if ! systemctl is-active --quiet php$verPHP-fpm; then - echo "===================================" >> $logsINST 2>&1 - echo "php$verPHP-fpm не запущен. Выполняется запуск..." | tee -a $logsINST - echo "===================================" >> $logsINST 2>&1 - sudo systemctl start php$verPHP-fpm >> $logsINST 2>&1 + if dpkg-query -W -f='${Status}' "php$verPhp-fpm" 2>/dev/null | grep -q "install ok installed"; then + if ! systemctl is-active --quiet php"$verPhp"-fpm; then + echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null + echo "php$verPhp-fpm не запущен. Выполняется запуск..." | tee -a "$logsInst" + echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null + sudo systemctl start php"$verPhp"-fpm 2>&1 | sudo tee -a "$logsInst" > /dev/null fi fi # Установка и настрока composer if [ ! -f "/usr/local/bin/composer" ]; then - echo "===================================" >> $logsINST 2>&1 - echo "composer не установлен. Выполняется установка..." | tee -a $logsINST - echo "===================================" >> $logsINST 2>&1 - curl -sSL https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer >> $logsINST 2>&1 + echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null + echo "composer не установлен. Выполняется установка..." | tee -a "$logsInst" + echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null + curl -sSL https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer 2>&1 | sudo tee -a "$logsInst" > /dev/null fi # Установка EngineGP if [ ! -d "/var/www/enginegp" ]; then - echo "===================================" >> $logsINST 2>&1 - echo "enginegp не установлен. Выполняется установка..." | tee -a $logsINST - echo "===================================" >> $logsINST 2>&1 + echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null + echo "enginegp не установлен. Выполняется установка..." | tee -a "$logsInst" + echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null # Клонирование репозитория - sudo git clone --branch $gitEGP https://github.com/EngineGPDev/EngineGP.git /var/www/enginegp >> $logsINST 2>&1 + sudo git clone --branch "$gitEgp" https://github.com/EngineGPDev/EngineGP.git /var/www/enginegp 2>&1 | sudo tee -a "$logsInst" > /dev/null # Установка зависимостей composer - sudo COMPOSER_ALLOW_SUPERUSER=1 composer install --working-dir=/var/www/enginegp >> $logsINST 2>&1 + sudo COMPOSER_ALLOW_SUPERUSER=1 composer install --working-dir=/var/www/enginegp 2>&1 | sudo tee -a "$logsInst" > /dev/null # Хэширование пароля пользователя перед записью в базу данных - usrEgpHASH=$(php$verPHP -r "echo password_hash('$usrEgpPASS', PASSWORD_DEFAULT);") >> $logsINST 2>&1 + usrEgpHASH=$(php"$verPhp" -r "echo password_hash('$usrEgpPass', PASSWORD_DEFAULT);") # Настраиваем конфигурацию панели - sudo mv /var/www/enginegp/.env.example /var/www/enginegp/.env >> $logsINST 2>&1 - sed -i "s/example.com/$sysIP/g" /var/www/enginegp/.env >> $logsINST 2>&1 - sed -i "s/enginegp_db/$dbEgpSQL/g" /var/www/enginegp/.env >> $logsINST 2>&1 - sed -i "s/enginegp_usr/$usrEgpSQL/g" /var/www/enginegp/.env >> $logsINST 2>&1 - sed -i "s/enginegp_pwd/$passEgpSQL/g" /var/www/enginegp/.env >> $logsINST 2>&1 - sed -i "s/ENGINEGPHASH/$(echo "$usrEgpHASH" | sed 's/[\/&]/\\&/g')/g" /var/www/enginegp/enginegp.sql >> $logsINST 2>&1 + sudo mv /var/www/enginegp/.env.example /var/www/enginegp/.env 2>&1 | sudo tee -a "$logsInst" > /dev/null + sed -i "s/example.com/$sysIp/g" /var/www/enginegp/.env 2>&1 | sudo tee -a "$logsInst" > /dev/null + sed -i "s/enginegp_db/$dbEgpSql/g" /var/www/enginegp/.env 2>&1 | sudo tee -a "$logsInst" > /dev/null + sed -i "s/enginegp_usr/$usrEgpSql/g" /var/www/enginegp/.env 2>&1 | sudo tee -a "$logsInst" > /dev/null + sed -i "s/enginegp_pwd/$passEgpSql/g" /var/www/enginegp/.env 2>&1 | sudo tee -a "$logsInst" > /dev/null + sed -i "s/ENGINEGPHASH/$(echo "$usrEgpHASH" | sed 's/[\/&]/\\&/g')/g" /var/www/enginegp/enginegp.sql 2>&1 | sudo tee -a "$logsInst" > /dev/null # Создание пользователя - sudo mysql -e "CREATE USER '$usrEgpSQL'@'localhost' IDENTIFIED BY '$passEgpSQL';" >> $logsINST 2>&1 + sudo mysql -e "CREATE USER '$usrEgpSql'@'localhost' IDENTIFIED BY '$passEgpSql';" 2>&1 | sudo tee -a "$logsInst" > /dev/null # Создание базы данных - sudo mysql -e "CREATE DATABASE $dbEgpSQL CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;" >> $logsINST 2>&1 + sudo mysql -e "CREATE DATABASE $dbEgpSql CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;" 2>&1 | sudo tee -a "$logsInst" > /dev/null # Предоставление привилегий пользователю на базу данных - sudo mysql -e "GRANT ALL PRIVILEGES ON $dbEgpSQL.* TO '$usrEgpSQL'@'localhost';" >> $logsINST 2>&1 + sudo mysql -e "GRANT ALL PRIVILEGES ON $dbEgpSql.* TO '$usrEgpSql'@'localhost';" 2>&1 | sudo tee -a "$logsInst" > /dev/null # Применение изменений привилегий - sudo mysql -e "FLUSH PRIVILEGES;" >> $logsINST 2>&1 + sudo mysql -e "FLUSH PRIVILEGES;" 2>&1 | sudo tee -a "$logsInst" > /dev/null # Экспорт базы данных - sudo mysql -u $usrEgpSQL -p$passEgpSQL $dbEgpSQL < /var/www/enginegp/enginegp.sql >> $logsINST 2>&1 - rm /var/www/enginegp/enginegp.sql >> $logsINST 2>&1 + sudo cat /var/www/enginegp/enginegp.sql | sudo mysql -u "$usrEgpSql" -p"$passEgpSql" "$dbEgpSql" 2>&1 | sudo tee -a "$logsInst" > /dev/null + + rm /var/www/enginegp/enginegp.sql 2>&1 | sudo tee -a "$logsInst" > /dev/null else - echo "===================================" >> $logsINST 2>&1 - echo "enginegp уже установлен в системе. Продолжение установки невозможно." | tee -a $logsINST - echo "===================================" >> $logsINST 2>&1 - read -p "Нажмите Enter для завершения..." + echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null + echo "enginegp уже установлен в системе. Продолжение установки невозможно." | tee -a "$logsInst" + echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null + read -rp "Нажмите Enter для завершения..." continue fi # Выставляем права на каталог и файлы - sudo chown -R www-data:www-data /var/www/enginegp >> $logsINST 2>&1 - sudo find /var/www/enginegp -type f -exec chmod 644 {} \; >> $logsINST 2>&1 - sudo find /var/www/enginegp -type d -exec chmod 755 {} \; >> $logsINST 2>&1 + sudo chown -R www-data:www-data /var/www/enginegp 2>&1 | sudo tee -a "$logsInst" > /dev/null + sudo find /var/www/enginegp -type f -exec chmod 644 {} \; 2>&1 | sudo tee -a "$logsInst" > /dev/null + sudo find /var/www/enginegp -type d -exec chmod 755 {} \; 2>&1 | sudo tee -a "$logsInst" > /dev/null # Настраиваем nginx if dpkg-query -W -f='${Status}' "nginx" 2>/dev/null | grep -q "install ok installed"; then - echo "===================================" >> $logsINST 2>&1 - echo "nginx не настроен. Выполняется настройка..." | tee -a $logsINST - echo "===================================" >> $logsINST 2>&1 + echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null + echo "nginx не настроен. Выполняется настройка..." | tee -a "$logsInst" + echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null # Удаляем дефолтный и создаём конфиг EngineGP - sudo rm /etc/nginx/sites-enabled/default >> $logsINST 2>&1 - echo -e "$nginx_enginegp" | sudo tee /etc/nginx/sites-available/01-enginegp.conf >> $logsINST 2>&1 - sudo ln -s /etc/nginx/sites-available/01-enginegp.conf /etc/nginx/sites-enabled/ >> $logsINST 2>&1 + sudo rm /etc/nginx/sites-enabled/default 2>&1 | sudo tee -a "$logsInst" > /dev/null + echo -e "$nginx_enginegp" | sudo tee /etc/nginx/sites-available/01-enginegp.conf 2>&1 | sudo tee -a "$logsInst" > /dev/null + sudo ln -s /etc/nginx/sites-available/01-enginegp.conf /etc/nginx/sites-enabled/ 2>&1 | sudo tee -a "$logsInst" > /dev/null # Проводим тестирование и запускаем конфиг NGINX - sudo nginx -t >> $logsINST 2>&1 - sudo systemctl restart nginx >> $logsINST 2>&1 + sudo nginx -t 2>&1 | sudo tee -a "$logsInst" > /dev/null + sudo systemctl restart nginx 2>&1 | sudo tee -a "$logsInst" > /dev/null else - echo "===================================" >> $logsINST 2>&1 - echo "NGINX не установлен. Продолжение установки невозможно." | tee -a $logsINST - echo "===================================" >> $logsINST 2>&1 - read -p "Нажмите Enter для завершения..." + echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null + echo "NGINX не установлен. Продолжение установки невозможно." | tee -a "$logsInst" + echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null + read -rp "Нажмите Enter для завершения..." continue fi # Сообщение о завершении установки - echo "===================================" | tee -a $saveDIR - echo "Установка завершена!" | tee -a $saveDIR - echo "Ссылка на EngineGP: http://$sysIP/" | tee -a $saveDIR - echo "Пользователь: admin" | tee -a $saveDIR - echo "Пароль: $usrEgpPASS" | tee -a $saveDIR - echo "===================================" | tee -a $saveDIR - echo "MySQL данные для EngineGP" | tee -a $saveDIR - echo "Ссылка на phpMyAdmin: http://$sysIP:9090/" | tee -a $saveDIR - echo "База данных: $dbEgpSQL" | tee -a $saveDIR - echo "Пользователь: $usrEgpSQL" | tee -a $saveDIR - echo "Пароль: $passEgpSQL" | tee -a $saveDIR - echo "===================================" | tee -a $saveDIR - echo "Системные данные MySQL" | tee -a $saveDIR - echo "Пароль пользователя phpmyadmin: $passPMA" | tee -a $saveDIR - echo "===================================" | tee -a $saveDIR - read -p "Нажмите Enter для завершения..." + echo "===================================" | tee -a $saveDir + echo "Установка завершена!" | tee -a $saveDir + echo "Ссылка на EngineGP: http://$sysIp/" | tee -a $saveDir + echo "Пользователь: admin" | tee -a $saveDir + echo "Пароль: $usrEgpPass" | tee -a $saveDir + echo "===================================" | tee -a $saveDir + echo "MySQL данные для EngineGP" | tee -a $saveDir + echo "Ссылка на phpMyAdmin: http://$sysIp:9090/" | tee -a $saveDir + echo "База данных: $dbEgpSql" | tee -a $saveDir + echo "Пользователь: $usrEgpSql" | tee -a $saveDir + echo "Пароль: $passEgpSql" | tee -a $saveDir + echo "===================================" | tee -a $saveDir + echo "Системные данные MySQL" | tee -a $saveDir + echo "Пароль пользователя phpmyadmin: $passPma" | tee -a $saveDir + echo "===================================" | tee -a $saveDir + read -rp "Нажмите Enter для завершения..." continue else - echo "===================================" >> $logsINST 2>&1 - echo "Вы используете неподдерживаемую версию Linux" | tee -a $logsINST - echo "===================================" >> $logsINST 2>&1 - read -p "Нажмите Enter для завершения..." + echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null + echo "Вы используете неподдерживаемую версию Linux" | tee -a "$logsInst" + echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null + read -rp "Нажмите Enter для завершения..." fi ;; 2) @@ -498,37 +505,37 @@ EOF passProFTPD=$(pwgen -cns -1 16) # Проверяем, содержится ли текущая версия в массиве поддерживаемых версий - if [[ " ${suppOS[@]} " =~ " ${currOS} " ]]; then + if $foundOs; then # Проверяем наличие репозитория nginx - if [[ " ${disOS} " =~ " Debian " ]]; then + if [[ " ${disOs} " =~ " Debian " ]]; then if [ ! -f "/etc/apt/sources.list.d/nginx.list" ]; then - echo "===================================" >> $logsINST 2>&1 - echo "Репозиторий nginx не обнаружен. Добавляем..." | tee -a $logsINST - echo "===================================" >> $logsINST 2>&1 + echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null + echo "Репозиторий nginx не обнаружен. Добавляем..." | tee -a "$logsInst" + echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null # Скачиваем ключа зеркала репозитория Sury - curl -sSLo /tmp/debsuryorg-archive-keyring.deb https://mirror.enginegp.com/sury/debsuryorg-archive-keyring.deb >> $logsINST 2>&1 + curl -sSLo /tmp/debsuryorg-archive-keyring.deb https://mirror.enginegp.com/sury/debsuryorg-archive-keyring.deb 2>&1 | sudo tee -a "$logsInst" > /dev/null # Устанавливаем ключа зеркала репозитория Sury - sudo dpkg -i /tmp/debsuryorg-archive-keyring.deb >> $logsINST 2>&1 + sudo dpkg -i /tmp/debsuryorg-archive-keyring.deb 2>&1 | sudo tee -a "$logsInst" > /dev/null # Добавляем репозиторий nginx - sudo sh -c 'echo "deb [signed-by=/usr/share/keyrings/deb.sury.org-nginx.gpg] https://mirror.enginegp.com/sury/nginx/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/nginx.list' >> $logsINST 2>&1 + sh -c 'echo "deb [signed-by=/usr/share/keyrings/deb.sury.org-nginx.gpg] https://mirror.enginegp.com/sury/nginx/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/nginx.list' 2>&1 | sudo tee -a "$logsInst" > /dev/null # Обновление таблиц и пакетов - sudo apt-get -y update >> $logsINST 2>&1 - sudo apt-get -y upgrade >> $logsINST 2>&1 + sudo apt-get -y update 2>&1 | sudo tee -a "$logsInst" > /dev/null + sudo apt-get -y upgrade 2>&1 | sudo tee -a "$logsInst" > /dev/null fi else if [ ! -f "/etc/apt/sources.list.d/ondrej-ubuntu-nginx-*.list" ]; then - echo "===================================" >> $logsINST 2>&1 - echo "Репозиторий nginx не обнаружен. Добавляем..." | tee -a $logsINST - echo "===================================" >> $logsINST 2>&1 + echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null + echo "Репозиторий nginx не обнаружен. Добавляем..." | tee -a "$logsInst" + echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null # Добавляем репозиторий nginx - sudo LC_ALL=C.UTF-8 add-apt-repository ppa:ondrej/nginx -y >> $logsINST 2>&1 + sudo LC_ALL=C.UTF-8 add-apt-repository ppa:ondrej/nginx -y 2>&1 | sudo tee -a "$logsInst" > /dev/null # Обновление таблиц и пакетов - sudo apt-get -y update >> $logsINST 2>&1 - sudo apt-get -y upgrade >> $logsINST 2>&1 + sudo apt-get -y update 2>&1 | sudo tee -a "$logsInst" > /dev/null + sudo apt-get -y upgrade 2>&1 | sudo tee -a "$logsInst" > /dev/null fi fi @@ -557,172 +564,172 @@ EOF } }" - pkgsLOC=(glibc-source lib32z1 libbabeltrace1 libc6-dbg libdw1 lib32stdc++6 libreadline8 lib32gcc-s1 screen tcpdump lsof qstat gdb-minimal ntpdate gcc-multilib iptables default-jdk nginx mariadb-server) + pkgsLOC=("glibc-source" "lib32z1" "libbabeltrace1" "libc6-dbg" "libdw1" "lib32stdc++6" "libreadline8" "lib32gcc-s1" "screen" "tcpdump" "lsof" "qstat" "gdb-minimal" "ntpdate" "gcc-multilib" "iptables" "default-jdk" "nginx" "mariadb-server") if ! dpkg --print-foreign-architectures | grep -q "i386"; then - echo "===================================" >> $logsINST 2>&1 - echo "Архитектура i386 не добавлена. Выполняется добавление..." | tee -a $logsINST - echo "===================================" >> $logsINST 2>&1 - sudo dpkg --add-architecture i386 >> $logsINST 2>&1 + echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null + echo "Архитектура i386 не добавлена. Выполняется добавление..." | tee -a "$logsInst" + echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null + sudo dpkg --add-architecture i386 2>&1 | sudo tee -a "$logsInst" > /dev/null # Обновление таблиц - sudo apt-get -y update >> $logsINST 2>&1 + sudo apt-get -y update 2>&1 | sudo tee -a "$logsInst" > /dev/null fi # Цикл установки пакетов for package in "${pkgsLOC[@]}"; do # Проверка на наличие и установка пакетов if ! dpkg-query -W -f='${Status}' "$package" 2>/dev/null | grep -q "install ok installed"; then - echo "===================================" >> $logsINST 2>&1 - echo "$package не установлен. Выполняется установка..." | tee -a $logsINST - echo "===================================" >> $logsINST 2>&1 - sudo apt-get install -y "$package" >> $logsINST 2>&1 + echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null + echo "$package не установлен. Выполняется установка..." | tee -a "$logsInst" + echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null + sudo apt-get install -y "$package" 2>&1 | sudo tee -a "$logsInst" > /dev/null fi done # Настраиваем FastDL if [ ! -f /etc/nginx/sites-available/02-fastdl.conf ]; then # Создаём каталог и выдаём ему права - sudo mkdir -p /var/nginx >> $logsINST 2>&1 - sudo chmod -R 755 /var/nginx >> $logsINST 2>&1 + sudo mkdir -p /var/nginx 2>&1 | sudo tee -a "$logsInst" > /dev/null + sudo chmod -R 755 /var/nginx 2>&1 | sudo tee -a "$logsInst" > /dev/null - echo "===================================" >> $logsINST 2>&1 - echo "fastdl не настроен. Выполняется настройка..." | tee -a $logsINST - echo "===================================" >> $logsINST 2>&1 + echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null + echo "fastdl не настроен. Выполняется настройка..." | tee -a "$logsInst" + echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null # Удаляем дефолтный конфиг и создаём для FastDL - sudo rm /etc/nginx/sites-enabled/default >> $logsINST 2>&1 - echo -e "$nginx_fastdl" | sudo tee /etc/nginx/sites-available/02-fastdl.conf >> $logsINST 2>&1 - sudo ln -s /etc/nginx/sites-available/02-fastdl.conf /etc/nginx/sites-enabled/ >> $logsINST 2>&1 + sudo rm /etc/nginx/sites-enabled/default 2>&1 | sudo tee -a "$logsInst" > /dev/null + echo -e "$nginx_fastdl" | sudo tee /etc/nginx/sites-available/02-fastdl.conf 2>&1 | sudo tee -a "$logsInst" > /dev/null + sudo ln -s /etc/nginx/sites-available/02-fastdl.conf /etc/nginx/sites-enabled/ 2>&1 | sudo tee -a "$logsInst" > /dev/null # Проводим тестирование и запускаем конфиг NGINX - sudo nginx -t >> $logsINST 2>&1 - sudo systemctl restart nginx >> $logsINST 2>&1 + sudo nginx -t 2>&1 | sudo tee -a "$logsInst" > /dev/null + sudo systemctl restart nginx 2>&1 | sudo tee -a "$logsInst" > /dev/null else - echo "===================================" >> $logsINST 2>&1 - echo "fastdl не установлен. Продолжение установки невозможно." | tee -a $logsINST - echo "===================================" >> $logsINST 2>&1 - read -p "Нажмите Enter для завершения..." + echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null + echo "fastdl не установлен. Продолжение установки невозможно." | tee -a "$logsInst" + echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null + read -rp "Нажмите Enter для завершения..." continue fi # Устанавливаем ProFTPD if ! dpkg-query -W -f='${Status}' "proftpd" 2>/dev/null | grep -q "install ok installed"; then - echo "===================================" >> $logsINST 2>&1 - echo "proftpd не установлен. Выполняется установка..." | tee -a $logsINST - echo "===================================" >> $logsINST 2>&1 + echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null + echo "proftpd не установлен. Выполняется установка..." | tee -a "$logsInst" + echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null # Устанавливаем ProFTPD и необходимые модули echo "proftpd shared/proftpd/inetd_or_standalone select standalone" | debconf-set-selections - sudo apt-get install -y proftpd-basic proftpd-mod-mysql >> $logsINST 2>&1 + sudo apt-get install -y proftpd-basic proftpd-mod-mysql 2>&1 | sudo tee -a "$logsInst" > /dev/null # Скачиваем конфигурационные файлы ProFTPD - curl -o /etc/proftpd/proftpd.conf $resURL/Components/ProFTPD/proftpd >> $logsINST 2>&1 - curl -o /etc/proftpd/modules.conf $resURL/Components/ProFTPD/proftpd_modules >> $logsINST 2>&1 - curl -o /etc/proftpd/sql.conf $resURL/Components/ProFTPD/proftpd_sql >> $logsINST 2>&1 + curl -o /etc/proftpd/proftpd.conf $resUrl/Components/ProFTPD/proftpd 2>&1 | sudo tee -a "$logsInst" > /dev/null + curl -o /etc/proftpd/modules.conf $resUrl/Components/ProFTPD/proftpd_modules 2>&1 | sudo tee -a "$logsInst" > /dev/null + curl -o /etc/proftpd/sql.conf $resUrl/Components/ProFTPD/proftpd_sql 2>&1 | sudo tee -a "$logsInst" > /dev/null # Создаем базу данных для ProFTPD - sudo mysql -e "CREATE DATABASE ftp CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;" >> $logsINST 2>&1 + sudo mysql -e "CREATE DATABASE ftp CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;" 2>&1 | sudo tee -a "$logsInst" > /dev/null # Создаем пользователя для ProFTPD и предоставляем ему все права на базу данных ftp - sudo mysql -e "CREATE USER 'ftp'@'localhost' IDENTIFIED BY '$passProFTPD';" >> $logsINST 2>&1 - sudo mysql -e "GRANT ALL PRIVILEGES ON ftp . * TO 'ftp'@'localhost';" >> $logsINST 2>&1 + sudo mysql -e "CREATE USER 'ftp'@'localhost' IDENTIFIED BY '$passProFTPD';" 2>&1 | sudo tee -a "$logsInst" > /dev/null + sudo mysql -e "GRANT ALL PRIVILEGES ON ftp . * TO 'ftp'@'localhost';" 2>&1 | sudo tee -a "$logsInst" > /dev/null # Импортируем дамп базы данных для ProFTPD - curl -sSL $resURL/Components/ProFTPD/sqldump.sql | sudo mysql ftp >> $logsINST 2>&1 + curl -sSL $resUrl/Components/ProFTPD/sqldump.sql | sudo mysql ftp 2>&1 | sudo tee -a "$logsInst" > /dev/null # Заменяем passwdfor на реальный пароль в конфигурационном файле - sed -i 's/passwdfor/'$passProFTPD'/g' /etc/proftpd/sql.conf >> $logsINST 2>&1 + sed -i 's/passwdfor/'"$passProFTPD"'/g' /etc/proftpd/sql.conf 2>&1 | sudo tee -a "$logsInst" > /dev/null # Устанавливаем права доступа на конфигурационные файлы - chmod -R 750 /etc/proftpd >> $logsINST 2>&1 + chmod -R 750 /etc/proftpd 2>&1 | sudo tee -a "$logsInst" > /dev/null # Перезапускаем ProFTPD для применения изменений - systemctl restart proftpd >> $logsINST 2>&1 + systemctl restart proftpd 2>&1 | sudo tee -a "$logsInst" > /dev/null else - echo "===================================" >> $logsINST 2>&1 - echo "proftpd уже установлен. Продолжение установки невозможно." | tee -a $logsINST - echo "===================================" >> $logsINST 2>&1 - read -p "Нажмите Enter для завершения..." + echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null + echo "proftpd уже установлен. Продолжение установки невозможно." | tee -a "$logsInst" + echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null + read -rp "Нажмите Enter для завершения..." continue fi # Настраиваем rclocal if [ ! -f /etc/rc.local ]; then - echo "===================================" >> $logsINST 2>&1 - echo "rc.local не настроен. Выполняется настройка..." | tee -a $logsINST - echo "===================================" >> $logsINST 2>&1 - sudo touch /etc/rc.local >> $logsINST 2>&1 - echo '#!/bin/bash' | sudo tee -a /etc/rc.local >> $logsINST 2>&1 - echo "/root/iptables_block" | sudo tee -a /etc/rc.local >> $logsINST 2>&1 - echo "exit 0" | sudo tee -a /etc/rc.local >> $logsINST 2>&1 - sudo chmod +x /etc/rc.local >> $logsINST 2>&1 + echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null + echo "rc.local не настроен. Выполняется настройка..." | tee -a "$logsInst" + echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null + sudo touch /etc/rc.local 2>&1 | sudo tee -a "$logsInst" > /dev/null + echo '#!/bin/bash' | sudo tee -a /etc/rc.local 2>&1 | sudo tee -a "$logsInst" > /dev/null + echo "/root/iptables_block" | sudo tee -a /etc/rc.local 2>&1 | sudo tee -a "$logsInst" > /dev/null + echo "exit 0" | sudo tee -a /etc/rc.local 2>&1 | sudo tee -a "$logsInst" > /dev/null + sudo chmod +x /etc/rc.local 2>&1 | sudo tee -a "$logsInst" > /dev/null fi # Настраиваем iptables if dpkg-query -W -f='${Status}' "iptables" 2>/dev/null | grep -q "install ok installed"; then - echo "===================================" >> $logsINST 2>&1 - echo "iptables не настроен. Выполняется настройка..." | tee -a $logsINST - echo "===================================" >> $logsINST 2>&1 + echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null + echo "iptables не настроен. Выполняется настройка..." | tee -a "$logsInst" + echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null # Проверка на наличие файла if [ ! -f /root/iptables_block ]; then - sudo touch /root/iptables_block >> $logsINST 2>&1 - sudo chmod 500 /root/iptables_block >> $logsINST 2>&1 + sudo touch /root/iptables_block 2>&1 | sudo tee -a "$logsInst" > /dev/null + sudo chmod 500 /root/iptables_block 2>&1 | sudo tee -a "$logsInst" > /dev/null else - sudo chmod 500 /root/iptables_block >> $logsINST 2>&1 + sudo chmod 500 /root/iptables_block 2>&1 | sudo tee -a "$logsInst" > /dev/null fi else - echo "===================================" >> $logsINST 2>&1 - echo "iptables уже установлен. Продолжение установки невозможно." | tee -a $logsINST - echo "===================================" >> $logsINST 2>&1 - read -p "Нажмите Enter для завершения..." + echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null + echo "iptables уже установлен. Продолжение установки невозможно." | tee -a "$logsInst" + echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null + read -rp "Нажмите Enter для завершения..." continue fi # Установка SteamCMD if [ ! -d "/path/cmd" ]; then - echo "===================================" >> $logsINST 2>&1 - echo "steamcmd не настроен. Выполняется настройка..." | tee -a $logsINST - echo "===================================" >> $logsINST 2>&1 - sudo groupadd -f servers >> $logsINST 2>&1 + echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null + echo "steamcmd не настроен. Выполняется настройка..." | tee -a "$logsInst" + echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null + sudo groupadd -f servers 2>&1 | sudo tee -a "$logsInst" > /dev/null - sudo mkdir -p /path /path/cmd /path/update /path/maps >> $logsINST 2>&1 - sudo chmod -R 755 /path >> $logsINST 2>&1 - sudo chown root:servers /path >> $logsINST 2>&1 + sudo mkdir -p /path /path/cmd /path/update /path/maps 2>&1 | sudo tee -a "$logsInst" > /dev/null + sudo chmod -R 755 /path 2>&1 | sudo tee -a "$logsInst" > /dev/null + sudo chown root:servers /path 2>&1 | sudo tee -a "$logsInst" > /dev/null - sudo mkdir -p /servers >> $logsINST 2>&1 - sudo chmod -R 711 /servers >> $logsINST 2>&1 - sudo chown root:servers /servers >> $logsINST 2>&1 + sudo mkdir -p /servers 2>&1 | sudo tee -a "$logsInst" > /dev/null + sudo chmod -R 711 /servers 2>&1 | sudo tee -a "$logsInst" > /dev/null + sudo chown root:servers /servers 2>&1 | sudo tee -a "$logsInst" > /dev/null - sudo mkdir -p /copy >> $logsINST 2>&1 - sudo chmod -R 750 /copy >> $logsINST 2>&1 - sudo chown root:root /copy >> $logsINST 2>&1 + sudo mkdir -p /copy 2>&1 | sudo tee -a "$logsInst" > /dev/null + sudo chmod -R 750 /copy 2>&1 | sudo tee -a "$logsInst" > /dev/null + sudo chown root:root /copy 2>&1 | sudo tee -a "$logsInst" > /dev/null - curl -SL -o steamcmd_linux.tar.gz http://media.steampowered.com/client/steamcmd_linux.tar.gz >> $logsINST 2>&1 - sudo tar -xzf steamcmd_linux.tar.gz -C /path/cmd >> $logsINST 2>&1 - sudo rm steamcmd_linux.tar.gz >> $logsINST 2>&1 - sudo chmod +x /path/cmd/steamcmd.sh >> $logsINST 2>&1 - sudo /path/cmd/steamcmd.sh +quit >> $logsINST 2>&1 + curl -SL -o steamcmd_linux.tar.gz http://media.steampowered.com/client/steamcmd_linux.tar.gz 2>&1 | sudo tee -a "$logsInst" > /dev/null + sudo tar -xzf steamcmd_linux.tar.gz -C /path/cmd 2>&1 | sudo tee -a "$logsInst" > /dev/null + sudo rm steamcmd_linux.tar.gz 2>&1 | sudo tee -a "$logsInst" > /dev/null + sudo chmod +x /path/cmd/steamcmd.sh 2>&1 | sudo tee -a "$logsInst" > /dev/null + sudo /path/cmd/steamcmd.sh +quit 2>&1 | sudo tee -a "$logsInst" > /dev/null else - echo "===================================" >> $logsINST 2>&1 - echo "steamcmd уже установлен. Продолжение установки невозможно...." | tee -a $logsINST - echo "===================================" >> $logsINST 2>&1 - read -p "Нажмите Enter для завершения..." + echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null + echo "steamcmd уже установлен. Продолжение установки невозможно...." | tee -a "$logsInst" + echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null + read -rp "Нажмите Enter для завершения..." continue fi - echo "===================================" | tee -a $saveDIR - echo "Данные локации" | tee -a $saveDIR - echo "SQL_Username: ftp" | tee -a $saveDIR - echo "SQL_Password: $passProFTPD" | tee -a $saveDIR - echo "SQL_FileTP: ftp" | tee -a $saveDIR - echo "SQL_Port: 3306" | tee -a $saveDIR - echo "===================================" | tee -a $saveDIR - read -p "Нажмите Enter для завершения..." + echo "===================================" | tee -a $saveDir + echo "Данные локации" | tee -a $saveDir + echo "SQL_Username: ftp" | tee -a $saveDir + echo "SQL_Password: $passProFTPD" | tee -a $saveDir + echo "SQL_FileTP: ftp" | tee -a $saveDir + echo "SQL_Port: 3306" | tee -a $saveDir + echo "===================================" | tee -a $saveDir + read -rp "Нажмите Enter для завершения..." continue else - echo "===================================" >> $logsINST 2>&1 - echo "Вы используете неподдерживаемую версию Linux" | tee -a $logsINST - echo "===================================" >> $logsINST 2>&1 - read -p "Нажмите Enter для завершения..." + echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null + echo "Вы используете неподдерживаемую версию Linux" | tee -a "$logsInst" + echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null + read -rp "Нажмите Enter для завершения..." fi ;; 3) @@ -743,22 +750,22 @@ EOF echo "10. RUST" echo "0. Вернуться в предыдущее меню" - read -p "Выберите пункт меню: " game_choice + read -rp "Выберите пункт меню: " game_choice case $game_choice in 1) clear - mkdir -p /path/cs /path/update/cs /path/maps/cs /servers/cs >> $logsINST 2>&1 + mkdir -p /path/cs /path/update/cs /path/maps/cs /servers/cs 2>&1 | sudo tee -a "$logsInst" > /dev/null echo "Меню установки Counter-Strike: 1.6" echo "1. Steam" echo "0. Вернуться в предыдущее меню" - read -p "Выберите пункт меню: " cs16_choice + read -rp "Выберите пункт меню: " cs16_choice case $cs16_choice in 1) - mkdir -p /path/cs/steam 2>&1 | tee -a ${logsINST} - sudo /path/cmd/steamcmd.sh +force_install_dir /path/cs/steam +login anonymous +app_update 90 -beta beta validate +quit 2>&1 | tee -a ${logsINST} + mkdir -p /path/cs/steam 2>&1 | tee -a "${logsInst}" + sudo /path/cmd/steamcmd.sh +force_install_dir /path/cs/steam +login anonymous +app_update 90 -beta beta validate +quit 2>&1 | tee -a "${logsInst}" cs16_choice ;; 0) @@ -766,27 +773,27 @@ EOF ;; *) clear - echo "===================================" >> $logsINST 2>&1 - echo "Неверный выбор. Попробуйте еще раз." | tee -a $logsINST - echo "===================================" >> $logsINST 2>&1 + echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null + echo "Неверный выбор. Попробуйте еще раз." | tee -a "$logsInst" + echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null ;; esac ;; 2) clear - mkdir -p /path/cssold /path/update/cssold /path/maps/cssold /servers/cssold >> $logsINST 2>&1 + mkdir -p /path/cssold /path/update/cssold /path/maps/cssold /servers/cssold 2>&1 | sudo tee -a "$logsInst" > /dev/null echo "Меню установки Counter-Strike: Source v34" echo "1. Steam" echo "0. Вернуться в предыдущее меню" - read -p "Выберите пункт меню: " css34_choice + read -rp "Выберите пункт меню: " css34_choice case $css34_choice in 1) - mkdir -p /path/cssold/steam 2>&1 | tee -a ${logsINST} - curl -SL -o /path/cssold/steam/steam.zip $gamesURL/cssold/steam.zip 2>&1 | tee -a ${logsINST} - sudo unzip /path/cssold/steam/steam.zip -d /path/cssold/steam/ 2>&1 | tee -a ${logsINST} - sudo rm /path/cssold/steam/steam.zip | tee -a $logsINST 2>&1 | tee -a ${logsINST} + mkdir -p /path/cssold/steam 2>&1 | tee -a "${logsInst}" + curl -SL -o /path/cssold/steam/steam.zip $gamesURL/cssold/steam.zip 2>&1 | tee -a "${logsInst}" + sudo unzip /path/cssold/steam/steam.zip -d /path/cssold/steam/ 2>&1 | tee -a "${logsInst}" + sudo rm /path/cssold/steam/steam.zip | tee -a "$logsInst" 2>&1 | tee -a "${logsInst}" css34_choice ;; 0) @@ -794,27 +801,27 @@ EOF ;; *) clear - echo "===================================" >> $logsINST 2>&1 - echo "Неверный выбор. Попробуйте еще раз." | tee -a $logsINST - echo "===================================" >> $logsINST 2>&1 + echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null + echo "Неверный выбор. Попробуйте еще раз." | tee -a "$logsInst" + echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null ;; esac ;; 3) clear - mkdir -p /path/css /path/update/css /path/maps/css /servers/css >> $logsINST 2>&1 + mkdir -p /path/css /path/update/css /path/maps/css /servers/css 2>&1 | sudo tee -a "$logsInst" > /dev/null echo "Меню установки Counter-Strike: Source" echo "1. Steam" echo "0. Вернуться в предыдущее меню" - read -p "Выберите пункт меню: " css_choice + read -rp "Выберите пункт меню: " css_choice case $css_choice in 1) - mkdir -p /path/css/steam 2>&1 | tee -a ${logsINST} - curl -SL -o /path/css/steam/steam.zip $gamesURL/css/steam.zip 2>&1 | tee -a ${logsINST} - sudo unzip /path/css/steam/steam.zip -d /path/css/steam/ 2>&1 | tee -a ${logsINST} - sudo rm /path/css/steam/steam.zip | tee -a $logsINST 2>&1 | tee -a ${logsINST} + mkdir -p /path/css/steam 2>&1 | tee -a "${logsInst}" + curl -SL -o /path/css/steam/steam.zip $gamesURL/css/steam.zip 2>&1 | tee -a "${logsInst}" + sudo unzip /path/css/steam/steam.zip -d /path/css/steam/ 2>&1 | tee -a "${logsInst}" + sudo rm /path/css/steam/steam.zip | tee -a "$logsInst" 2>&1 | tee -a "${logsInst}" css_choice ;; 0) @@ -822,25 +829,25 @@ EOF ;; *) clear - echo "===================================" >> $logsINST 2>&1 - echo "Неверный выбор. Попробуйте еще раз." | tee -a $logsINST - echo "===================================" >> $logsINST 2>&1 + echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null + echo "Неверный выбор. Попробуйте еще раз." | tee -a "$logsInst" + echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null ;; esac ;; 4) clear - mkdir -p /path/csgo /path/update/csgo /path/maps/csgo /servers/csgo >> $logsINST 2>&1 + mkdir -p /path/csgo /path/update/csgo /path/maps/csgo /servers/csgo 2>&1 | sudo tee -a "$logsInst" > /dev/null echo "Меню установки Counter-Strike: GO" echo "1. Steam" echo "0. Вернуться в предыдущее меню" - read -p "Выберите пункт меню: " csgo_choice + read -rp "Выберите пункт меню: " csgo_choice case $csgo_choice in 1) - mkdir -p /path/csgo/steam 2>&1 | tee -a ${logsINST} - /path/cmd/steamcmd.sh +force_install_dir /path/csgo/steam +login anonymous +app_update 740 validate +quit 2>&1 | tee -a ${logsINST} + mkdir -p /path/csgo/steam 2>&1 | tee -a "${logsInst}" + /path/cmd/steamcmd.sh +force_install_dir /path/csgo/steam +login anonymous +app_update 740 validate +quit 2>&1 | tee -a "${logsInst}" csgo_choice ;; 0) @@ -848,25 +855,25 @@ EOF ;; *) clear - echo "===================================" >> $logsINST 2>&1 - echo "Неверный выбор. Попробуйте еще раз." | tee -a $logsINST - echo "===================================" >> $logsINST 2>&1 + echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null + echo "Неверный выбор. Попробуйте еще раз." | tee -a "$logsInst" + echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null ;; esac ;; 5) clear - mkdir -p /path/cs2 /path/update/cs2 /path/maps/cs2 /servers/cs2 >> $logsINST 2>&1 + mkdir -p /path/cs2 /path/update/cs2 /path/maps/cs2 /servers/cs2 2>&1 | sudo tee -a "$logsInst" > /dev/null echo "Меню установки Counter-Strike: 2" echo "1. Steam" echo "0. Вернуться в предыдущее меню" - read -p "Выберите пункт меню: " cs2_choice + read -rp "Выберите пункт меню: " cs2_choice case $cs2_choice in 1) - mkdir -p /path/cs2/steam 2>&1 | tee -a ${logsINST} - /path/cmd/steamcmd.sh +force_install_dir /path/cs2/steam +login anonymous +app_update 730 validate +quit 2>&1 | tee -a ${logsINST} + mkdir -p /path/cs2/steam 2>&1 | tee -a "${logsInst}" + /path/cmd/steamcmd.sh +force_install_dir /path/cs2/steam +login anonymous +app_update 730 validate +quit 2>&1 | tee -a "${logsInst}" cs2_choice ;; 0) @@ -874,9 +881,9 @@ EOF ;; *) clear - echo "===================================" >> $logsINST 2>&1 - echo "Неверный выбор. Попробуйте еще раз." | tee -a $logsINST - echo "===================================" >> $logsINST 2>&1 + echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null + echo "Неверный выбор. Попробуйте еще раз." | tee -a "$logsInst" + echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null ;; esac ;; @@ -899,12 +906,12 @@ EOF echo "1. Steam" echo "0. Вернуться в предыдущее меню" - read -p "Выберите пункт меню: " rust_choice + read -rp "Выберите пункт меню: " rust_choice case $rust_choice in 1) clear - mkdir -p /path/rust/steam 2>&1 | tee -a ${logsINST} - sudo /path/cmd/steamcmd.sh +force_install_dir /path/rust/steam +login anonymous +app_update 258550 validate +quit 2>&1 | tee -a ${logsINST} + mkdir -p /path/rust/steam 2>&1 | tee -a "${logsInst}" + sudo /path/cmd/steamcmd.sh +force_install_dir /path/rust/steam +login anonymous +app_update 258550 validate +quit 2>&1 | tee -a "${logsInst}" rust_choice ;; 0) @@ -912,9 +919,9 @@ EOF ;; *) clear - echo "===================================" >> $logsINST 2>&1 - echo "Неверный выбор. Попробуйте еще раз." | tee -a $logsINST - echo "===================================" >> $logsINST 2>&1 + echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null + echo "Неверный выбор. Попробуйте еще раз." | tee -a "$logsInst" + echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null ;; esac ;; @@ -923,39 +930,39 @@ EOF ;; *) clear - echo "===================================" >> $logsINST 2>&1 - echo "Неверный выбор. Попробуйте еще раз." | tee -a $logsINST - echo "===================================" >> $logsINST 2>&1 + echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null + echo "Неверный выбор. Попробуйте еще раз." | tee -a "$logsInst" + echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null ;; esac ;; 4) clear - echo "===================================" >> $logsINST 2>&1 - echo "Текущая версия Linux: $currOS" | tee -a $logsINST - echo "Внешний IP-адрес: $sysIP" | tee -a $logsINST - echo "Версия php: $verPHP" | tee -a $logsINST - echo "Ветка GIT: $gitEGP" | tee -a $logsINST - echo "===================================" >> $logsINST 2>&1 - read -p "Нажмите Enter для выхода в главное меню..." + echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null + echo "Текущая версия Linux: $currOs" | tee -a "$logsInst" + echo "Внешний IP-адрес: $sysIp" | tee -a "$logsInst" + echo "Версия php: $verPhp" | tee -a "$logsInst" + echo "Ветка GIT: $gitEgp" | tee -a "$logsInst" + echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null + read -rp "Нажмите Enter для выхода в главное меню..." continue ;; 0) clear - echo "===================================" >> $logsINST 2>&1 - echo "До свидания!" | tee -a $logsINST - echo "===================================" >> $logsINST 2>&1 + echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null + echo "До свидания!" | tee -a "$logsInst" + echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null exit 0 ;; *) clear - echo "===================================" >> $logsINST 2>&1 - echo "Неверный выбор. Попробуйте еще раз." | tee -a $logsINST - echo "===================================" >> $logsINST 2>&1 + echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null + echo "Неверный выбор. Попробуйте еще раз." | tee -a "$logsInst" + echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null ;; esac - echo "===================================" >> $logsINST 2>&1 - echo "Нажмите Enter, чтобы продолжить..." | tee -a $logsINST - echo "===================================" >> $logsINST 2>&1 + echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null + echo "Нажмите Enter, чтобы продолжить..." | tee -a "$logsInst" + echo "===================================" 2>&1 | sudo tee -a "$logsInst" > /dev/null done \ No newline at end of file