За последние 24 часа нас посетили 18648 программистов и 1562 робота. Сейчас ищут 1136 программистов ...

2 сервера PHP5-FPM + nginx

Тема в разделе "Установка PHP", создана пользователем MaXyC_Web_Studio, 5 июл 2015.

  1. MaXyC_Web_Studio

    MaXyC_Web_Studio Активный пользователь

    С нами с:
    31 дек 2006
    Сообщения:
    678
    Симпатии:
    3
    Адрес:
    Новоуральск
    Как настроить?

    есть сервер, nginx + php5-fpm
    т.к. нагрузка на один из сайтов стала расти, пришли к выводу, что необходимо нагруженный сайт вынести на отдельный инстанс. Вот встала задача. Теперь есть два сервера. на одном несколько сайтов, на втором один нагруженный. Могли бы тыкнуть носом что и где почитать, чтобы настроить работу этих двух серверов?
    Если бы был апач на бэкэнде, я б настроил и на одной и на другой машине по серверу и указал бы документ рут всем, а nginx просто проксировала бы. Но в моем случае настроено php5-fpm и апача нет, и как то нет мыслей как указать php5-fpm о том, где брать файлы. В настройках виртуал хоста, документрут будет повидимому относиться к локальным файлам? или к удаленным?
     
  2. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    например так
    положить второй инстанс в папку php5/fpm/pool.d
    обозвать его как-нибудь в глобальной конфигурации nginx в качестве апстрима
    использовать его в локальной конфигурации хоста nginx в качестве апстрима
     
  3. MaXyC_Web_Studio

    MaXyC_Web_Studio Активный пользователь

    С нами с:
    31 дек 2006
    Сообщения:
    678
    Симпатии:
    3
    Адрес:
    Новоуральск
    простите, для меня пока мало информации. в той папке что указали, находятся настройки php5-fpm и не вижу ни слова о втором сервере. только от куда разрешать подключения. я это уже прописал.

    параллельно еще вопрос. если по сети mount папки сделаю, скорости не прибавится наверное?
     
  4. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    я папку наобум указал, но смысл понятен должен быть. видимо придется подробнее рассказывать раз смекалки нема...

    идем в /etc/php5/fpm/pool.d - вау я не наобум указал оказывается.
    видим там дефолтный http://www.conf
    копируем его как допустим www2.conf
    меняем в нем название инстанса и путь к сокету / порты сокета
    перезапускаем php5-fpm

    идем в /etc/nginx и если не умеем ранпартсом пользоваться то пишем прямо в nginx.conf следующую лабуду:
    Код (Text):
    1. upstream www2 {
    2. server unix:/run/www2-php5-fpm.sock;
    3. }
    не сложно догадаться что путь должен быть тем который мы указали в конфе www2.conf

    открываем конфигурацию нужного хоста и заменяем в нем дефолтный апстрим на www2. ведь уже есть работающая связка nginx+fpm и в нужном месте нужно вставить нужное значение:
    Код (Text):
    1. fastcgi_pass www2;
    проверяем конфигурацию nginx -t
    перезапускаем если всё хорошо service nginx restart

    всё просто, да?

    смотря что с папки будет браться.
     
  5. MaXyC_Web_Studio

    MaXyC_Web_Studio Активный пользователь

    С нами с:
    31 дек 2006
    Сообщения:
    678
    Симпатии:
    3
    Адрес:
    Новоуральск
    И что это даст? я просто поменял шило на мыло. мне нужно обращение к другому серверу. здесь же мы создали просто копию текущей настройки и не более
     
  6. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    nginx может принимать огромную кучу запросов и раздавать их огромной куче бэкэндов. мы создали два инстанса фпм и можем их по-разному настроить и таким образом каждый из них будет обрабатывать разное кол-во запросов. этот момент очевиден? еще можно проксировать на другой физический сервер. именно про инстанс было в первом посте. если надо было про проксирование к другому физическому серверу - надо было спрашивать про другой физический сервер. тогда настройка ничем не отличается от скажем настройки апача в качестве бэкэнда или для кги указать адрес-порт другой машини и фпм там повесить на ип.
     
  7. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    MaXyC_Web_Studio делай балансировку запросов на DNS
     
  8. MaXyC_Web_Studio

    MaXyC_Web_Studio Активный пользователь

    С нами с:
    31 дек 2006
    Сообщения:
    678
    Симпатии:
    3
    Адрес:
    Новоуральск
    да
    ну и как бы писал что есть 2 сервера... есть 2 машины. извиняюсь, если ввел в заблуждение.

    тоже так думал. на второй машине стоит
    apache2
    и
    php5-fpm
    ОБА ДЛЯ ТЕСТА! апач на 80, фпм на 9000 порту.

    на первой машине (основной) в конфиге фиртуалхоста указываю
    fastcgi_pass 192.168.11.100;
    либо
    fastcgi_pass 192.168.11.100:9000;

    и каждый раз мне приходит локальный файл. как будто он и не стучится ко второму серверу.
    server
    {
    server_name test.site.ru;

    access_log on;
    log_not_found on;

    include nginx-bp/bootstrap/server2_bitrix.conf;

    root /var/www/sites/;

    }

    Добавлено спустя 48 секунд:
    не получится. знаний маловато
     
  9. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    давай ты человеческим языком сформулируешь что у тебя есть и что ты хочешь из этого сделать. понятно что у тебя две машины. ты хочешь одной машиной принимать все запросы но запросы к одному из доменов уводить на обработку второй машиной? или тебе надо чтоб запросы к домену сразу уходили на вторую машину минуя первую?
     
  10. MaXyC_Web_Studio

    MaXyC_Web_Studio Активный пользователь

    С нами с:
    31 дек 2006
    Сообщения:
    678
    Симпатии:
    3
    Адрес:
    Новоуральск
    Добавлено спустя 43 секунды:
    минуту. ща опишу еще раз

    Добавлено спустя 3 минуты 2 секунды:
    Была одна машина. крутится на ней 10 сайтиков. Крутится все на nginx+php5-fpm
    Один из сайтиков стал очень много кушать, поэтому мы решили перенести его на вторую машину. У второй машины нет внешнего IP, она во внутренней сети, поэтому необходимо сделать "переадресацию" запросов/обработки/рендер страниц жирного сайта на вторую машину. Чтоб если стучатся по домену site.ru, то физически работала вторая машина, со своим жестким диском, php5-fpm, mysql, memcache и п.р. Если стучатся по другим сайтам, то физически ПРОДОЛЖАЕТ отрабатывать первая машина, как сейчас.

    Добавлено спустя 48 минут 20 секунд:
    вобщем оказалось все проще... сделал тупо через proxy_pass
     
  11. MiksIr

    MiksIr Активный пользователь

    С нами с:
    29 ноя 2006
    Сообщения:
    2.339
    Симпатии:
    44
    А внешний IP можете еще получить? Если да, то просто настраиваете NAT этого IP с внешней машины на внутреннюю.
    Если дополнительного IP нет - то nginx как прокси делаем
    Код (Text):
    1. server {
    2.     server_name www.ru;
    3.     location / {
    4.         proxy_pass http://внутренний:80;
    5.         proxy_set_header X-Real-IP  $remote_addr;
    6.         proxy_set_header Host $host;
    7.     }
    8. }
    А на втором сервере обычный nginx+php-fpm. Разве что для второго варианта на втором сервере добавить в конфиг nginx http://nginx.org/ru/docs/http/ngx_http_realip_module.html