Перейти к содержимому


× Быстрый вопрос
Пользователь месяца
Андрей WPM Андрей WPM 1-й за Июль
Очков активности: 2 142 4 темы, 90 сообщений, 14 баллов репутации
Сайт: wpmaster.kz
ТОП самых активных за этот месяц
  • Фотография Rodiola
    #1

    Rodiola (rukodelkovo.ru)
    Очков активности: 802.5 3 темы, 98 сообщений, 5 баллов репутации

  • Фотография maxnik
    #2

    maxnik (konovalovpavel.ru)
    Очков активности: 378 0 тем, 42 сообщения, 6 баллов репутации

  • Фотография Андрей WPM
    #3

    Андрей WPM (wpmaster.kz)
    Очков активности: 150 Вне конкурса за определение пользователя месяца

  • Фотография IxMaster
    #4

    IxMaster (site.ru)
    Очков активности: 139.5 3 темы, 22 сообщения, 3 балла репутации

  • Фотография lena220678
    #5

    lena220678
    Очков активности: 108 4 темы, 24 сообщения, 2 балла репутации

  • Фотография Megoydagi
    #6

    Megoydagi (24ho.ru)
    Очков активности: 93 5 тем, 16 сообщений, 2 балла репутации

  • Фотография annabum
    #7

    annabum
    Очков активности: 75 2 темы, 19 сообщений, 2 балла репутации

  • Фотография Vmir
    #8

    Vmir
    Очков активности: 57 Вне конкурса за определение пользователя месяца

  • Фотография FIvYUr
    #9

    FIvYUr (moy-evroopt.ru)
    Очков активности: 36 0 тем, 8 сообщений, 3 балла репутации

  • Фотография Constantine
    #10

    Constantine (constantine.video.blog)
    Очков активности: 31.5 3 темы, 12 сообщений, 1 балл репутации

  • Показать весь ТОП 10
Поддержите форум! =)
Апдейты
  • Яндекс ИКС: 30.07.2019
  • Яндекс выдача: 23.08.2019
Топ 5 участников по репутации


ЛП: Настройка виртуальных хостов в nginx

#1 fedornabilkin

fedornabilkin
  • Модератор
  • 1 176 сообщений
  • Репутация: 201
2

Отправлено 29 Январь 2018 - 11:19

Для начала в файле .hosts пропишем доменное имя и привяжем его к локальному айпи. Обычно этот файл располагается по следующему пути: C:\Windows\System32\drivers\etc\hosts

Некоторые антивирусные программы могут ругаться на то, что вы пытаетесь изменить этот файл, поэтому необходимо разрешить внести изменения в файл. После этого по адресу site.dev наш браузер будет искать сайт на локальном хосте, а т.к. мы настроили виртуальную машину и пробросили порты, то запрос отправиться на ubuntu-server и поищет там.

127.0.0.1 site.dev

Но на сервере nginx мы не сконфигурировали виртуальный хост с именем site.dev, поэтому результата не получим. Перед конфигурированием создадим директорию, в которой будут лежать файлы сайта. Директорию создаем по рутом, поэтому предварительно пишем команду sudo, которая попросит пароль.

sudo mkdir /var/www/site.dev

Проверим наличие новой директории.

ll /var/www/

В итоге получается следующее. Обратите внимание какие установлены права и кто владелец директории.

mkdir.jpg

 

Т.к. веб-сервер (nginx) будет работать с этой директорией (отображать, загружать, создавать различные файлы), то необходимо выставить права на эту директорию. В целях безопасности мы не можем разрешить доступ кому угодно, поэтому сделаем владельцем этой директории наш веб-сервер (www-data) и посмотрим, что получилось.

sudo chown -R www-data:www-data /var/www/site.dev

chown.jpg

 

Половина пути пройдена, мы подготовили все для виртуального хоста и наконец-то создадим конфиг. Конфиги виртуальных хостов лежат в /etc/nginx/sites-available/, хотя в главном конфиге nginx указано, что читать конфиги в/хостов необходимо из /etc/nginx/sites-enabled/

Для этого мы создадим символьную (или символическую) ссылку на наш будущий файл конфигурации, а если надо будет отключить в/хост, то достаточно будет удалить симлинк, оставив при этом файл конфигурации целым и невредимым.

 

Создаем файл конфигурации. Когда откроется редактор vim, переходим в режим редактирования (клавиша insert), вставляем скопированный код конфигурации (shift+insert), выходим из режима редактирования (esc), пишем изменения в файл и выходим (:wq)

sudo vim /etc/nginx/sites-available/site.dev

Спойлер

 

Кто хитрый, тот заметил вставочку include /etc/nginx/_location_php;

В этом файле будет находиться конфигурация взаимодействия nginx с php. Попробуйте самостоятельно создать этот файл и добавить в него код из спойлера ниже.

Спойлер

 

Далее проверяем правильность наших конфигов sudo nginx -t и, если все нормально, то делаем reload (перечитываем конфиги) sudo service nginx reload

В случае ошибки в конфиге, будет отображен файл с ошибкой и номер строки.

 

Теперь в корне сайт создаем файл index.pnp с помощью редактора vim (также, как создавали файлы конфигурации) и добавляем элементарное содержимое.

<?php echo 'ok';?>

Когда запросим в браузере адрес site.dev, то получим страницу с текстом "ok" или ошибку 502. В любом случае мы на правильном пути. Кстати, с недавнего времени браузер хром не хочет работать с доменными зонами .dev, поэтому я пользую ФФ или Ябраузером. Кому очень сильно надо использовать хром, можно везде изменить site.dev на site.local

 

502 ошибку чуть позже исправим. Если кто-то исправит самостоятельно, просьба написать коммент, где и как в php.ini указать нужные строки взаимодействия nginx с php.


 

 

  • 0

Надо обсудить предложение. А тут знакосчиталка считает знаки. Про Yii2 написано.



#2 Ixman

Ixman
  • Пользователь PRO
  • 3 159 сообщений
  • Репутация: 838

Отправлено 29 Январь 2018 - 18:30

Чёт два раза проделал и не выдало ни надписи, ни ошибки. Просто пустая страница


  • 0


#3 fedornabilkin

fedornabilkin
    Topic Starter
  • Модератор
  • 1 176 сообщений
  • Репутация: 201

Отправлено 29 Январь 2018 - 21:32

@Ixman, правильно, я же забыл про симлинку. Упомянул, но не показал как это сделать.

Надо сделать так, чтобы по /etc/nginx/sites-enabled/site.dev открывался /etc/nginx/sites-available/site.dev

ln -s /etc/nginx/sites-available/site.dev /etc/nginx/sites-enabled/site.dev

Далее можем убедиться, что наша символьная ссылка указывает туда, куда мы и просили.

ll /etc/nginx/sites-enabled/

После всех подобных манипуляций делаем релоад, чтобы nginx перечитал конфиги. sudo service nginx reload

 

Если вдруг нам надо отключить сайт на время (ддос атака и лежит весь сервер с другими сайтами), то просто надо грохнуть симлинку как обычный файл

rm /etc/nginx/sites-enabled/site.dev

Сообщение отредактировал fedornabilkin: 29 Январь 2018 - 21:35

  • 0

Надо обсудить предложение. А тут знакосчиталка считает знаки. Про Yii2 написано.



#4 Ixman

Ixman
  • Пользователь PRO
  • 3 159 сообщений
  • Репутация: 838

Отправлено 29 Январь 2018 - 21:35

@fedornabilkin, ок попробую завтра уже. С консолью мало работал, мало понимаю что и как. 


  • 0


#5 fedornabilkin

fedornabilkin
    Topic Starter
  • Модератор
  • 1 176 сообщений
  • Репутация: 201

Отправлено 29 Январь 2018 - 21:54

Если возникает 502 ошибка, то лезем в файл /etc/php/7.0/fpm/pool.d/www.conf (открываем сразу с возможностью редактирования). Там много всего, но нам надо найти следующие параметры и присвоить им значения

user = www-data
group = www-data
listen = 127.0.0.1:9000

Ничего не удаляем, лучше закомментировать, поставив в начале строки точку с запятой ( ; ).
В listen скорее всего будет что-то про сокеты, поэтому коментируем и пишем свою строку из примера выше.
 
После редактирования сервис php-fpm надо перегрузить (наверно тоже, чтоб перечитал конфиги)

/etc/init.d/php7.0-fpm reload

@Ixman, старайся все команды писать вручную, а не копировать. Быстрее привыкнешь и запомнишь где что располагается на сервере. Не зря говорят, что в консоли работать быстрее.


Сообщение отредактировал fedornabilkin: 29 Январь 2018 - 21:57

  • 0

Надо обсудить предложение. А тут знакосчиталка считает знаки. Про Yii2 написано.



#6 Ixman

Ixman
  • Пользователь PRO
  • 3 159 сообщений
  • Репутация: 838

Отправлено 03 Февраль 2018 - 11:27

@fedornabilkin, перепроверил все шаги и всё равно ничего не выходит. Страница пуста. Или я где-то шаг какой-то пропустил или фиг его знает


  • 0


#7 Ixman

Ixman
  • Пользователь PRO
  • 3 159 сообщений
  • Репутация: 838

Отправлено 03 Февраль 2018 - 12:46

Кстати в заголовках сервер apache


  • 0


#8 fedornabilkin

fedornabilkin
    Topic Starter
  • Модератор
  • 1 176 сообщений
  • Репутация: 201

Отправлено 04 Февраль 2018 - 14:12

@Ixman, значит надо проверить все поэтапно:

  1. Запись в файле hosts

  2. Конфигурационный файл в /etc/nginx/sites-available/site.dev (куда указывает root)

  3. Наличие символической ссылки /etc/nginx/sites-enabled/site.dev на файл /etc/nginx/sites-available/site.dev

  4. Отсутствие ошибок в конфигурационных файлах nginx -t

  5. В файле /etc/nginx/_location_php должна быть такая строчка fastcgi_pass   127.0.0.1:9000;

  6. В файле /etc/php/7.0/fpm/pool.d/www.conf строка listen = 127.0.0.1:9000 (сокеты надо закомментировать)

  7. Перезапустить nginx (sudo service nginx reload) и php (sudo /etc/init.d/php7.0-fpm reload)

  8. Проверить состояние sudo systemctl status nginx и sudo systemctl status php7.0-fpm (должно быть зелененько и без error) Выход ctrl+c

  9. Проверить наличие файла в директории сайта и его содержание.

Если все нормально, но файл в корне сайта не отрабатывает, тогда надо смотреть логи nginx и php.

  1. Список файлов с логами ll /var/log/nginx/

  2. Посмотреть содержимое файла можно так cat /var/log/nginx/site.dev.error.log

  3. Логи php смотрим тут sudo cat /var/log/php7.0-fpm.log

Если в логах ошибки и не разберешься, то скидывай сюда, будем разбираться.


  • 0

Надо обсудить предложение. А тут знакосчиталка считает знаки. Про Yii2 написано.



#9 Ixman

Ixman
  • Пользователь PRO
  • 3 159 сообщений
  • Репутация: 838

Отправлено 04 Февраль 2018 - 20:48

@fedornabilkin, всё по пунктам везде всё отлично. Содержимое лога nginx 

2018/01/29 10:15:34 [notice] 8051#8051: signal process started
2018/01/29 10:33:09 [notice] 8080#8080: signal process started
2018/01/29 10:33:27 [notice] 8094#8094: signal process started
2018/02/03 02:58:27 [notice] 1449#1449: signal process started
2018/02/03 03:00:12 [notice] 1468#1468: signal process started
2018/02/03 03:22:09 [notice] 1519#1519: signal process started
2018/02/03 03:25:14 [notice] 1535#1535: signal process started
2018/02/03 04:41:38 [notice] 1405#1405: signal process started
2018/02/04 12:36:35 [notice] 1593#1593: signal process started
 

лог php скопировал за сегодня, а то там много и оно всё повторяется

[04-Feb-2018 12:01:58] NOTICE: fpm is running, pid 1097
[04-Feb-2018 12:01:58] NOTICE: ready to handle connections
[04-Feb-2018 12:01:58] NOTICE: systemd monitor interval set to 10000ms
[04-Feb-2018 12:36:45] NOTICE: configuration file /etc/php/7.0/fpm/php-fpm.conf test is successful
[04-Feb-2018 12:36:45] NOTICE: Reloading in progress ...
[04-Feb-2018 12:36:45] NOTICE: reloading: execvp("/usr/sbin/php-fpm7.0", {"/usr/sbin/php-fpm7.0", "--nodaemonize", "--fpm-config", "/etc/php/7.0/fpm/php-fpm.conf"})
[04-Feb-2018 12:36:45] NOTICE: using inherited socket fd=8, "127.0.0.1:9000"
[04-Feb-2018 12:36:45] NOTICE: using inherited socket fd=8, "127.0.0.1:9000"
[04-Feb-2018 12:36:45] NOTICE: fpm is running, pid 1097
[04-Feb-2018 12:36:45] NOTICE: ready to handle connections
[04-Feb-2018 12:36:45] NOTICE: systemd monitor interval set to 10000ms 

Кстати по этому пункту

 

Перезапустить nginx (sudo service nginx reload) и php (sudo /etc/init.d/php7.0-fpm reload)
 

 

если на команду для php выдало

[ ok ] Reloading php7.0-fpm configuration (via systemctl): php7.0-fpm.service.

то на команду для перезапуска nginx никаких ответов нет


  • 0


#10 fedornabilkin

fedornabilkin
    Topic Starter
  • Модератор
  • 1 176 сообщений
  • Репутация: 201

Отправлено 05 Февраль 2018 - 10:38

@Ixman, странно. У меня логи такие же. Скинь содержание файла index.php и какие заголовки сервер возвращает. 


  • 0

Надо обсудить предложение. А тут знакосчиталка считает знаки. Про Yii2 написано.



#11 fedornabilkin

fedornabilkin
    Topic Starter
  • Модератор
  • 1 176 сообщений
  • Репутация: 201

Отправлено 05 Февраль 2018 - 12:52

По поводу reload сервисов, видимо nginx не рапортует об успешном reload, а php-fpm отчитывается.

Если запущен апач, то вполне вероятно, он может конфликтовать. Может быть его остановить? В любом случае скинь заголовки ответа сервера.


  • 0

Надо обсудить предложение. А тут знакосчиталка считает знаки. Про Yii2 написано.



#12 Ixman

Ixman
  • Пользователь PRO
  • 3 159 сообщений
  • Репутация: 838

Отправлено 06 Февраль 2018 - 18:30

@fedornabilkin, проблема может быть в том, что у меня установлен локальный WEB сервер Open Server? Дело в том, что заголовок от apache всего скорее выдавал он. Я остановил его и у меня вообще перестал открываться тестовый сайт. 

 

Так как на Ubuntu нет apache. А опять прошёл всё по пунктам и всё норм, и конфиги все всё правильно содержат и ссылки есть, и директория сайта с файлом index.php В общем по инструкции всё ОК! Но не работает сайт <_< хоть головой абстенубейся. Материться хочется.


Сообщение отредактировал Ixman: 06 Февраль 2018 - 19:51

  • 1


#13 fedornabilkin

fedornabilkin
    Topic Starter
  • Модератор
  • 1 176 сообщений
  • Репутация: 201

Отправлено 06 Февраль 2018 - 21:03

@Ixman, значит не настроена или настроена неправильно сеть в VB. Может забыл пробросить 80 порт? При правильной настройке сети VB, конфига виртуального хоста и записи в файле hosts, должна открыться дефолтная страница nginx.

 

Получается, что браузер не может достучаться до nginx.


  • 0

Надо обсудить предложение. А тут знакосчиталка считает знаки. Про Yii2 написано.



#14 Ixman

Ixman
  • Пользователь PRO
  • 3 159 сообщений
  • Репутация: 838

Отправлено 06 Февраль 2018 - 21:49

@fedornabilkin, в общем пробросил порты по второй инструкции и открылась дефолтная страница nginx, но не страница сайта. Радует, что сдвинулся с места


  • 0


#15 fedornabilkin

fedornabilkin
    Topic Starter
  • Модератор
  • 1 176 сообщений
  • Репутация: 201

Отправлено 06 Февраль 2018 - 21:53

@Ixman, теперь, если браузер добирается до nginx, надо связать nginx и fpm. Я думаю тебе сейчас логи подскажут.

Если создашь в корне сайта html-файл и обратишься к нему site.dev/file.html, то должен отобразиться, потому что php не нужен. 


  • 0

Надо обсудить предложение. А тут знакосчиталка считает знаки. Про Yii2 написано.



#16 Ixman

Ixman
  • Пользователь PRO
  • 3 159 сообщений
  • Репутация: 838

Отправлено 06 Февраль 2018 - 22:00

@fedornabilkin, тут верно всё?

 

90760263c7.jpg

Адрес хоста не нужен?

Кстати file.html выдаёт 404


  • 0


#17 fedornabilkin

fedornabilkin
    Topic Starter
  • Модератор
  • 1 176 сообщений
  • Репутация: 201

Отправлено 06 Февраль 2018 - 22:34

@Ixman, все верно, если у твоей виртуалки апишник 10.0.2.15

Выполни в консоли ifconfig и найди inet addr: там будет айпи, который надо прописать. 

Адрес хоста нужен в том случае, если ты использовал тип подключения NAT. Тогда указывай там 127.0.0.1, если тип подключения сеть NAT, то адрес хоста можно не заполнять. Хотя, если nginx схватывает, то айпишник такой и второй прописывать не надо.

 

Значит смотри логи, если ошибку не найдешь, выкладывай логи сюда, разберемся. Только уже завтра.


  • 0

Надо обсудить предложение. А тут знакосчиталка считает знаки. Про Yii2 написано.



#18 Ixman

Ixman
  • Пользователь PRO
  • 3 159 сообщений
  • Репутация: 838

Отправлено 06 Февраль 2018 - 22:36

Начал связку nginx и fmp и пока опять проблема, нет файла 

 

php7.0-fpm.sock

 

но по пути, где он должен лежать есть файл

 

/var/run/php/php7.0-fpm.pid

 

не оно случаем?

 

и через поиск его не смог найти.

 

Заодно инструкцию пишу, ибо то, что нашёл оно под php5 и там расположение файлов совсем другое.


Сообщение отредактировал Ixman: 06 Февраль 2018 - 22:41

  • 0


#19 fedornabilkin

fedornabilkin
    Topic Starter
  • Модератор
  • 1 176 сообщений
  • Репутация: 201

Отправлено 06 Февраль 2018 - 22:58

@Ixman, а вот и причина. Мы же подключаемся не по сокетам, а через порты.  В топикстартерном посте я писал про файл /etc/nginx/_location_php Именно в нем мы указываем fastcgi_pass 127.0.0.1:9000; т.е. связь nginx с fpm через 9000 порт, а не через сокет.

 

Потом чуть далее я писал, что надо в /etc/php/7.0/fpm/pool.d/www.conf прописать listen = 127.0.0.1:9000 и релоад fpm. Посмотри первые сообщения этой темы. Похоже ты упустил момент смены сокетов на порты. Коллега на работе сказал, что в этом проблема 90%


  • 0

Надо обсудить предложение. А тут знакосчиталка считает знаки. Про Yii2 написано.



#20 Ixman

Ixman
  • Пользователь PRO
  • 3 159 сообщений
  • Репутация: 838

Отправлено 07 Февраль 2018 - 09:06

@fedornabilkin, перепроверил указанное в предыдущем посте и всё ОК, всё сделано. Вчера просто заострил на этом внимание и полез искать реализацию

 

надо связать nginx и fpm
 

 

нашёл статейку, но там на сокетах. По сути я только по находил файлы, которые нужно редактировать.


  • 0


robot

robot
  • Пользователь PRO
  • 2 652 сообщений
  • Репутация: 85


Похожие темы

  Название темы Автор Статистика Последнее сообщение

Оформление форума – IPBSkins.ru