• Как запустить bottle-приложение как докер-контейнер?

    @deliro
    1) ENTRYPOINT заменить на CMD и почитать про разницу
    2) Наследоваться от python:3.7, а не от ubuntu
    3) Не лепить виртуальную среду в докер образе
    Ответ написан
    2 комментария
  • Как выполнить команду на сервере при подключении через ssh?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    В принципе вы можете попробовать в .bashrc добавить проверку на IP клиента, раз вы все время с вашего компа заходите.

    Берете $SSH_CLIENT переменную, отрезаете первый столбец, сравниваете его с IP вашего компа. Если совпало - значит это подключились именно вы, и можно врубать ваши конфиги.
    CLIENT_IP="${SSH_CLIENT%% *}"
    if [[ "$SSH_CLIENT" == "10.20.30.40" ]]; then
      source ~/.bashrc_Angel2S2
    fi


    Таким образом ваши настройки не будут подгружаться у коллег, и .bashrc не ломает scp.
    Ну и можно несколько ваших машин перечислить.
    Ответ написан
    3 комментария
  • Автоматизация развертки настроенной Linux на машины?

    @vitaly_il1
    DevOps Consulting
    Мой ответ - зависит от того что вам нужно - ставить один редкоменяющийся image на сотню компьютеров каждый день или для каждой из сотни инсталляций нужно кастомизировать систему.
    В первом случае - можно сделать image и просто ставить его через PXE, во втором - трудно обойтись без Ansible/Chef/Puppet.
    Дополнительно - Vagrant, Foreman.
    Ответ написан
    Комментировать
  • Docker - как запустить Apache от имени пользователя?

    @metajiji
    Вот если совсем в лоб, то:
    docker run --help
    docker run --user XXX


    В принципе вы это сделали в Dockerfile, но подумайте головой... Вы взяли образ httpd, внутри огромный debian https://github.com/docker-library/httpd/blob/75e85...
    Лучше для такой задачи взять alpine FROM httpd:alpine-2.4
    Дальше httpd скорее всего запускается от рута, причем не просто так! Ему просто необходимо это сделать, потому, что существует такая вещь как не привилегированные порты https://ru.wikipedia.org/wiki/%D0%A1%D0%BF%D0%B8%D...

    У вас 100500% в конфиге httpd указан порт 80, что меньше 1024, следовательно httpd не в силах запуститься!
    httpd запускается от рута, биндится на 80/443 порт, после чего делает suid на uid/gid, указанного в кофниге https://httpd.apache.org/docs/2.4/mod/mod_unixd.ht...

    Теперь зная это, становится понятно, почему в docker logs (имя_контейнера) мы видим ошибки.

    Что делать? Ну например запускать апач от пользователя www-data, как и собирались, но на портах выше, чем 1024, а если хочется, чтобы он отвечал на 80 порту на хосте, то не вопрос, порт-маппинг сделает для вас это, потому, что на хосте dockerd запустит docker-proxy процесс, который будет работать от рута и будет слушать 80 порт, проксируя траффик в контейнер на указанный вами порт, например 8080.
    Получаем, что внутри контейнера апач живет на 8080, снаружи на 80.

    version: '3.7'
    
    services:
    
      db:
        image: mariadb
        restart: always
        environment:
          MYSQL_ROOT_PASSWORD: example
    
      adminer:
        image: adminer
        restart: always
        ports:
          - 8080:8080
    
      web:
        image: httpd:alpine-2.4  # поверьте, вам не нужен nano внутри контейнера! просто подключите все необходимые конфиги с хоста как volume, это правда удобно.
        depends_on:
          - db
        restart: always
        ports:
          - 80:8080  #HOST:CONTAINER
        volumes:
          - //c/Docker/sf4/project:/usr/local/apache2/htdocs
    #      - скопируйте необходимые конфиги себе примерно так: "docker cp /etc/httpd/httpd.conf ." и подключите как volume
          - "./httpd/httpd.conf:/etc/httpd/httpd.conf"  # пример подключения конфига, где ./httpd/httpd.conf файл рядом с вашим docker-compose.yml
    Ответ написан
    6 комментариев
  • Iptables + Openvpn. Как запретить route через VPN для клиента чтобы только у него работало через провайдера?

    @zohan1993
    devops
    1. В конфиг OVPN сервера добавляем:
    -------------------------------------------------
    client-config-dir /etc/openvpn/ccd
    -------------------------------------------------

    2. Для нужного клиента добавляем параметры:
    /etc/openvpn/ccd/client1
    -------------------------------------------------
    # push-reset, запрещает отдавать этому клиенту общие параметры назначаемые командой push в конфигурационном файле сервера
    push-reset
    # Маршрут который хотим отдавать данному клиенту
    push route 192.168.100.0 255.255.255.0
    -------------------------------------------------
    Ответ написан
    Комментировать
  • Статистика (логирование) посещаемых сайтов пользователями, как сделать?

    CityCat4
    @CityCat4
    //COPY01 EXEC PGM=IEBGENER
    Божечки, этот вопрос постепенно так в лидеры выбивается - мы ж таки ж товарища Ына недавно встречали недаром...

    Для логирования доступа используется прокси. Для раскрытия https используется squid c бампингом (и статистикой). Чтобы работал бампинг нужно иметь свой СA (в винде серверной есть), распространенный на все компьютеры сети в качестве доверенных. Другого способа врезаться в https - нет (и этот-то не везде работает).
    Ответ написан
    4 комментария
  • Стоит ли включать barrier=0,commit=60,noatime,data=writeback,journal_async_commit в /etc/fstab?

    @putvr
    Для софтового рейда data=writeback лучше не делать.
    Можно сделать без риска для данных noatime, nodiratime, noacl, а с остальным можно играться когда рейд хардварный и с BBU.
    Ответ написан
    Комментировать
  • Стоит ли включать barrier=0,commit=60,noatime,data=writeback,journal_async_commit в /etc/fstab?

    Zoominger
    @Zoominger
    System Integrator
    Лучше не надо, скорость и так будет нормальная.
    А эти школотвики просто вредные советы.
    Ответ написан
    Комментировать
  • Как организовалась балансировку нагрузки?

    inoise
    @inoise
    Solution Architect, AWS Certified, Serverless
    настоящая балансировка куда сложнее. NGINX это просто инструмент для распределения трафика между несколькими серверами. На самом деле система должна (в идеале) состоять из DNS сервера, который общается с Service Discovery ( например Consul), в котором регистрируются и сервера приложений и серверА балансировщиков. Внимание - балансировщиков должно быть несколько и все это должно быть завязано на DNS чтобы не встрять из-за фиксированных IP. На один и тот же сервер приложения должен приходиться трафик не менее двух балансировщиков
    Ответ написан
    2 комментария
  • Как извлечь подстроку из строки при помощи grep?

    echo '"{"jsonrpc":"2.0","result":[{"groupid":"63","name":"1voda","internal":"0","flags":"0"}],"id":1}"' | cut -d\" -f11
    :

    Громоздко?

    А лучше так:
    echo '{"jsonrpc":"2.0","result":[{"groupid":"63","name":"1voda","internal":"0","flags":"0"}],"id":1}' | jq -r '.result[0].groupid'
    :


    P.S. вообще, с jrpc сервером проще работать jrpc клиентом, из того же питона. Да даже если и не использовать реализацию jrpc клиента. У вас же тут может вернуться массив результатов.
    Ответ написан
    Комментировать
  • Можно ли виртуалитзировать 2 сервера в одной машине?

    martin74ua
    @martin74ua Куратор тега Системное администрирование
    Linux administrator
    наймите админа
    Ответ написан
    2 комментария
  • Автоматическое копирование вольюмов Docker?

    Tyranron
    @Tyranron
    Нужно разделять stateless-сервисы и stateful-сервисы. Первые Вы можете раскладывать по нескольким хостам и не париться, а вот другие надо думать как именно их масштабировать, и какие гарантии нужны. По хорошему, само Ваше приложение должно быть stateless, и не монтировать никаких директорий, куда бы складывало файлы на длительное хранение, а заливало бы эти файлы для длительного хранения на другой специальный файловый сервер хоть по S3 bucket интерфейсу, хоть по, прости господи, FTP.

    Ещё здесь Важен вопрос каковы Вам нужны гарантии в данной ситуации. Если у Вас файлов мало, то можно тупо копировать файл на каждый из хостов (постоянной фоновой синхронизацией). Если файлов очень-очень много, то на один хост они никогда не влезут и нужно делать размазывание файлов по нескольким хостам с определенным уровнем избыточности (мы ведь не хотим потерять файлы навсегда, когда на одном из хостов полетит диск).

    Каковы есть/приходят на ум варианты:
    1. Поднять на всех хостах распределенную файловую систему (CephFS, GlusterFS, и т.п.). Монтируем в контейнер приложения volume под этой системой и тупо пишем туда файлы как обычно. Распределенная ФС самостоятельно размажет файлы по хостам в зависимости от желаемых настроек. Читаем файлы из той же директории.
      Плюсы: не нужно менять код приложения, легко использовать, простая концепция в понимании.
      Минусы: при интенсивной работе с файлами может не хватать производительности (подобные ФС считаются медленными), при отвале части хостов может не работать запись (так как требуется кворум n/2 + 1), эксплуатация/поддержка подобных систем может быть не самой тривиальной задачей (веселой починки сломавшегося Ceph-кластера).
    2. Поднять на всех хостах Minio (свой poor man's S3 bucket), либо другой свой отдельный файловый сервер. Работает в двух режимах: single (одна нода работает только со своими файлами, запись в несколько надо надо делать на стороне приложения, и фоновую синхронизацию тоже самостоятельно) и distributed (ноды обьединены в кворумный кластер с размазыванием файлов).
      Плюсы: S3 bucket интерфейс, легкая эксплуатация, можно монтировать как ФС.
      Минусы: возможно нужно менять код приложения (чтобы уметь работать с S3), производительность на чтение в distributed режиме медленная (сравнима с распределенными ФС из пункта 1).
    3. Просто монтировать на каждом хосте локальную директорию, для которой настроить постоянную фоновую синхронизацию через BitTorrent Sync какой-то (а может даже просто rsync).
      Плюсы: производительность обычной ФС, никаких кворумов (а значит блокировок на запись), легко использовать (монтируешь и вперёд).
      Минусы: файлы доступны на других хостах только через какое-то время, а значит приложение должно уметь это учитывать, возможна потеря данных (нода приняла файлы и сгорела не успев их отсинхронизировать на другие), если файлы не влезают на один хост - то вариант не подходит, либо шардить (размазывать) придётся руками самостоятельно в приложении.
    4. Использовать готовое отказоустойчивое облако: AWS Bucket, DigitalOcean Space и т.п.
    Ответ написан
    2 комментария
  • Как реализовать удаленный сбор информации о компьютере?

    @anykey_ua
    Есть клиент серверные решения для автоматизации инвентаризации, это как выше писали 10-strike и т.д. Мне понравилось GLPI очень подробно собирает информацию и есть варианты для установки клиента GPO
    Ответ написан
    Комментировать
  • Как поднять несколько сайтов на одном сервере?

    DevMan
    @DevMan
    Несколько сайтов на одном IP, которые резолвятся по serverName - это нормальный подход?
    a как по вашему работают шаред–хостинги, у которых на одном ипе несколько сотен доменов/сайтов?

    докер нужен там, где он нужен и когда он нужен. а не словили хайп, снесло кукушку, тулим его на каждый чих–пых.

    по вашему описанию, вам даже впс не нужен – достаточно просто перенеси все сайты на один акаунт у одного хостера.
    а для потренироваться отлично подходит локалхост или персональный впс.
    Ответ написан
    2 комментария
  • Как выдать права к magento 2?

    orlov0562
    @orlov0562
    I'm cool!
    Я тебя сейчас напугаю, но права 0777 нельзя устанавливать, никогда, хаха.

    Тебе надо узнать от какого пользователя у тебя работает веб-сервер, и назначить его владельцем папки.

    Права для папок должны быть 0755, а для файлов 0644. А лучше, 0750 и 0640.
    Ответ написан
    2 комментария
  • Возможно ли организовать сетевую синхронизацию времени между сегментами сети связанными через однонаправленный шлюз?

    jamakasi666
    @jamakasi666 Куратор тега Linux
    Просто IT'шник.
    В закрытом сегменте сети поднимаете ntp сервер, покупаете GPS антенну и берете время с нее. У меня на работе везде такая схема, gps антенны все на rs232, ntpd только подшаманить и все. Везде это порядка 40 объектов, точность времени нужна по специфичности работы софта(телеметрия железа и датчиков).
    Ответ написан
    3 комментария
  • Найти имена файлов в зависимости от месяца. Как?

    lidacriss
    @lidacriss
    wtf
    find /mnt/zd-backup -regextype posix-extended -regex '0\d\.\d+\.\d+\.7z'
    Ответ написан
  • Могу ли я купить ip адрес и подключить этот ip к своей vds?

    Для этого необходимо, чтобы кем-то вам была выделена сеть и произведена процедура регистрации этой сети на вас в регистраторе. Для Европы, включая Россию, регистратором является RIPE (ripe.net).
    Для IPv6 адресов вы можете запросить собственную сеть у RIPE и зарегистрировать ее как независящую от провайдера (PROVIDER INDIPENDENT или PI).
    Для IPv4 такой возможности не осталось, т.к. пространство адресов у RIPE закончилось. Вы можете либо запросить подсеть у своего хостинг провайдера, такая сеть будет частью его сети (PROVIDER AGGREGATABLE или PA) и вы не сможете с ней уйти к другому провайдеру, или можно перекупить кусок PI сети у кого-то. После этого необходимо, чтобы администратор сети оформил процедуру назначения (ASSIGNMENT) этой сети в RIPE вам.

    В любом случае, если ваша сеть не являются частью сети провайдера, необходимо предварительно договариваться с провайдером о возможности BGP-анонса вашей сети и стоимости такой услуги.

    P.S. кроме случая когда вы получается полную PI сеть (напрямую от регистратора или вам полностью ее передают), все равно будет видно, что ваша сеть является частью сети принадлежащей кому-то другому.
    Вы можете сами зарегистрироваться как провайдер (LIR), но это потребует существенных ежегодных взносов.
    Ответ написан
    2 комментария
  • Чем собирать статистику использования интернета пользователями?

    @rionnagel
    ковырятель
    Zabbix, elk stack + elastiflow, PRTG Network Monitor, netflow analizer и прочее, что умеет жрать netflow. Так вы увидите с какого ip на какой человек лезет. Но вы же понимаете, что с коробки ничего вам не покажет, что человек сидит на youtube, а не гуглит (это можно определить лишь по косвенным признакам и неоднозначно), особенно если адреса принадлежат одной компании. Если заголовок зашифрован - вам надо mitm фигачить, сертификаты всем подменять, возможно покупать весьма дорогое ПО, а в некоторых случаях и железки и пр. Сейчас не 2000 года, когда трафик был преимущественно http и можно было без проблем видеть заголовки через прокси.
    Если бюджетом не располагаете, то лучше эту идею не реализовывать. А то придёте к тому, что везде надо будет ставить kerio control, покупать лицензии, подменять сертификаты и переворачивать сетевую инфраструктуру так, чтобы потратить меньше денег. Это потянет более жосткие проблемы за собой и на поддержание этого придётся нанимать специалиста.
    Ответ написан
    Комментировать