Ответы пользователя по тегу Linux
  • Как добавить строчку записи в конец файла /etc/hosts в докерфайле?

    Assargin
    @Assargin
    Перед ответом смотрю наличие ✔ в ваших вопросах
    Цель задачи: необходимо, чтобы вместо "127.0.0.1:8080" можно набить в адресной строке http://test, те http://127.0.0.1:8080=http://test

    Чтобы решить эту задачу, вам надо сделать 2 вещи:
    1) руками в hosts-файл на вашей хост-машине добавить строчку 127.0.0.1 test. Так вы решите вопрос с именем хоста (test вместо IP 127.0.0.1)
    2) при старте контейнера с веб-сервером биндить порт веб-сервера из контейнера с 80-м портом вашей хост-машины (с помощью параметра --publish): что-то типа docker run --publish 80:8080 ... - здесь как бы написано: "связать внутренний порт контейнера 8080 с внешним портом хост-машины 80" (в вашем случае вроде как оба порта будут 80, и внутренний, и внешний).
    Если внешний порт, с помощью которого вы хотите смотреть веб-сайт, отличается от дефолтного (80 для HTTP и/или 443 для HTTPS) - никакими прописываниями ни в каких магических файлах не получится избавиться от указания порта при набирании адреса в адресной строке браузера.
    И ещё - если у вас на хост-машине есть что-то, что уже слушает 80-й порт - ну мало ли, может nginx какой запущен или тот же апач - то связать порты не выйдет, нужно сначала остановить тот сервис, что сидит на 80-м порту. Ну или не париться и использовать любой другой порт.

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

    И скажите: откуда вообще изначально взялась такая потребность? Если чисто сделать красивый адрес для использования локально в процессе разработки - ну ок, хотя можно и без этого. Если вы делаете это уже для продакшна - то всё, что вы описали в вопросе - не то, не так и не в ту сторону.
    Ответ написан
    1 комментарий
  • Как настроить UFW на сервере, где использую только OpenVPN?

    Assargin
    @Assargin
    Перед ответом смотрю наличие ✔ в ваших вопросах
    Посмотрите настройку OpenVPN здесь
    У вас, скорее всего, причина в том, что надо разрешать протокол udp:
    sudo ufw allow 1194/udp
    У меня на VPS с OpenVPN такие порты ufw открыты:
    $ sudo ufw status
    Status: active
    
    To                         Action      From
    --                         ------      ----
    OpenSSH                    ALLOW       Anywhere                  
    443/tcp                    ALLOW       Anywhere                  
    443/udp                    ALLOW       Anywhere                  
    XXX22/tcp                  ALLOW       Anywhere                  
    XXX22/udp                  ALLOW       Anywhere                  
    1194/udp                   ALLOW       Anywhere                  
    OpenSSH (v6)               ALLOW       Anywhere (v6)             
    443/tcp (v6)               ALLOW       Anywhere (v6)             
    443/udp (v6)               ALLOW       Anywhere (v6)             
    XXX22/tcp (v6)             ALLOW       Anywhere (v6)             
    XXX22/udp (v6)             ALLOW       Anywhere (v6)             
    1194/udp (v6)              ALLOW       Anywhere (v6)

    Но помимо портов, есть с ufw ещё один момент (с файлом /etc/ufw/before.rules), который описан в статье по ссылке.
    Ответ написан
    2 комментария
  • Чем бекапить все базы Postgres без прерывания доступа к сервису?

    Assargin
    @Assargin
    Перед ответом смотрю наличие ✔ в ваших вопросах
    Стандартная утилита pg_dump
    • есть везде, где есть Postgres
    • не блокирует БД: приложения могут читать/писать данные, но запросы на изменение структуры, скорее всего, будут ждать окончания бэкапа
    • восстанавливает настолько быстро, насколько быстро выполняются обычные SQL-запросы.
    Ответ написан
    Комментировать
  • Как в консоли передать скрипту 2 файла в качестве аргумента?

    Assargin
    @Assargin
    Перед ответом смотрю наличие ✔ в ваших вопросах
    Ну, вы уже передали имена файлов в скрипт как аргументы. Осталось научиться принимать их.
    import sys
    print(sys.argv)

    sys.argv - список переданных аргументов, причём первым идёт имя самого исполняемого скрипта.
    Ответ написан