• Подойдет ли ноутбук Huawei matebook d14 на ryzen 4500u для веб-разработки?

    gedev
    @gedev
    сисадмин-энтузиаст
    Если уж присматриваетесь к моделям Huawei, то я бы на вашем месте взял модель Matebook 13 на AMD (линк). Примерно тот же ценник (чутка выше), зато разживётесь 16 Гб ОЗУ. Но при этом на дюйм меньше диагонали.

    Сам уже год пользуюсь Matebook 14 прошлого поколения (на Ryzen 3600u), особо не жалуюсь, но памяти бы побольше. Так что берите тринашку и будет вам счастье. С цветами всё норм. Не супер, норм. А лучше, как предлагали выше, в магазине руками потрогать.
    Ответ написан
  • Почему в каждом разделе bitrix находится файл .htaccess?

    gedev
    @gedev
    сисадмин-энтузиаст
    А ещё у вас в корне сайта файл .htaccess с чуть более длинным почти аналогичым содержимым и вставка в начале index.php с зашифрованным кодом и чем-то отсылающим к Wordpress.

    Если да, то вас поломали. До боли знакомый вредонос. Восстанавливайтесь из бэкапов и закрывайте все дыры которые можете. Скорее всего где-то рядом лежит ещё пара другая шеллов. Например, я часто видел fot.php.

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

    gedev
    @gedev
    сисадмин-энтузиаст
    Тут уже посоветовали Flask, но ещё есть Bottle.
    Идея в том, что вы создаёте обработчики для различных действий и назначаете им роуты. Для наглядности пример на Bottle:

    @route('/genconf', method='POST')
    def generate_config():
        vlan = request.forms.get('vlan')
        port = request.forms.get('port')
        hostname = requests.forms.get('hostname')
        # Здесь вызов функции, которая принимает аргументы и делает вашу магию
        return 'Результат магической функции выше'

    Собственно, данные можно принимать из HTML формы, выводить туда же в HTML. Чтите доки :3

    P.S.: Ещё можно пойти спартанским путём и юзать CGI.
    Ответ написан
    Комментировать
  • Как сделать бэкап большого сайта на битрикс?

    gedev
    @gedev
    сисадмин-энтузиаст
    Воспользуйтесь rsync для копирования файлов на другой сервер или локально. Тогда не придётся создавать архивы на исходном сервере (архивация 100гб займёт очень много времени + время на последующую передачу + диск на сервере не бесконечный). Дамп базы данных тоже можно сделать не сохраняя файл на сервере (если она очень большая), ну или сохранить дамп и скачать его тем же rsync'ом.
    Способов на самом деле очень много.
    Разумеется, если вы не умеете обращаться с консолью, лучше поручить дело тому, кто умеет. А ещё лучше, если этот кто-то настроит автоматические бэкапы.
    Ответ написан
    Комментировать
  • Как настроить Mozilla Firefox для работы в корпоративной среде?

    gedev
    @gedev
    сисадмин-энтузиаст
    Я не имею отношения к администрированию Windows, но удалось найти инструкции, которые скорее всего решают вашу проблему.
    Буквально на том же сайте, на который вы ссылаетесь: https://winitpro.ru/index.php/2017/01/23/upravleni...
    И ещё: https://www.white-windows.ru/kak-v-windows-zapreti...
    Ответ написан
    Комментировать
  • Скопировать сайт с wget или httrack со скачкой скриптов с внешних сайтов?

    gedev
    @gedev
    сисадмин-энтузиаст
    Как вариант, можно спарсить (с помощью grep / sed / awk) все внешние ссылки на странице (предварительно загрузив страницу, например, через curl) и дальше уже по этим ссылкам пройтись wget'ом в цикле. Но это уже тянет на целый скрипт.
    Ответ написан
    Комментировать
  • Как обновить файлы в flask app nginx?

    gedev
    @gedev
    сисадмин-энтузиаст
    рестартаю сервак

    Это рестарт nginx, gunicorn или вы весь сервер перезапускаете?

    Если редактируете файлы .html которые обрабатывает Flask (темплейты) и при этом старый шаблон сохраняется (кэшируется), то перезапуска gunicorn будет достаточно. Чтобы быть уверенным, сначала прибейте все активные процессы gunicorn с помощью kill / htop, как удобнее, и запускайте снова.

    Если проблема при редактировании html файлов, которые отдаёт nginx напрямую (не проксируя запрос к файлу в ваше приложение), то смотрите настройки кэширования файлов в nginx, исключите кэш html.
    Ответ написан
  • Как поменять сортировку порядка текста?

    gedev
    @gedev
    сисадмин-энтузиаст
    tac исходный_файл > новый_файл

    Запишет данные в обратном порядке в новый_файл.
    Ответ написан
    Комментировать
  • Умеет ли nginx "запоминать" пользователя?

    gedev
    @gedev
    сисадмин-энтузиаст
    Тут вопрос касается не столько работы Nginx, сколько протокола HTTP. HTTP не "запоминает" клиента. Nginx лишь может записать реферера, отсюда у вас есть информация о том, откуда пришёл клиент. Дальше на сайте клиент делает новый запрос, который никак не связывается с предыдущим. Поэтому, как верно подсказывают, реализацию вашей задачи надо выполнять на уровне приложения.
    От себя добавлю, что перекладывать часть функционала приложения на веб-сервер это не очень хорошая идея.

    HTTP не сохраняет своего состояния. Это означает отсутствие сохранения промежуточного состояния между парами «запрос-ответ».

    Тык, тык.
    Ответ написан
    Комментировать
  • Как найти строки по фильтру в большх файлах?

    gedev
    @gedev
    сисадмин-энтузиаст
    Поясню что было не так в вашей команде. Похоже, вы не совсем понимаете принцип конвейера (|).

    cat < dump.sql | wc -l | grep -i 'DROP TABLE IF EXISTS' | awk {'print $1'}

    Здесь cat < dump.sql делает то, что нужно — печатает весь дамп в STDOUT, но cat не нужно перенаправление вывода (<), поэтому лучше писать так: cat dump.sql.
    Затем строка с дампом передаётся в STDIN wc -l. На выходе в STDOUT поступает строка вида 12345. То есть это просто число строк в исходном дампе. Но вы далее в строке 12345 пытаетесь найти вхождения DROP TABLE IF EXISTS c помощью grep. Уже тут получаете пустую строку, а awk показывает результат работы над пустой строкой — новую пустую строку.
    Ответ написан
    Комментировать
  • Зачем создавать символьную ссылку на public_html?

    gedev
    @gedev
    сисадмин-энтузиаст
    Для корректной отдачи статического контента средствами Nginx необходимо создать символьную ссылку public, указывающую на public_html.

    Судя по всему вы используете shared хостинг и там жёстко прописан DocumentRoot в настройках веб-сервера.
    Тут симлинк имеет смысл чтобы заставить веб-сервер читать другую папку, а не publiс_html/.
    Удалите publiс_html/ и создайте симлинк:

    ln -s /path/to/public /path/to/public_html
    Ответ написан
  • Какой командный процессор (shell) самый продвинутый и удобный в Linux?

    gedev
    @gedev
    сисадмин-энтузиаст
    Если надо докручивать bash, то посмотрите на Oh My Bash!. Сам предпочитаю bash как он есть или sh.
    Ответ написан
    Комментировать
  • Безопасность дроплетов DO такая же как у обычного виртуального хостинга?

    gedev
    @gedev
    сисадмин-энтузиаст
    DigitalOcean даёт вам виртуальный выделенный сервер. На нём изначально нет ничего. За безопасность на своём сервере отвечаете вы сами. А безопасность там может быть значительно ниже, чем на виртуальном хостинге, если вы:

    1. Ошиблись в конфигурации (например, при настройке веб-сервера)
    2. Не озаботились SSH-ключами и/или у вас слабые пароли
    3. Не обновляете ПО
    4. Пользуетесь сомнительными решениями
    5. etc.

    На виртуальном хостинге обычно всё хорошо и ломают сайты только из-за кривизны самих сайтов.
    Так что ничего ваш сайт не защитит, если он сам дырявое корыто. А через него шеллы уже и на сервер распространиться могут при неправильной настройке последнего.

    Почитайте интересную статью.

    Как ответили ранее, лучше нанять того, кто умеет.
    Если хотите сами, то есть куча статей на тему, например, вот. Гуглите и изучайте администрирование LInux. Это будет небыстро.
    Ответ написан
    1 комментарий
  • Есть сейчас смысл ставить Ubuntu для изучения backend (PHP,Python,Postgre и т.д)?

    gedev
    @gedev
    сисадмин-энтузиаст
    Если пишете серверные приложения, то *NIX специфичные вещи нужно хорошо знать. В таком случае определённо стоит ставить Ubuntu, ИМХО. Также соглашусь с Sanes.
    Ответ написан
    Комментировать
  • Как быстро заливать на сервер (Debian) большие объемы данных?

    gedev
    @gedev
    сисадмин-энтузиаст
    Я как-то для себя сохранял информацию по вопросу передачи файлов большого размера. На практике пока не приходилось заниматься, но возможно тебе, автор, эти обрывки текста помогут. Все под катом. Взято из комментариев к этому ролику. Идея сжимать файлы налету выглядит крайне хорошо.

    Паста
    Если объем данных огромен и содержит огромное количество файлов, а также нет места (времени) для создания архива, но передать нужно сейчас и очень быстро (чтобы получить более высокую скорость передачи данных), рекомендую использовать следующие команды.
    На стороне получателя данных переходим в каталог, в который необходимо разместить полученные данные, и выполняем такую команду:
    nc -l 12345 | tar xvf -
    На стороне источника данных так же переходим в каталог, в котором размещён передаваемый каталог, и выполняем такую команду:
    tar -cf - ./our_directory/ | nc target_host 12345
    вариант с выводом объема трафика
    tar -cf - ./our_directory/ | pv | nc target_host 12345
    Где:
    12345 - номер порта, по которому будет производиться обмен данными;
    target_host - ip-адрес или hostname компьютера, на который будут передаваться данные.

    ---

    ещё какие-то доки
    moo.nac.uci.edu/~hjm/HOWTO_move_data.html#tarnetcat

    ---

    У nc есть один существенный минус. Порт на сервере для передачи данных надо открыть в файрволле, а после передачи не забыть закрыть. А для передачи данных с локального ПК на сервер, надо пробрасывать порт на локальный комп на маршрутизаторе (если конечно сквозная маршрутизация не настроена средствами ВПН или напрямую). Для ssh порт как правило открыт для подключений извне, так что дополнительных лействий совершать не придется.

    Далее, хорошо сжимаемые данные (текстовики, образы виртуалок, дампы баз) принято гонять в сжатом виде. Жать можно на лету, либо встроенными в scp инструментами, либо жать сторонними утилитами вроде pigz и гонять данные через ssh и пайпы. Например так:
    dd bs=4M if=template.img | pv | pigz -9c | ssh user@host "unpigz -c > /vm/template.img"
    Подобным способом можно не только гонять файлы, но и переливать образ на удаленное устройство.
    sudo dd bs=4M if=/dev/ssd1/vm | pv | pigz -9c | ssh user@host "unpigz -c | sudo dd bs=4M of=/dev/ssd2/vm"

    ---

    https://www.stableit.ru/2012/03/gzip-vs-pigz.html
    Ответ написан
    Комментировать
  • Знания каких языков нужны для написания полного сайта?

    gedev
    @gedev
    сисадмин-энтузиаст
    Ответ написан
    Комментировать
  • Почему не работает grep?

    gedev
    @gedev
    сисадмин-энтузиаст
    Как отметили в комментариях, лучше работу с опциями реализовывать иначе. Например с помощью case вот так. Рекомендую ознакомиться и с другими примерами по ссылке.
    Ответ написан
    Комментировать
  • Как устранить ошибка 404 после / в связке nginx-wsgi-flask?

    gedev
    @gedev
    сисадмин-энтузиаст
    Удалите эту строку из конфига Nginx:
    try_files $uri $uri/ =404;
    Тут дело в том, что Nginx должен передавать в бэкенд все запросы, на которые не может отдать ответ сам. Если папка hello действительно не лежит в root, то Nginx вернёт 404.

    SoreMix тоже прав. Во Flask слэш имеет значение. Вы можете отключить строгое соблюдение слэшей добавив в приложение код:

    app.url_map.strict_slashes = False
    Ответ написан
    Комментировать
  • Как исправить ошибку cURL?

    gedev
    @gedev
    сисадмин-энтузиаст
    Скорее всего не установлен модуль php-curl. Перейдите в админке в "Инструменты"->"Здоровье сайта" и устраните все найденные проблемы.
    Ответ написан
    1 комментарий
  • Столкнулся с поддоменом, который отдает 403 forbidden но при этом открывается. Как такое реализовано?

    gedev
    @gedev
    сисадмин-энтузиаст
    Проиллюстрирую ответы выше примером на Python (запускать через CGI).

    Вот такой скрипт. Всё что находится до пустого print() это заголовки HTTP:

    #!/usr/bin/env python3
    
    print("Status: 403 Forbidden")
    print("Content-type: text/html")
    print()
    print("<h1>Hello world!</h1>")


    Если запросить страницу через curl, то мы получим тело ответа:

    $ curl http://example.ru/cgi-bin/scr.py
    <h1>Hello world!</h1>


    Если запросить заголовки, то 403, как и указано в скрипте:

    $ curl -I http://example.ru/cgi-bin/scr.py
    HTTP/1.1 403 Forbidden
    Server: nginx/1.16.1
    Date: Tue, 17 Nov 2020 12:01:18 GMT
    Content-Type: text/html; charset=utf-8
    Connection: keep-alive
    Vary: Accept-Encoding
    Ответ написан
    Комментировать