• Spf=softfail как настроить?

    тебе нужно сделать инклуд яндекса к своейму айпи
    v=spf1 ip4:95.216.243.254 ip4:95.216.243.198 include:_spf.yandex.net ~all
    Ответ написан
  • Как http://example.com/news.php перевести в http://example.com/?page=news?

    shambler81
    @shambler81 Куратор тега htaccess
    RewriteRule ^example\.com/(.+)\.php$ /\?page=$1 [L,R=301]
    Ответ написан
    Комментировать
  • Как разобрать массив?

    shambler81
    @shambler81 Куратор тега Linux
    ну смотри тут несколко вариантов
    тут уже разбирали сравнине массивов.
    Как сравнить два массива в bash?
    Тут конечно нужны вводные данные, но опять же если это очень большое количество файлов то может быть ту мени аргументс и тд, в общем все равно не шибко быстрое решение.
    НО логика такая.
    1. создамем два массива.
    2. в отдельную переменную сохраняем только название файла из первого массива.
    3. создаем цикл перебераем этот файл, в массиве два, если соответствие находится то копируем его в полный путь к этому файлу.

    2 вариант более костыльный но тоже имеет место быть
    ты не используешь второй массив а просто каждый раз запускаешь 2 файнд уже с точным вхождением. find ./Serials -type f -iname "1110101.mkv"
    просо

    вот как-то так, да в таком варианте ты каждый раз будеш пускать по кругу файнд, но он с заданым конкрктным файлом и глубина невелкая, да и как я понял тебе не сильно нужна производительность.
    Но в таком варианте ты поймешь что нужно делать без привлечение создания методов и двух массивов.
    А главное нет ограничений на размер этих массивов.
    #!/bin/sh
    MASSIV_1=$(find /volume1/Geroev_Avenue_18/Downloads -maxdepth 1 -type f -iname "*.mkv") 
    
    
    for ELEMENT in $MASSIV_1_FILMAME
        do
    
    find ./Serials -type f -iname "$MASSIV_1_FILMAME -exec cp {} $MASSIV_1_DIR \;"
    
                   fi

    код на вскидку писал, дабы было понятно смысл.
    Ответ написан
  • Как исключить из .htaccess если запрос оканчивается на .ttf?

    shambler81
    @shambler81 Куратор тега htaccess
    RewriteCond %{REQUEST_URI} !^.+\.(ttf)(/|)$ [NC]
    Ответ написан
    Комментировать
  • Почему не видит папку или файл?

    shambler81
    @shambler81 Куратор тега Linux
    создание бэкапа
    60be967c5f0f0182040362.png
    Структура бэкапов ( тут примонтирован FTP сервер через cifs)
    60be97a6eedb8875107169.png
    работает так если запускаешь скрипт то бэкапит все сайты со всеми базами исключает все что нужно. ( каждый сайт отдельно бэкапит свою базу) ну и отдельно каждый сайт.
    если через пробел указываеш сайт то scrypt.sh vasya.ru бэкапится только он, так же сразу заливается на фти с ограничением
    скорости и прогресс баром.
    и подчисткой локальных бэкапов
    Так же после бэкапа тебе выкидвыается прямая ссылочка на фтп архив.
    доп софт wput и pv его нужно доставить !

    #!/bin/sh
    # Пример пути до сайта /var/www/site.ru/web/
    SITEDIR="/home/bitrix/ext_www"                      # Папка до названия доменаов
    DBCONN="bitrix/php_interface/dbconn.php"            # Откуда читать настройки mysql
    FTPUSER="backup_ftp"                                # Логин FTP сервера
    FTPPASS="adfadsfasdfa safdw"                        # Пароль FTP
    FTPHOST="111.1.11.11    "                           # сервер FTP
    FTPDIR=""                                           # папка на FTP
    TMPDIR="/mnt/backup/site"                           # тут временный файл лежит до отправки
    TMPWPUTBASE="/mnt/backup"                            # wput подставит эту папку как базовую
    DATE=`date +"%Y-%m-%d"`                             # Формат даты в имени файла
    DATEYM=`date +%Y`/`date +%m`                        # Второй форматы даты
    LIST=${1:-`ls $SITEDIR | grep -E ".*\.\w{1,5}" | grep -v "restore.php" | grep -v "klondike.php"`} # Название сайта, тут выбор или аргумент или, регулярка  можно убрать только -L ;)
    
    mkdir -p $TMPDIR/$DATEYM # создаем  структ уру каталогов если их нет
    
    for ELEMENT in $LIST
        do
                    if [ ! -f /$SITEDIR/$ELEMENT/$DBCONN ];
                            then
                                echo " Файл $SITEDIR/$ELEMENT/$DBCONN не найден, сайт будет без БД!"
                            else
    # ищим какая база отностися к сайту сохраняем в переменные ее данные.
    DBLOGIN=$(/bin/php -r "include '${SITEDIR}/${ELEMENT}/${DBCONN}'; echo(\"{\$DBLogin}\");")
    DBNAME=$(/bin/php -r "include '${SITEDIR}/${ELEMENT}/${DBCONN}'; echo(\"{\$DBName}\");")
    DBPASS=$(/bin/php -r "include '${SITEDIR}/${ELEMENT}/${DBCONN}'; echo(\"{\$DBPassword}\");")
    DBHOST=$(/bin/php -r "include '${SITEDIR}/${ELEMENT}/${DBCONN}'; echo(\"{\$DBHost}\");")
    echo "Найдена BD $ELEMENT"
    echo ""
    echo "Login: $DBLOGIN"
    echo "DB   : $DBNAME"
    echo "Pass : $DBPASS"
    echo "Host : $DBHOST"
    echo ""
    echo "Дамп БД $DBNAME"
    
    #  бэкап базы только через эвал и эхо смогли экранировать все варианты спецсимволов в пароле
    eval "$(echo "mysqldump --no-tablespaces -u$DBLOGIN -p'$DBPASS' $DBNAME -h$DBHOST > $SITEDIR/$ELEMENT/$DBNAME\-$DATE.sql  && echo "Дамп БД $DBNAME будет сохранен в корне сайта"  ||  echo "Ошибка дампа базы данных " $DBNAME")"
    chown bitrix:bitrix $SITEDIR/$ELEMENT/$DBNAME\-$DATE.sql
                   fi
    
    echo "Считаем количество Файлов  на сайте"
    
    SIZE="$(find $SITEDIR/$ELEMENT/$WEB -not -path "$SITEDIR/$ELEMENT/bitrix/tmp/*" -not -path "$SITEDIR/$ELEMENT/bitrix/updates/*" -not -path "$SITEDIR/$ELEMENT/dev_logs/*" -not -path "$SITEDIR/$ELEMENT/upload/1c_import_light/logs/*" -not -path "$SITEDIR/$ELEMENT/upload/1c_import_light/total_errors/*" -not -path "$SITEDIR/$ELEMENT/.git/*" -not -path "$SITEDIR/$ELEMENT/bitrix/catalog_export/logs/*" -not -path "$SITEDIR/$ELEMENT/bitrix/backup/*" -not -path "$SITEDIR/$ELEMENT/bitrix/cache/*" -not -path "$SITEDIR/$ELEMENT/bitrix/managed_cache/*" -not -path "$SITEDIR/$ELEMENT/bitrix/stack_cache/*" -not -path "$SITEDIR/$ELEMENT/upload/resize_cache/*" -not -path "$SITEDIR/$ELEMENT/stats/*" | wc -l)" && echo " В архиве будет $SIZE файлов"
    
    echo "Архивируем сайт $ELEMENT прогресс не в килобайтах а в  количестве файлов"
    tar -cvpzf $TMPDIR/$DATEYM/$ELEMENT-$DATE.tar.gz --directory $SITEDIR/$ELEMENT/$WEB --ignore-failed-read --exclude='./bitrix/tmp' --exclude='./bitrix/updates'  --exclude='./dev_logs' --exclude='./upload/1c_import_light/logs' --exclude='./upload/1c_import_light/total_errors' --exclude='./.git' --exclude='./bitrix/catalog_export/logs'  --exclude='./bitrix/backup'  --exclude='./bitrix/cache' --exclude='./bitrix/managed_cache' --exclude='./bitrix/stack_cache' --exclude='./upload/resize_cache' --exclude='./stats' . | pv -s $SIZE -l > /dev/null
    
            rm -f $SITEDIR/$ELEMENT/$WEB/$DBNAME\-$DATE.sql # поскльку ложим на реальный сайт, ибо нормально добавить в архив не получитяс.
    
            echo "Сохраняем $ELEMENT на FTP"
            wput  --basename=$TMPWPUTBASE --limit-rate=6000K --timestamping  --remove-source-files --tries=2 $TMPDIR/$DATEYM/$ELEMENT-$DATE.tar.gz ftp://$FTPUSER:$FTPPASS@$FTPHOST$FTPDIR && echo "Архив залит успешно, временные файлы удалены"
    
    echo -en "\n\033[37;1;41m Ссылочка:\033[0m \e[1;4;36mwget ftp://$FTPUSER:$FTPPASS@$FTPHOST/site/$DATEYM/$ELEMENT-$DATE.tar.gz\e[0m\n\n" #ks05
    
      done
    
    rm -r $TMPDIR

    В скрипте не задействовано ядро битрикс ВМ дабы можно было его адаптировать на любые другие сервера. Для определения базы данных выполняется dbconn и его переменные используются для бэкапа.
    Ответ написан
    Комментировать
  • Как изменить динамическую ссылку на файл?

    shambler81
    @shambler81 Куратор тега htaccess
    RewriteRule ^storage/.+/db/(.+)$ /storage/db/$1/? [L,R=301]
    Ответ написан
    Комментировать
  • Литература по Linux. Как лучше изучить Linux?

    shambler81
    @shambler81 Куратор тега Linux
    1. ставь linux mint самый простой вариант для изучения.
    2. оставляй ее как основную ос удали другие ( только так можно сделать полный переход)
    3. phpsotrm есть для линукс.
    4. линукс большой это то-же самое что " я хочу выучить программирование", собственно для программиста линукс должен быть примитивно легок. Так что тут немного конкретики не помешает.
    главное понять его философию.
    Какой именно дистрибутив без разницы поскольку выучив один ты сможешь с легкостью работать в любом другом.
    НО лучше всего брать обкатаные дистрибутивы не дичь ну и с адекватными обновлениями минт для этого подойдет.
    Если прям хочешь красношляпу то федору.

    Что по обучению
    1. в линуксе нет GUI все это баловство, весь нормальный софт консольный. Пока ты работаеш в гуи ты не учиш линукс.
    Вплоть до радио и плеера, уходи полностью в консоль. ( разработку всеже в шторме, но если прям по харду то vim)

    Выучи
    stdin stdout stderr
    как передавать потоки туда сюда, коды возврата.
    из консольных утилит нужно хорошо уметь раобтать с
    dir ls find sed awk grep xargs - чем лучше их знаешь и зная как работать с потоками этого для старта более чем достаточно остальное по манам в ходе работы.
    упрощеные условия типа |, || , && полезны в работе.
    а остальное это конструктор и "правильно собраного линукса не бывает это как правильный код, он только у одного человека в мире, это разраба, у всех остальных свое мнение по этому поводу и как правильно работать с линуксом нет общего понятия.
    Ну и теорию подучить нужно однозначно, тут никуда.
    Насколко я понимаю тебе нужно это для работы с веб серверами
    то тут идиально подойдет ispconfig3 ставь его, по дороге разберешся че куда идет.
    Далее патчь его до nginx+apache и ты считай уже в теме.
    Далее разбираешся с представлениями пхп
    Ну и версионностями последних.
    ;)
    Ответ написан
    Комментировать
  • Как организовать файлопомойку через ssh?

    shambler81
    @shambler81 Куратор тега Linux
    самый лучший вариант это расшарить самба шару через CIFS
    из плюсов это безшовность что на линукс что на виндовс это будут обычные шары
    мультиплатформенность базовые решения во всех ос, без костылей и магии
    а главное это единственный из протоколов заточеный на работу с большим количеством файлов.
    Короче это единственный протокол который неормально будет работать ( производительность при большом количестве файлов)
    все остальные даже взвешивать папку будут несколько часов.
    а если просто передать пару файлов то любой вплоть до ftp
    Ответ написан
    Комментировать
  • Как изменить url через httaccess?

    shambler81
    @shambler81 Куратор тега htaccess
    RewriteRule ^product/(.+)/$ /catalog/$1/? [L,R=301]
    Ответ написан
    Комментировать
  • Как сделать массые редиректы в каталоге?

    shambler81
    @shambler81 Куратор тега htaccess
    не совсем понятно что из них было что стало.
    Дай пару ссылок прям как есть было стало
    С регулярками проблем нет там все можно вставить
    Ответ написан
    7 комментариев
  • Как исключить полный путь из tar?

    shambler81
    @shambler81 Куратор тега Linux
    Напишите что конкретно вы хотите сделатЬ, не саму проблему а именно действие. возможно уже есть готовые скрипты.
    вот атк делаются эксклуды.

    tar -cvpzf $TMPDIR/$DATEYM/$ELEMENT-$DATE.tar.gz --directory $SITEDIR/$ELEMENT/$WEB --ignore-failed-read --exclude='./bitrix/tmp' --exclude='./bitrix/updates' --exclude='./bitrix/backup/*\.gz*' --exclude='./bitrix/backup/*\.tar*' --exclude='./bitrix/cache' --exclude='./bitrix/managed_cache' --exclude='./bitrix/stack_cache' --exclude='./upload/resize_cache' --exclude='./stats' . >> /dev/nool 2> /var/log/backup_error.log
    Ответ написан
    Комментировать
  • Как обработать результат команду через grep?

    shambler81
    @shambler81 Куратор тега Linux
    sudo -V | head -n 1 |awk '{ print $3 }'

    вывод
    1.8.21p2


    Теперь проверяем версию
    if [ "$(sudo -V | head -n 1 |awk '{ print $3 }')" = "1.8.21p2" ]; then
    echo "все сработало"
    fi


    Усложняем я так понимаю вам нужно исключить определенные версии для этого нужно будет или несколько иф сделать или эльсиф

    if [["$(sudo -V | head -n 1 |awk '{ print $3 }')" = "1.8.21p2" ]]; then 
      echo "все сработало 1.8.21p2"
    
    elif [[ "$(sudo -V | head -n 1 |awk '{ print $3 }')" = "1.0" ]]; then 
     echo "все сработало 1.0"
    
    fi


    Если четко понимать что вы хотите то можно и сделать в 1 строчку
    например
    Если не это, и не это то
    опишите что вы хотите к примеру если это версия выше определенной то тут могут быть проблем поскольку внутри уже буквы имеются
    Ответ написан
  • Почему плохое качество у изображений каталога Bitrix?

    60b65a4b63125883389398.png
    ставь сотку, обжимай jpegoptim
    Ответ написан
    Комментировать
  • Как развернуть локальный сервер Apache/Nginx на ноутбуке или ПК?

    охне выдумыайте велосипед
    vestacp
    braynicp
    ispconfig3
    bitrixvm ( тут центос)
    и тп
    1 клик и у вас все работает с вебо мордой и тд
    Вам же не nginx нужен а целая связка демонов.
    Ответ написан
    Комментировать
  • В чём главное различие между Nginx и Apache?

    разница в том что это совершенно разные проекты, общее между ними только html
    все остально еразное
    apache старый
    nginx поновее и в нем меньше обратной совместимости да и собран он уже со знанием что есть биг дата и тд.
    В общем он посвежее и побыстрее работать будет
    В nginx php интерпретируется сторонним демоном, это как правило php-fpm
    В апчье есть mod_apache - являсь модулем апача он работает быстрей лучше получает коды завершения и тд, но слишком сатрый и плохо параллелится маштабируется и с правами там трабылы, НО он самый частый до сих пор.
    Есть и дургие представления пхп FastCGI CGI PHP-FPM и тд. в общем для апача есть все
    nginx в свою очередь молодой и не все на нем работает сразу, поскольку большенство движков cms созданы под апачь, и требуется переписать htccess на правила nginx.

    nginx часто используют в связке с апачем как прокси сервер.
    статику отдает nginx динамику апач.
    так же nginx отлично балансирует бэк сервера в такой конфигурации да и собственный upstream есть , в общем при большом количестве серверов с ним лучше работать.
    ну есть nginx+ даже облачный есть.

    для изучения поставь связку nginx+apache+php-fpm
    это достаточно современная связка и заодно выучишь и то и то.
    А еще лучше поставь что-то вроде vestacp с таим расширение тут уже будет все нормально настроено и можно будет смело приходить к стадии изучения.
    Ответ написан
    2 комментария
  • Какой пароль от mysql -u root -p в BitrixVM?

    cat /root/.my.cnf | grep password
    Ответ написан
    Комментировать
  • Как правильно прописать правила в htaccess?

    shambler81
    @shambler81 Куратор тега htaccess
    Ответ написан
    Комментировать
  • Как мне написать скрипт который будет выводить на экран СОДЕРЖИМОЕ файлов директории?

    shambler81
    @shambler81 Куратор тега Linux
    find /home/lalala -type f -exec cat {} \;
    find- найти
    /home/lalala - где
    -type f- файл
    -exec выполнить команду (фишка файнд)
    cat - принт файла
    {} путь до файла который найдет файнд
    \; закрывается файнд экранированный
    если тебе нужно еще и что-то найти в этих файлах то вместо cat ставь grep с тем что искать.
    Ответ написан
    Комментировать
  • Как сделать редирект с карточки товара на новый урл?

    shambler81
    @shambler81 Куратор тега htaccess
    RewriteCond %{QUERY_STRING} (?:^|&)id\=(.+)(?:$|&)
    RewriteRule ^catalog/category/sub\-cetegory/name\-goods/$ /catalog/category/sub\-cetegory/products/name\-goods/\?id=%1 [L,R=301]
    Ответ написан
    Комментировать