diff --git a/create_site.sh b/create_site.sh index 4f17888..999c96d 100644 --- a/create_site.sh +++ b/create_site.sh @@ -146,6 +146,10 @@ function create_site() { else php_mode="dynamic" fi + if [ ! -d "/var/www/${username}/tmp" ]; then + echo "Папка /var/www/${username}/tmp не существует, создаём..." + mkdir -p "/var/www/${username}/tmp" + fi { echo "[${username}]" echo "listen = /var/opt/remi/${selected_php}/run/php-fpm/${username}.sock" @@ -166,6 +170,7 @@ function create_site() { echo "php_value[session.save_handler] = files" echo "php_value[session.save_path] = /var/www/${username}/session" echo "php_value[soap.wsdl_cache_dir] = /var/www/${username}/wsdlcache" + echo "php_value[upload_tmp_dir] = /var/www/${username}/tmp" } >"/etc/opt/remi/${selected_php}/php-fpm.d/${username}.conf" if [[ -f "/etc/opt/remi/${selected_php}/php-fpm.d/www.conf" ]]; then diff --git a/mc.menu b/mc.menu index 8055a4b..407e7e4 100644 --- a/mc.menu +++ b/mc.menu @@ -690,53 +690,9 @@ O Обновление RISH cd /root clear rm -f rish2.tar.gz > /dev/null - #Вспомогательное внутри сценария - LOG_FILE="/root/rish/logfile_rish_install.log" - # Путь к конфигурационному файлу - config_file="/root/rish/rish_config.sh" - # Проверка на существование файла лога - if [ ! -f "$LOG_FILE" ]; then - echo "Отсутствует лог файл установки RISH. Установка была выполнена неверно." - echo "Обновление невозможно." - exit 1 - fi - # Функция для проверки, был ли шаг выполнен - check_step() { - local step=$1 - grep -Fxq "$step" "$LOG_FILE" - } - # Функция для записи выполненного шага - mark_step_completed() { - local step=$1 - echo "$step" >> "$LOG_FILE" - } - source $config_file - # Функция для сравнения версий (%%s нужен для макроподстановки mc.menu) version_gt() { test "$(printf '%%s\n' "$@" | sort -V | head -n 1)" != "$1" } - Install() { - if ! rpm -q $@ >/dev/null 2>&1; then - echo -e "Ставим ${GREEN}$@${WHITE}" - if yum -y install $@; then - echo -e "${GREEN}$@${WHITE} установлен" - else - echo -e "Установить ${RED}$@${WHITE} не удалось, очищаем кэш и пытаемся снова" - # Очистка кэша yum и повторная попытка установки - yum clean all - yum makecache - if yum -y install $@; then - echo -e "${GREEN}$@${WHITE} установлен после очистки кэша" - else - echo -e "Установить ${RED}$@${WHITE} не удалось даже после очистки кэша" - exit 1 - fi - fi - echo - else - echo -e "${GREEN}$@${WHITE} уже установлен" - fi - } Update(){ # Извлекаем файл версии из архива if tar -xzf "rish2.tar.gz" --strip-components=1 "rish/version" @@ -751,6 +707,7 @@ O Обновление RISH fi archive_version=$(cat "/root/version") rm -f "/root/version" > /dev/null + def="" if version_gt "${archive_version}" "${folder_version}"; then echo -e "Доступна более новая версия RISH для обновления – ${GREEN}${archive_version}${WHITE}" echo "Рекомендуем обновиться до этой версии." @@ -759,9 +716,10 @@ O Обновление RISH echo "Ваша версия RISH актуальна - обновление не требуется." echo "Но если нужно - вы можете переустановить RISH." echo + def="default=1" fi echo -e "Установить версию ${GREEN}${archive_version}${WHITE}?" - if vertical_menu "current" 2 0 5 "Да" "Нет" + if vertical_menu "current" 2 0 5 "Да" "Нет" ${def} then #обновляем версию RISH if tar -tzf rish2.tar.gz > /dev/null 2>&1 @@ -777,11 +735,7 @@ O Обновление RISH chmod u+x ri.sh chmod u+x clonesite.sh chmod u+x backup.sh - STEP="Установка dnf-utils" - if ! check_step "$STEP"; then - Install dnf-utils - mark_step_completed "$STEP" - fi + bash postupdate.sh else echo "Скачанный архив поврежден" vertical_menu "current" 2 0 5 "Нажмите Enter" diff --git a/postupdate.sh b/postupdate.sh new file mode 100644 index 0000000..029caac --- /dev/null +++ b/postupdate.sh @@ -0,0 +1,94 @@ +#!/usr/bin/env bash + +version_gt() { + test "$(printf '%s\n' "$@" | sort -V | head -n 1)" != "$1" +} +#Вспомогательное внутри сценария +LOG_FILE="/root/rish/logfile_rish_install.log" +# Путь к конфигурационному файлу +config_file="/root/rish/rish_config.sh" +# Проверка на существование файла лога +if [ ! -f "$LOG_FILE" ]; then + echo "Отсутствует лог файл установки RISH. Установка была выполнена неверно." + echo "Обновление невозможно." + exit 1 +fi +# Функция для проверки, был ли шаг выполнен +check_step() { + local step=$1 + grep -Fxq "$step" "$LOG_FILE" +} +# Функция для записи выполненного шага +mark_step_completed() { + local step=$1 + echo "$step" >>"$LOG_FILE" +} +source $config_file +# Функция для сравнения версий (%%s нужен для макроподстановки mc.menu) + +Install() { + if ! rpm -q $@ >/dev/null 2>&1; then + echo -e "Ставим ${GREEN}$@${WHITE}" + if yum -y install $@; then + echo -e "${GREEN}$@${WHITE} установлен" + else + echo -e "Установить ${RED}$@${WHITE} не удалось, очищаем кэш и пытаемся снова" + # Очистка кэша yum и повторная попытка установки + yum clean all + yum makecache + if yum -y install $@; then + echo -e "${GREEN}$@${WHITE} установлен после очистки кэша" + else + echo -e "Установить ${RED}$@${WHITE} не удалось даже после очистки кэша" + exit 1 + fi + fi + echo + else + echo -e "${GREEN}$@${WHITE} уже установлен" + fi +} + +STEP="Установка dnf-utils" +if ! check_step "$STEP"; then + Install dnf-utils + mark_step_completed "$STEP" +fi + +STEP="Добавление папки tmp всем пользователям" +if ! check_step "$STEP"; then + for dir in /var/www/*; do + # Проверяем, что это директория + if [ -d "$dir" ]; then + # Создаем папку tmp в каждой найденной директории + mkdir -p "$dir/tmp" + echo "Папка tmp создана в $dir" + fi + done + # Проходим по каждой версии PHP в /etc/opt/remi/ + for php_version_dir in /etc/opt/remi/*; do + # Проверяем, что это директория + if [ -d "$php_version_dir" ]; then + # Ищем все конфиги php-fpm.d/ для каждого пользователя, кроме www.conf + for conf_file in "$php_version_dir/php-fpm.d"/*.conf; do + # Пропускаем файл www.conf + if [[ $(basename "$conf_file") == "www.conf" ]]; then + continue + fi + + # Извлекаем имя пользователя из имени файла + username=$(basename "$conf_file" .conf) + + # Проверяем, существует ли параметр php_value[upload_tmp_dir] + if ! grep -q "php_value\[upload_tmp_dir\]" "$conf_file"; then + # Если параметра нет, добавляем его в конец файла + echo "php_value[upload_tmp_dir] = /var/www/$username/tmp" >> "$conf_file" + echo "Добавлен параметр php_value[upload_tmp_dir] в $conf_file" + else + echo "Параметр php_value[upload_tmp_dir] уже существует в $conf_file" + fi + done + fi + done + mark_step_completed "$STEP" +fi diff --git a/ri.sh b/ri.sh index 92cfd90..9a3b19b 100644 --- a/ri.sh +++ b/ri.sh @@ -327,10 +327,12 @@ CreateUser() { mkdir /var/www/${NAME}/session mkdir /var/www/${NAME}/wsdlcache mkdir /var/www/${NAME}/slowlog + mkdir /var/www/${NAME}/tmp chown ${NAME}:${NAME} /var/www/${NAME}/session chown ${NAME}:${NAME} /var/www/${NAME}/wsdlcache chown ${NAME}:${NAME} /var/www/${NAME}/slowlog + chown ${NAME}:${NAME} /var/www/${NAME}/tmp # Удаляем конфигурацию php по умолчанию (это файлы типа php74-php.conf) find /etc/httpd/conf.d -type f -name 'php[0-9][0-9]-php.conf' -exec rm -f {} + @@ -1055,6 +1057,14 @@ EOF mark_step_completed "$STEP" fi + STEP="Добавление папки tmp всем пользователям" + if ! check_step "$STEP"; then + #Это пустой шаг, чтобы добавить выполненный пункт в лог файл + #чтобы при обновлении скрипт обновления не пытался опять создавать папки tmp каждому пользователю + mark_step_completed "$STEP" + fi + + process_ssh_config_file() { local config_file=$1 diff --git a/version b/version index 50aea0e..7c32728 100644 --- a/version +++ b/version @@ -1 +1 @@ -2.1.0 \ No newline at end of file +2.1.1 \ No newline at end of file