LINUX.ORG.RU

Сообщения Marmon

 

Проблема со связкой Nginx + Php-fpm

Всем доброго времени суток. Есть задача: необходимо реализовать location, чтобы при обращении my.site.ru/php, происходил проксирование на интерпритатор php, а при обращении my.site.ru/<другой ЯП> проксирование на порт, при обращении к корню должна отдаваться стандартная страница nginx’а. Со вторым пунктом проблем нет. А вот с 1-м и 3-м есть затруднения. Встречал тут темы с проблемами с nginx+php-fpm, но опираясь на них не смог решить проблему. Получалось реализовать так, что при запросе на корень сайта и location /php отдавалось одно и тоже. А вот разделить не получается. Сейчас у меня при запросе на корень отдаётся стандартная страница Nginx’а, при запросе на location /ruby запрос проксируется в приложению ruby по порту, а вот при запросе на location /php получаю ошибку 404 Not Found. Я понимаю, что это говорит о том, что файл не найден, но не могу понять причину. На данный момент конфиг Nginx’а выглядит так:


server {
  listen 80;

  server_name my.site.ru;

  root /usr/share/nginx/html;

  location / {
        index index.html index.php;
  }


   location ~ \.php$ {
    fastcgi_pass   unix:/run/php/php7.2-fpm.sock;
    fastcgi_index  index.php;
    fastcgi_intercept_errors on;
    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    include fastcgi_params;
   }

  location = /ruby {
    proxy_pass http://127.0.0.1:8080;
  }
}

 ,

Marmon
()

Шаблонизация jinja2

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

apps:
  - name: app-1
    logs:
      access: yes
      error: no

  - name: app-2
    logs:
      access: no
      error: yes

Собственно что требуется: запустить playbook, который применит шаблон. В шаблоне в зависимости от значения access и error создаётся тот или иной файл. Как добраться до значений access и error ? Пробовал вот так - item.logs[access] - ничего не происходит. Если задавать вот так - item.logs.access, то сообщение об ошибке, что переменная access не определена.

Вот так выглядит шаблон. Может в нём ошибка?

{% for item in vhosts %}
server {
  listen 80;

  server_name {{ item.name }}.mysite.com;
  {% if item.logs[access] == "yes" %}
     access_log  /var/log/nginx/{{ item.name }}_access.log
  {% endif %}

  {% if item.logs[error] == "yes" %}
     error_log /var/log/nginx/{{ item.name }}_error.log
  {% endif %}
  return 202 "OK";
}
{% endfor %}

 

Marmon
()

Xdebug + Vagrant + Docker + PhpStorm

Всем привет. Прилетела задача по подготовке локальной среды разработки. Список инструментов, собственно, указан в заголовке темы (Xdebug + Vagrant + Docker + PhpStorm). Поднимается ВМ с помощью Vagrant, затем отрабатывает docker-compose и на выходе имеем окружение. Из этого дела не заводится только xdebug. Вернее, не получается заинтегрировать его с PhpStorm. В процессе гугления решения по данной связке не нашёл. Подскажите, пожалуйста, никто не сталкивался с таким? Сейчас проблема с тем, что не определяется php интерпретатор на Vagrant. То есть PhpStorm подключается к vagrant, но не видит там интерпретатор. Как указать, что он (интерпретатор) в контейнере?

 , , ,

Marmon
()

Неопределённое поведение Docker контейнеров

Всем привет. Имеется вот такой docker-compose.yml

version: '2'
  
services:
  php7.0_and_apache2:
    build:
      context: common_environment/Php7.0_and_apache2.4.10
      dockerfile: Dockerfile
    ports:
      - "8080:8080"
    volumes:
      - /var/www/:/var/www
      - ./logs/apache/:/var/log/apache2

  nginx:
    build:
      context: common_environment/Nginx1.12.2/
      dockerfile: Dockerfile
    depends_on:
      - php7.0_and_apache2
    ports:
      - "80:80"
    volumes:
      - ./logs/nginx/:/var/log/nginx
      - /var/www/:/var/www
    links:
      - php7.0_and_apache2
В Nginx'е вот такой конфиг

upstream web {
  server php7.0_and_apache2:8080;

}

server {
    listen 80;

    server_name local.samsonopt.ru;
    access_log  /var/log/nginx/site.ru.access.log log_uuid;
    error_log   /var/log/nginx/site.ru.error.log notice;

    large_client_header_buffers 16 512k;
    client_header_buffer_size 512k;

    set $Rootpath /var/www/project/dev/dev.site.ru;

    location / {
        root $Rootpath;
        index index.php;

        proxy_pass_request_headers          on;
        proxy_set_header Host               $host;
        proxy_set_header X-Real-IP          $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://web;
    }

Периодами бывает такое, что контейнер с Nginx перестаёт видеть контейнер с apache2. Если в конфигах убрать «proxy_pass http://web;» , потом запустить сборку, зайти в контейнер с Nginx и поправить конфиги внутри, то всё работает. После этого после повторной сборки контейнеры линкуются сразу без проблем, но через некоторое время ситуация повторяется. Подскажите, пожалуйста, с чем это может быть связано?

Docker version 18.09.1, build 4c52b90
docker-compose version 1.23.2, build 1110ad01

UPD: Проблема решилась при использовании сети вместо линков. Не мог раньше ответить - не было возможности. Всем спасибо и извините за долгое молчание.

 

Marmon
()

Не работает vagrant ssh

Добрый день! Подскажите, пожалуйста, почему после установки плагина vagrant-vbguest перестаёт работать vagrant shh ? OS хост машины - Fedora 28 OS виртуалки - Debian 8

Мне с хостовой машины надо примонтировать каталог в виртуальную. Без плагина vagrant-vbguest работает vagrant ssh, но не происходит монтирование. С плагином монтирование отрабатывает (судя по логу), а вот vagrant ssh уже не работает, получаю ошибку

ssh_exchange_identification: Connection closed by remote host

В гугле что-то ничего не нашлось.

 

Marmon
()

Ansible пропускает task'и

Всем доброго времени суток! Имеется такой код https://pastebin.com/CTvu5bQk Задача «setup. Копирую общие файлы nginx» всё время пропускается. Ну как всё время. Если после неё добавить новую какую-нибудь задачу, то она будет отрабатывать, но будет игнорироваться новая добавленная. При этом следующие задачи выполняются. Подскажите, пожалуйста, что я делаю не так. Пробовал запускать с -vvv, но ничего странного не увидел.

 

Marmon
()

Molecule ansible

Всем привет. Кто-нибудь использует molecule для тестов? Есть вопрос. Есть роль create_user. Добавляю в неё molecule вот так: molecule init scenario -r create_user в роли появляется каталог molecule со своим содержимым. При выполнении команды molecule test, отображается матица проверок --> Test matrix

└── default

├── lint

├── destroy

├── dependency

├── syntax

├── create

├── prepare

├── converge

├── idempotence

├── side_effect

├── verify

└── destroy

Выполняются первые 2 шага и всё. Выполняются корректно. Остальные даже не начинают выполнение. Собственно вопрос: с чем может быть связано? Может чего-то не хватать? Находил в гугле, что можно изменить шаги тестов через редактирование molecule.yml, пробовал указать там ещё раз все шаги, но ничего не изменилось. Нужно ли что-то менять дополнительно? Если запускать шаги из матрицы отдельно, то всё работает, но хотелось бы всё-таки за раз их прогонять. Вот содержимое molecule.yml, собственно, стандартное: ---

dependency:

name: galaxy

driver:

name: docker

lint:

name: yamllint

platforms:

- name: instance

image: centos:7

provisioner:

name: ansible

lint:

name: ansible-lint

scenario:

name: default

verifier:

name: testinfra

lint:

name: flake8

 

Marmon
()

RSS подписка на новые темы