Minor updates

This commit is contained in:
Sergei Solovev 2023-10-12 22:47:04 +03:00
parent f1795932eb
commit 92e6b290f3
2 changed files with 139 additions and 116 deletions

View File

@ -1 +1,7 @@
# Autoinstall <p align="center"><b>Automatic installation for EngineGP</p>
Supported systems:
Debian 10, 11
Starting the auto installer:</br>
chmod +x install.sh</br>
./install.sh

View File

@ -8,8 +8,9 @@ sysUpdate (){
# Обновление системы # Обновление системы
sysUpdate sysUpdate
# Установка начальных пакетов # Установка начальных пакетов.
pkgsREQ=(sudo curl) # lsb-release wget gnupg - Требуются для MySQL. В остальном зависимость не проверялась.
pkgsREQ=(sudo curl lsb-release wget gnupg)
# Цикл установки пакетов # Цикл установки пакетов
for package in "${pkgsREQ[@]}"; do for package in "${pkgsREQ[@]}"; do
@ -20,14 +21,18 @@ for package in "${pkgsREQ[@]}"; do
fi fi
done done
# Определение операционной системы # Массив с поддерживаемыми версиями Debian
verOS=`cat /etc/issue.net | awk '{print $1,$3}'` suppOS=("Debian 10" "Debian 11")
# Получаем текущую версию операционной системы
currOS=`cat /etc/issue.net | awk '{print $1,$3}'`
# Проверка аргументов командной строки # Проверка аргументов командной строки
if [ $# -gt 0 ]; then if [ $# -gt 0 ]; then
# Переменные для хранения # Переменные для хранения
verEGP="" verEGP=""
verPHP="" verPHP=""
verSQL=""
sysIP="" sysIP=""
# Перебор всех аргументов # Перебор всех аргументов
@ -47,6 +52,12 @@ if [ $# -gt 0 ]; then
shift # Пропустить значение версии shift # Пропустить значение версии
shift # Пропустить аргумент --php shift # Пропустить аргумент --php
;; ;;
--sql)
# Если передан аргумент --sql, сохранить указанную версию PHP
verSQL="$2"
shift # Пропустить значение версии
shift # Пропустить аргумент --php
;;
--ip) --ip)
# Если передан аргумент --ip, сохранить указанный IP-адрес # Если передан аргумент --ip, сохранить указанный IP-адрес
sysIP="$2" sysIP="$2"
@ -56,10 +67,11 @@ if [ $# -gt 0 ]; then
*) *)
# Неизвестный аргумент, вывести справку и выйти # Неизвестный аргумент, вывести справку и выйти
clear clear
echo "Использование: ./install.sh [--release версия] [--php версия] [--ip IP-адрес]" echo "Использование: ./install.sh [--release версия] [--php версия] [--sql версия] [--ip IP-адрес]"
echo " --release версия: установить указанную версию EngineGP" echo " --release версия: установить указанную версию EngineGP. Формат должен быть: 3.6.3.0"
echo " --php версия: установить указанную версию PHP" echo " --php версия: установить указанную версию PHP. Формат должен быть: 8.1"
echo " --ip IP-адрес: использовать указанный IP-адрес" echo " --sql версия: установить указанную базу данный. Формат должен быть: mysql или mariadb"
echo " --ip IP-адрес: использовать указанный IP-адрес. Формат должен быть: 192.168.1.1"
exit 1 exit 1
;; ;;
esac esac
@ -73,7 +85,7 @@ if [ $# -gt 0 ]; then
# Если версия PHP не выбрана, использовать PHP 8.0 по умолчанию # Если версия PHP не выбрана, использовать PHP 8.0 по умолчанию
if [ -z "$verPHP" ]; then if [ -z "$verPHP" ]; then
verPHP="8.0" verPHP="7.0"
fi fi
# Если IP-адрес не указан, получить внешний IP-адрес с помощью сервиса ipinfo.io # Если IP-адрес не указан, получить внешний IP-адрес с помощью сервиса ipinfo.io
@ -84,7 +96,7 @@ else
# Если нет аргументов, получить последнюю версию EngineGP из файла на сайте # Если нет аргументов, получить последнюю версию EngineGP из файла на сайте
LATEST_URL="https://resources.enginegp.com/latest" LATEST_URL="https://resources.enginegp.com/latest"
verEGP=$(curl -s "$LATEST_URL" | awk 'NR==1 {print $2}') verEGP=$(curl -s "$LATEST_URL" | awk 'NR==1 {print $2}')
verPHP="8.0" verPHP="7.0"
sysIP=$(curl -s ipinfo.io/ip) sysIP=$(curl -s ipinfo.io/ip)
fi fi
@ -124,21 +136,23 @@ while true; do
case $choice in case $choice in
1) 1)
clear clear
# Список пакетов для установки # Проверяем, содержится ли текущая версия в массиве поддерживаемых версий
pkgsALL=(ufw memcached unzip bc cron apache2 libapache2-mpm-itk php$verPHP php$verPHP-common php$verPHP-cli php$verPHP-memcache php$verPHP-memcached php$verPHP-mysql php$verPHP-xml php$verPHP-mbstring php$verPHP-gd php$verPHP-imagick php$verPHP-zip php$verPHP-curl php$verPHP-ssh2 php$verPHP-xml libapache2-mod-php$verPHP nginx mariadb-server) if [[ " ${suppOS[@]} " =~ " ${currOS} " ]]; then
# Список пакетов для установки
pkgsALL=(ufw memcached unzip bc cron apache2 libapache2-mpm-itk php$verPHP php$verPHP-common php$verPHP-cli php$verPHP-memcache php$verPHP-memcached php$verPHP-mysql php$verPHP-xml php$verPHP-mbstring php$verPHP-gd php$verPHP-imagick php$verPHP-zip php$verPHP-curl php$verPHP-ssh2 php$verPHP-xml libapache2-mod-php$verPHP nginx)
apache_ports="Listen 8080 apache_ports="Listen 8080
<IfModule ssl_module> <IfModule ssl_module>
Listen 443 Listen 443
</IfModule> </IfModule>
<IfModule mod_gnutls.c> <IfModule mod_gnutls.c>
Listen 443 Listen 443
</IfModule>" </IfModule>"
# Конфигурация apache для EngineGP # Конфигурация apache для EngineGP
apache_enginegp="<VirtualHost *:8080> apache_enginegp="<VirtualHost *:8080>
ServerName $sysIP ServerName $sysIP
DocumentRoot /var/enginegp DocumentRoot /var/enginegp
ErrorLog /var/log/enginegp/apache_enginegp_error.log ErrorLog /var/log/enginegp/apache_enginegp_error.log
@ -164,8 +178,8 @@ while true; do
</Directory> </Directory>
</VirtualHost>" </VirtualHost>"
# Конфигурация nginx для EngineGP # Конфигурация nginx для EngineGP
nginx_enginegp="server { nginx_enginegp="server {
listen 80; listen 80;
server_name $sysIP; server_name $sysIP;
@ -201,106 +215,109 @@ while true; do
deny all; deny all;
} }
}" }"
# Цикл установки пакетов # Цикл установки пакетов
for package in "${pkgsALL[@]}"; do for package in "${pkgsALL[@]}"; do
# Проверяем наличие php # Проверяем наличие php
if [ ! -f "/etc/apt/sources.list.d/php.list" ]; then if [ ! -f "/etc/apt/sources.list.d/php.list" ]; then
# Добавляем репозиторий php # Добавляем репозиторий php
sudo curl -sSL https://packages.sury.org/php/README.txt | sudo bash -x sudo curl -sSL https://packages.sury.org/php/README.txt | sudo bash -x
# Обновление таблиц # Обновление таблиц
apt-get -y update apt-get -y update
fi
# Проверка на наличие и установка пакетов
if ! dpkg-query -W -f='${Status}' "$package" 2>/dev/null | grep -q "install ok installed"; then
echo "$package не установлен. Выполняется установка..."
apt-get install -y "$package"
fi
# Проверяем установку apache
if dpkg-query -W -f='${Status}' "libapache2-mod-php$verPHP" 2>/dev/null | grep -q "install ok installed"; then
if [ ! -f /etc/apache2/sites-available/enginegp.conf ]; then
# Разрешаем доступ к портам
sudo ufw allow 80 >> "$(dirname "$0")/enginegp_install.log" 2>&1
sudo ufw allow 443 >> "$(dirname "$0")/enginegp_install.log" 2>&1
# Изменяем порт, на котором слушает Apache
echo -e "$apache_ports" | sudo tee /etc/apache2/ports.conf >> "$(dirname "$0")/enginegp_install.log" 2>&1
# Создаём папку для записи логов, если ещё не создана
sudo mkdir /var/log/enginegp >> "$(dirname "$0")/enginegp_install.log" 2>&1
# Отключаем конфигурационный файл 000-default.conf
sudo a2dissite 000-default.conf >> "$(dirname "$0")/enginegp_install.log" 2>&1
# Создаем виртуальный хостинг для EngineGP
echo -e "$apache_enginegp" | sudo tee /etc/apache2/sites-available/enginegp.conf >> "$(dirname "$0")/enginegp_install.log" 2>&1
# Проверяем конфиг apache и выводим в логи
sudo apachectl configtest >> "$(dirname "$0")/enginegp_install.log" 2>&1
# Включаем конфигурацию
sudo a2ensite enginegp.conf >> "$(dirname "$0")/enginegp_install.log" 2>&1
# Включаем rewrite
sudo a2enmod rewrite >> "$(dirname "$0")/enginegp_install.log" 2>&1
# Включаем MPM-ITK
sudo a2enmod mpm_itk >> "$(dirname "$0")/enginegp_install.log" 2>&1
# Включаем mod_php
sudo a2enmod php$verPHP >> "$(dirname "$0")/enginegp_install.log" 2>&1
# Перезапускаем apache
sudo systemctl restart apache2 >> "$(dirname "$0")/enginegp_install.log" 2>&1
fi fi
fi
# Проверяем установку nginx # Проверка на наличие и установка пакетов
if dpkg-query -W -f='${Status}' "nginx" 2>/dev/null | grep -q "install ok installed"; then if ! dpkg-query -W -f='${Status}' "$package" 2>/dev/null | grep -q "install ok installed"; then
if [ ! -f /etc/nginx/sites-available/enginegp.conf ]; then echo "$package не установлен. Выполняется установка..."
# Создаём папку для записи логов, если ещё не создана apt-get install -y "$package"
sudo mkdir /var/log/enginegp >> "$(dirname "$0")/enginegp_install.log" 2>&1
# Создаем виртуальный хостинг для EngineGP
echo -e "$nginx_enginegp" | sudo tee /etc/nginx/sites-available/enginegp.conf >> "$(dirname "$0")/enginegp_install.log" 2>&1
# Создаём симлинк конфига NGINX
sudo ln -s /etc/nginx/sites-available/enginegp.conf /etc/nginx/sites-enabled/ >> "$(dirname "$0")/enginegp_install.log" 2>&1
# Проверяем конфиг nginx и выводим в логи
sudo nginx -t >> "$(dirname "$0")/enginegp_install.log" 2>&1
# Перезапускаем nginx
sudo systemctl restart nginx >> "$(dirname "$0")/enginegp_install.log" 2>&1
fi fi
fi
# Устанавливаем панель # Проверяем установку apache
if dpkg-query -W -f='${Status}' "php$verPHP-xml" 2>/dev/null | grep -q "install ok installed"; then if dpkg-query -W -f='${Status}' "libapache2-mod-php$verPHP" 2>/dev/null | grep -q "install ok installed"; then
if [ ! -d /var/enginegp/ ]; then if [ ! -f /etc/apache2/sites-available/enginegp.conf ]; then
# Закачиваем и распаковываем панель # Разрешаем доступ к портам
sudo curl -sSL -o /var/enginegp.zip "$resURL/$resEGP/$verEGP/$verEGP.zip" >> "$(dirname "$0")/enginegp_install.log" 2>&1 sudo ufw allow 80 >> "$(dirname "$0")/enginegp_install.log" 2>&1
sudo unzip /var/enginegp.zip -d /var/ >> "$(dirname "$0")/enginegp_install.log" 2>&1 sudo ufw allow 443 >> "$(dirname "$0")/enginegp_install.log" 2>&1
sudo mv /var/EngineGP-* /var/enginegp >> "$(dirname "$0")/enginegp_install.log" 2>&1
sudo rm /var/enginegp.zip >> "$(dirname "$0")/enginegp_install.log" 2>&1 # Изменяем порт, на котором слушает Apache
echo -e "$apache_ports" | sudo tee /etc/apache2/ports.conf >> "$(dirname "$0")/enginegp_install.log" 2>&1
# Создаём папку для записи логов, если ещё не создана
sudo mkdir /var/log/enginegp >> "$(dirname "$0")/enginegp_install.log" 2>&1
# Отключаем конфигурационный файл 000-default.conf
sudo a2dissite 000-default.conf >> "$(dirname "$0")/enginegp_install.log" 2>&1
# Создаем виртуальный хостинг для EngineGP
echo -e "$apache_enginegp" | sudo tee /etc/apache2/sites-available/enginegp.conf >> "$(dirname "$0")/enginegp_install.log" 2>&1
# Проверяем конфиг apache и выводим в логи
sudo apachectl configtest >> "$(dirname "$0")/enginegp_install.log" 2>&1
# Включаем конфигурацию
sudo a2ensite enginegp.conf >> "$(dirname "$0")/enginegp_install.log" 2>&1
# Включаем rewrite
sudo a2enmod rewrite >> "$(dirname "$0")/enginegp_install.log" 2>&1
# Включаем MPM-ITK
sudo a2enmod mpm_itk >> "$(dirname "$0")/enginegp_install.log" 2>&1
# Включаем mod_php
sudo a2enmod php$verPHP >> "$(dirname "$0")/enginegp_install.log" 2>&1
# Перезапускаем apache
sudo systemctl restart apache2 >> "$(dirname "$0")/enginegp_install.log" 2>&1
fi
fi
# Проверяем установку nginx
if dpkg-query -W -f='${Status}' "nginx" 2>/dev/null | grep -q "install ok installed"; then
if [ ! -f /etc/nginx/sites-available/enginegp.conf ]; then
# Создаём папку для записи логов, если ещё не создана
sudo mkdir /var/log/enginegp >> "$(dirname "$0")/enginegp_install.log" 2>&1
# Создаем виртуальный хостинг для EngineGP
echo -e "$nginx_enginegp" | sudo tee /etc/nginx/sites-available/enginegp.conf >> "$(dirname "$0")/enginegp_install.log" 2>&1
# Создаём симлинк конфига NGINX
sudo ln -s /etc/nginx/sites-available/enginegp.conf /etc/nginx/sites-enabled/ >> "$(dirname "$0")/enginegp_install.log" 2>&1
# Проверяем конфиг nginx и выводим в логи
sudo nginx -t >> "$(dirname "$0")/enginegp_install.log" 2>&1
# Перезапускаем nginx
sudo systemctl restart nginx >> "$(dirname "$0")/enginegp_install.log" 2>&1
fi
fi
# Устанавливаем панель
if dpkg-query -W -f='${Status}' "php$verPHP-xml" 2>/dev/null | grep -q "install ok installed"; then
if [ ! -d /var/enginegp/ ]; then
# Закачиваем и распаковываем панель
sudo curl -sSL -o /var/enginegp.zip "$resURL/$resEGP/$verEGP/$verEGP.zip" >> "$(dirname "$0")/enginegp_install.log" 2>&1
sudo unzip /var/enginegp.zip -d /var/ >> "$(dirname "$0")/enginegp_install.log" 2>&1
sudo mv /var/EngineGP-* /var/enginegp >> "$(dirname "$0")/enginegp_install.log" 2>&1
sudo rm /var/enginegp.zip >> "$(dirname "$0")/enginegp_install.log" 2>&1
# Задаём права на каталог # Задаём права на каталог
chown www-data:www-data -R /var/enginegp/ >> "$(dirname "$0")/enginegp_install.log" 2>&1 chown www-data:www-data -R /var/enginegp/ >> "$(dirname "$0")/enginegp_install.log" 2>&1
# Установка и настрока composer # Установка и настрока composer
curl -o composer-setup.php https://getcomposer.org/installer >> "$(dirname "$0")/enginegp_install.log" 2>&1 curl -o composer-setup.php https://getcomposer.org/installer >> "$(dirname "$0")/enginegp_install.log" 2>&1
php composer-setup.php --install-dir=/usr/local/bin --filename=composer >> "$(dirname "$0")/enginegp_install.log" 2>&1 php composer-setup.php --install-dir=/usr/local/bin --filename=composer >> "$(dirname "$0")/enginegp_install.log" 2>&1
cd /var/enginegp >> "$(dirname "$0")/enginegp_install.log" 2>&1 cd /var/enginegp >> "$(dirname "$0")/enginegp_install.log" 2>&1
sudo composer install --no-interaction >> "$(dirname "$0")/enginegp_install.log" 2>&1 sudo composer install --no-interaction >> "$(dirname "$0")/enginegp_install.log" 2>&1
cd >> "$(dirname "$0")/enginegp_install.log" 2>&1 cd >> "$(dirname "$0")/enginegp_install.log" 2>&1
fi
fi fi
fi done
done
# Перезапускаем apache # Перезапускаем apache
sudo systemctl restart apache2 >> "$(dirname "$0")/enginegp_install.log" 2>&1 sudo systemctl restart apache2 >> "$(dirname "$0")/enginegp_install.log" 2>&1
else
echo "Вы используете неподдерживаемую версию Linux"
fi
;; ;;
2) 2)
clear clear
@ -315,7 +332,7 @@ while true; do
4) 4)
clear clear
echo "Последняя версия EngineGP: $verEGP" echo "Последняя версия EngineGP: $verEGP"
echo "Текущая версия Linux: $verOS" echo "Текущая версия Linux: $currOS"
echo "Внешний IP-адрес: $sysIP" echo "Внешний IP-адрес: $sysIP"
echo "Версия php: $verPHP" echo "Версия php: $verPHP"
;; ;;