Ответы пользователя по тегу Linux
  • Как поднять сервис с помощью bash скрипта?

    shambler81
    @shambler81 Куратор тега Linux
    1. это ошибка всех кто работают с кроном. в нем нет переменных $PATH и нужно писать полный путь до интерпритаторов.
    узнать ваш путь до команды легко
    which sh
    Вывод
    /bin/sh

    в моем случае это было бы
    1 * * * * /bin/sh /home/user/script.sh
    Так же не совсем понятно заем так все усложнять поему нельзя все это в потоке делать ?
    Вы не просо следите еще и конвертите мало того еще и сохраняете на диск конвертированное, заем ?
    А просто следить в потоке нет ?
    Ответ написан
    5 комментариев
  • Как исправить проблему SSL/TLS и SPDY?

    shambler81
    @shambler81 Куратор тега Linux
    не понятно зачем их отключать, скорее их включают.
    В общем
    у вас в конфиге должен быть
    server {
            listen 443 ssl http2;
    ...

    удалите
    http2
    и перезапустите демон
    ну и если апачь то в нем практически тоже самое
    но заем вам это ?
    Откуда вы взяли такой чеклист?
    Ответ написан
    Комментировать
  • Как автоматизировать настройку Debian 11, Apache2 (+Nginx), Php, Mysql для production web-сервера?

    shambler81
    @shambler81 Куратор тега Linux
    ispconfig3 + собственный баш скрипт
    vestacp - в 1 клик
    braynicp
    aapanel
    bitrixvm и так далее
    Сверуху пишешь баш скрипт и все
    Ответ написан
    Комментировать
  • Как создать и автоматизировать свои DNS сервера?

    shambler81
    @shambler81 Куратор тега Linux
    миллион админок разной степени страшности например www.facilemanager.com/modules/fmdns
    Так же проще поставить админку ан весь веб сервер
    что-то вроде
    aapanel
    ispconfig3
    vestacp
    braynycp и тд там и днс полноценный и сами сайты управляются
    Ответ написан
    Комментировать
  • Как правильно открыть порт?

    shambler81
    @shambler81 Куратор тега Linux
    Если у вас айпитейблс
    iptables -I INPUT -p tcp --dport 22 -j ACCEPT
    iptables -I INPUT -p tcp --dport 21 -j ACCEPT
    service iptables save


    Если у вас фаервол
    firewall-cmd --zone=public --add-port=22/tcp   --permanent
    firewall-cmd --zone=public --add-port=21/tcp   --permanent


    ufw
    sudo ufw allow 22/tcp
    sudo ufw allow 21/tcp


    Так же обрисуйте вашу систему выхода в интернет, скорее всего вы за NAT и рзадает его ваш роутер
    Следовательно на роутер нужно сделать порт форвардинг.
    То есть порт сейчас закрыт на самом роутере, да и если его открыть то он будет доступен на самом роутере
    соответственно вам нужно найти место где добавляется следующее правило
    22->22 tcp 192.168.1.2
    что -то вроде такого
    То есть какой внешний порт, каким портом он будет внутри сети и соответственно какому внутреннему айпи отдать его.
    Ответ написан
  • Компилирование из исходников pgadmin 4?

    shambler81
    @shambler81 Куратор тега Linux
    в линуксе есть несколько вариантов (около 6) как установить ПО
    вы выбрали самый неудобный
    https://www.tecmint.com/install-postgresql-and-pga...
    какая у вас ОС ?
    Ответ написан
  • Аналог filezilla в убунту?

    shambler81
    @shambler81 Куратор тега Linux
    друг мой все очень просто до безобразия,
    1. вариант ты в обычном навигаторе коннектишся к FTP и сохраняеш ярлык, собственно все никаких клиентов не нужно все будет работать и так.
    611a00c0b39f1642530790.png
    Появится просто тут быстрая ссылка

    2. ты просто монтируешь нужные тебе сервер через
    https://help.ubuntu.ru/wiki/%D0%BC%D0%BE%D0%BD%D1%...

    3. монтируешь через фстаб
    curlftpfs#ftp.server.ru  /mnt/ftp  fuse  noauto,user=UsEr:PaSsWd,allow_other,default_permissions,umask=027,_netdev   0 0

    Во всех случаях ты получаешь локальный доступ бесшовный и безсофтверный, и можешь пользовать фтп как обычным локальным диском, куда тебе еще более удобный вариант ?
    Ответ написан
  • Как создать пользователя vsftpd и дать ему доступ к /var/www?

    shambler81
    @shambler81 Куратор тега Linux
    sftp брат, просто юзай логин и пароль ssh в клиенте фтп выбери вместо ftp -> sftp и все, ниче делать не нужно.
    Если тебе нужен фтп клиент то вот
    https://timeweb.com/ru/help/pages/viewpage.action?...
    единственное оно заточено под битиркс вм, но по факту тебе нужно определить вместо ползователя битрикс, юзера от которого ты запускаешь апач.
    скорее всего у тебя это www-data ун и путь до папки у тебя соответственно свой
    Ответ написан
    Комментировать
  • Ubuntu 20.04 не загружает графическую оболочку?

    shambler81
    @shambler81 Куратор тега Linux
    просканирй диск на ошибки
    такое в 80% исправляется.
    Ответ написан
  • Восстановить root на сервере?

    shambler81
    @shambler81 Куратор тега Linux
    Вот как вчера помню находится за секунду
    https://docs.hetzner.com/robot/dedicated-server/tr...
    Ответ написан
    Комментировать
  • Где взять голый linux?

    shambler81
    @shambler81 Куратор тега Linux
    да можно каждый линукс имеет минимальные сборки. в которых нет графики.
    Так же можешь познакомиться с gentoo тебе должно понраниться, особенно инсталятор.
    Ответ написан
    Комментировать
  • Почтовый клиент с поддержкой мульти прокси?

    shambler81
    @shambler81 Куратор тега Linux
    любой почтовый сервер умеет это делать
    email-distribution-server-local-users.png
    от вот таких маленьких, и для винды
    и до postfix
    Собствено все что тебе нужно это создать учетку в ней и собирать почту хоть до морковкена заговения и перенаправлять ее на нужные ящики.
    так же можно собираь на яндексе майле да дофига где можно в этом вообще проблем нет.
    Ответ написан
    Комментировать
  • Можно ли вывести значение переменной http?

    shambler81
    @shambler81 Куратор тега Linux
    cat 111.txt | grep ^DocumentRoot |  egrep -o '/.+[^"]'

    вывод

    /var/www/html


    Теперь подрбоней
    ^- начало строки
    соответственно будет тольк отот что документ рут начинается сразу а не в контенте
    ну и далее мы делаем еще раз grep
    с -o онли
    ну и дальше то что начинается со слеша но не кавычки собственнно это наш урл
    Ответ написан
    Комментировать
  • Как сделать find быстрее?

    shambler81
    @shambler81 Куратор тега Linux
    вместо execиспользуйте xargs- профит раз в 200.
    В 200 раз вас устроит ускорение ?
    Ответ написан
    Комментировать
  • Как установить PHP 5.4 CentOS 7?

    shambler81
    @shambler81 Куратор тега Linux
    репозиториев нет ставь с тарболов в режиме php+fpm это сделать проще всего
    Вот так я ставил на дебиане, подправить нужно с учетом центоса.
    apt-get install -y libxslt-dev libcurl4-gnutls-dev libfcgi-dev libfcgi0ldbl libmcrypt-dev libssl-dev libxml2-dev zlib1g-dev libcurl4-gnutls-dev libjpeg-turbo8-dev libbz2-dev libjpeg-dev libfreetype6-dev libmcrypt-dev libcurl4-gnutls-dev
    apt-get install -y libpq-dev
    cd /usr/include
    cd /usr/local/include
    sudo ln -s /usr/include/x86_64-linux-gnu/curl curl
    mkdir /opt/php5.4.45
    mkdir /usr/local/src/php5
    cd /usr/local/src/php5
    wget http://de2.php.net/get/php-5.4.45.tar.gz/from/this/mirror
    mv mirror php-5.4.45.tar.gz
    tar -xzvf php-5.4.45.tar.gz
    cd php-5.4.45
    
    
    ./configure \
    --prefix=/opt/php5.4.45 \
    --with-pdo-pgsql \
    --with-zlib-dir \
    -with-freetype \
    --enable-mbstring \
    --with-libxml-dir=/usr \
    --enable-soap \
    --enable-calendar \
    --with-curl \
    --with-mcrypt \
    --with-zlib \
    --with-gd \
    --with-pgsql \
    --disable-rpath \
    --enable-inline-optimization \
    --with-bz2 \
    --with-zlib \
    --enable-sockets \
    --enable-sysvsem \
    --enable-sysvshm \
    --enable-pcntl \
    --enable-mbregex \
    --with-mhash \
    --enable-zip \
    --with-pcre-regex \
    --with-mysql \
    --with-pdo-mysql \
    --with-mysqli \
    --with-jpeg-dir=/usr \
    --with-png-dir=/usr \
    --enable-gd-native-ttf \
    --with-fpm-user=www-data \
    --with-fpm-group=www-data \
    --with-libdir=/lib/x86_64-linux-gnu \
    --enable-ftp \
    --with-kerberos \
    --with-gettext \
    --enable-fpm
    
    make
    make install
    
    cp /usr/local/src/php5/php-5.4.45/php.ini-production /opt/php5.4.45/lib/php.ini
    cp /opt/php5.4.45/etc/php-fpm.conf.default /opt/php5.4.45/etc/php-fpm.conf
    
    
    sed -i 's/listen = 127.0.0.1:9000/listen = 127.0.0.1:8998/g' /opt/php5.4.45/etc/php-fpm.conf
    sed -i 's/\x3Bpid = run\/php-fpm.pid/pid = run\/php-fpm.pid/g' /opt/php5.4.45/etc/php-fpm.conf
    echo "include=/opt/php5.4.45/etc/pool.d/*.conf" >> /opt/php5.4.45/etc/php-fpm.conf
    
    mkdir /opt/php5.4.45/etc/pool.d
    vim /etc/init.d/php5.4.45-fpm  # вставляем конфиг, и правим версию пхп https://www.howtoforge.com/how-to-use-multiple-php-versions-php-fpm-and-fastcgi-with-ispconfig-3-ubuntu-12.10-p3
    chmod 755 /etc/init.d/php5.4.45-fpm
    #заменяем актуальной версией php,  плс название в общем стиле а не как по ману
    sed -i 's/php\-5\.4\.12/php5.4.45/g' /etc/init.d/php5.4.45-fpm
    
    update-rc.d php5.4.45-fpm defaults 
    /etc/init.d/php5.4.45-fpm start
    update-rc.d php7.3-fpm defaults
    apt-get install libmemcached-dev
    
    # исправит проблему подключения по loalhost поскольку в  стандартных php.ini она вообще не обьявлена
    echo "mysqli.default_socket = /var/run/mysqld/mysqld.sock" >> /opt/php5.4.45/lib/php.ini
    echo "mysqli.default_socket = /var/run/mysqld/mysqld.sock" >> /opt/php5.4.45/lib/php.ini
    /etc/init.d/php5.4.45-fpm restart
    /etc/init.d/apache2 restart
    Ответ написан
    Комментировать
  • Перебор и изменение файлов bash скриптом?

    shambler81
    @shambler81 Куратор тега Linux
    find . -regex ".*\.\ini" -exec sed -i 's/было/стало/g' "{}" \;
    Ответ написан
    5 комментариев
  • Как разобрать массив?

    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

    код на вскидку писал, дабы было понятно смысл.
    Ответ написан
  • Почему не видит папку или файл?

    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 и его переменные используются для бэкапа.
    Ответ написан
    Комментировать
  • Литература по 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 и ты считай уже в теме.
    Далее разбираешся с представлениями пхп
    Ну и версионностями последних.
    ;)
    Ответ написан
    Комментировать