diff --git a/README.md b/README.md index 7197977..6481f8b 100644 --- a/README.md +++ b/README.md @@ -1 +1,7 @@ -# Autoinstall \ No newline at end of file +

Automatic installation for EngineGP

+Supported systems: +Debian 10, 11 + +Starting the auto installer:
+chmod +x install.sh
+./install.sh \ No newline at end of file diff --git a/install.sh b/install.sh index 71db9d0..d1f136e 100644 --- a/install.sh +++ b/install.sh @@ -8,8 +8,9 @@ sysUpdate (){ # Обновление системы sysUpdate -# Установка начальных пакетов -pkgsREQ=(sudo curl) +# Установка начальных пакетов. +# lsb-release wget gnupg - Требуются для MySQL. В остальном зависимость не проверялась. +pkgsREQ=(sudo curl lsb-release wget gnupg) # Цикл установки пакетов for package in "${pkgsREQ[@]}"; do @@ -20,14 +21,18 @@ for package in "${pkgsREQ[@]}"; do fi done -# Определение операционной системы -verOS=`cat /etc/issue.net | awk '{print $1,$3}'` +# Массив с поддерживаемыми версиями Debian +suppOS=("Debian 10" "Debian 11") + +# Получаем текущую версию операционной системы +currOS=`cat /etc/issue.net | awk '{print $1,$3}'` # Проверка аргументов командной строки if [ $# -gt 0 ]; then # Переменные для хранения verEGP="" verPHP="" + verSQL="" sysIP="" # Перебор всех аргументов @@ -47,6 +52,12 @@ if [ $# -gt 0 ]; then shift # Пропустить значение версии shift # Пропустить аргумент --php ;; + --sql) + # Если передан аргумент --sql, сохранить указанную версию PHP + verSQL="$2" + shift # Пропустить значение версии + shift # Пропустить аргумент --php + ;; --ip) # Если передан аргумент --ip, сохранить указанный IP-адрес sysIP="$2" @@ -56,10 +67,11 @@ if [ $# -gt 0 ]; then *) # Неизвестный аргумент, вывести справку и выйти clear - echo "Использование: ./install.sh [--release версия] [--php версия] [--ip IP-адрес]" - echo " --release версия: установить указанную версию EngineGP" - echo " --php версия: установить указанную версию PHP" - echo " --ip IP-адрес: использовать указанный IP-адрес" + echo "Использование: ./install.sh [--release версия] [--php версия] [--sql версия] [--ip IP-адрес]" + echo " --release версия: установить указанную версию EngineGP. Формат должен быть: 3.6.3.0" + echo " --php версия: установить указанную версию PHP. Формат должен быть: 8.1" + echo " --sql версия: установить указанную базу данный. Формат должен быть: mysql или mariadb" + echo " --ip IP-адрес: использовать указанный IP-адрес. Формат должен быть: 192.168.1.1" exit 1 ;; esac @@ -73,7 +85,7 @@ if [ $# -gt 0 ]; then # Если версия PHP не выбрана, использовать PHP 8.0 по умолчанию if [ -z "$verPHP" ]; then - verPHP="8.0" + verPHP="7.0" fi # Если IP-адрес не указан, получить внешний IP-адрес с помощью сервиса ipinfo.io @@ -84,7 +96,7 @@ else # Если нет аргументов, получить последнюю версию EngineGP из файла на сайте LATEST_URL="https://resources.enginegp.com/latest" verEGP=$(curl -s "$LATEST_URL" | awk 'NR==1 {print $2}') - verPHP="8.0" + verPHP="7.0" sysIP=$(curl -s ipinfo.io/ip) fi @@ -124,21 +136,23 @@ while true; do case $choice in 1) 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 - - Listen 443 - + + Listen 443 + - - Listen 443 - " + + Listen 443 +" - # Конфигурация apache для EngineGP - apache_enginegp=" + # Конфигурация apache для EngineGP + apache_enginegp=" ServerName $sysIP DocumentRoot /var/enginegp ErrorLog /var/log/enginegp/apache_enginegp_error.log @@ -164,8 +178,8 @@ while true; do " - # Конфигурация nginx для EngineGP - nginx_enginegp="server { + # Конфигурация nginx для EngineGP + nginx_enginegp="server { listen 80; server_name $sysIP; @@ -201,106 +215,109 @@ while true; do deny all; } }" - # Цикл установки пакетов - for package in "${pkgsALL[@]}"; do - # Проверяем наличие php - if [ ! -f "/etc/apt/sources.list.d/php.list" ]; then - # Добавляем репозиторий php - sudo curl -sSL https://packages.sury.org/php/README.txt | sudo bash -x + # Цикл установки пакетов + for package in "${pkgsALL[@]}"; do + # Проверяем наличие php + if [ ! -f "/etc/apt/sources.list.d/php.list" ]; then + # Добавляем репозиторий php + sudo curl -sSL https://packages.sury.org/php/README.txt | sudo bash -x - # Обновление таблиц - 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 + # Обновление таблиц + apt-get -y update 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 + # Проверка на наличие и установка пакетов + if ! dpkg-query -W -f='${Status}' "$package" 2>/dev/null | grep -q "install ok installed"; then + echo "$package не установлен. Выполняется установка..." + apt-get install -y "$package" 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 + # Проверяем установку 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 + + # Проверяем установку 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 - 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 - cd /var/enginegp >> "$(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 + # Установка и настрока composer + 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 + cd /var/enginegp >> "$(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 + fi fi - fi - done + done - # Перезапускаем apache - sudo systemctl restart apache2 >> "$(dirname "$0")/enginegp_install.log" 2>&1 + # Перезапускаем apache + sudo systemctl restart apache2 >> "$(dirname "$0")/enginegp_install.log" 2>&1 + else + echo "Вы используете неподдерживаемую версию Linux" + fi ;; 2) clear @@ -315,7 +332,7 @@ while true; do 4) clear echo "Последняя версия EngineGP: $verEGP" - echo "Текущая версия Linux: $verOS" + echo "Текущая версия Linux: $currOS" echo "Внешний IP-адрес: $sysIP" echo "Версия php: $verPHP" ;;