LINUX.ORG.RU
ФорумAdmin

Куда класть сайт?

 , ,


0

1

Здравствуйте. Такой странный вопрос. Есть одна федора с установленным nginx. Федора создала юзера nginx, с домашней директорией /var/lib/nginx. И еще есть некая директория /srv

Наверное у мейнтейнеров была какая-то тактика и я должен ее придерживаться. Объясните мне, куда мне положить свой сайт?

В /var/lib/nginx ? - но там всякий рантайм мусор

В /srv ? - но nginx ей не владеет

Как у вас тут принято?

Видимо есть некоторый путь джедая, чтобы разложить всё правильно внеся минимум правок в систему?



Последнее исправление: kijllfatncdaplp (всего исправлений: 2)
Ответ на: комментарий от Legioner

А там include /etc/nginx/conf.d/*.conf; - типа конфиги сайтов я должен складывать в /etc/nginx/conf.d/ - это ок, это я одобряю.

А в стандартном server блоке такое:

    root         /usr/share/nginx/html;
    # Load configuration files for the default server block.
    include /etc/nginx/default.d/*.conf;

А /var/www и вовсе отсутствует

kijllfatncdaplp
() автор топика
Последнее исправление: kijllfatncdaplp (всего исправлений: 2)

По дефолту - /usr/share/nginx/html/

В принципе положить можно куда угодно, только в случае недефолтной не забыть поменять контекст SELinux, чтобы nginx мог читать директорию и файлы в ней

oxapentane
()
Последнее исправление: oxapentane (всего исправлений: 1)
Ответ на: комментарий от kijllfatncdaplp

Как-то не очень подходит по описанию, нет?

Ну наверн стоит смотреть на default сайт в дистрибутиве. FHS это конечно здорово, но соблюдать его никто не принуждает

oxapentane
()

Я бы советовал создать /var/www/html и класть туда. /usr/share/nginx/html это служебный каталог нгинкса, где лежит просто какой-то дефолтный набор файлов, чтобы убедиться, что сервер работает. /srv тоже нормальный вариант, но про selinux уже писали - не забыть, если он включен.

Legioner ★★★★★
()
Ответ на: комментарий от ashot

/usr/share/nginx/html

Всё верно.

Нет.

@kijllfatncdaplp В /usr лежат файлы которые контролируются пакетным менеджером. Своё туда класть не надо.

Сайт можно положить в /var/www или /var/lib/nginx/www

/var/www появится если поставить httpd-filesystem

alpha ★★★★★
()

Плюсую /var/www

pi11 ★★★★★
()

/var/www не очень удобно, для разработки мне кажется можно просто в $HOME/var/www/site1 в общем случае

anonymous
()
Ответ на: комментарий от kijllfatncdaplp

Ну ты проверь сначала, может он в федоре отключен или настроен так, что всё заработает, я не пробовал сам. Есть будет ошибка, что невозможно открыть файл или что-то в этом роде, нужно проставить нужные файловые контексты (что-то вроде semanage fcontext -a -t httpd_sys_content_t '/srv/www(/.*)?' && restorecon -R /srv/www но это я так, от балды написал, надо разбираться конкретней, какие именно он контексты использует).

Legioner ★★★★★
()
Ответ на: комментарий от anonymous

/var/www не очень удобно, для разработки мне кажется можно просто в $HOME/var/www/site1 в общем случае

  1. Вы не разобрались в технологии разработки. В общем случае в $HOME лежит git репа в режиме bare, а публикация в /var/www производится хуком посткоммит.

  2. $home можно определить в /var/www. (глупо, но в некоторых сдучаях вполне) то есть одно другому не противоречит.

3.Место, где лежит сайт определяется требованиями сайта. Если нужно много места, это будет /mnt/site, если это служебная неизменяемая вещь, типа phpmyadmin, то он лежит в /usr/ и заполняется из пакета.

Если хочется следовать полиси дистра, то /var/lib/nginx (для простоты можно сделать симлинк /var/html) если полиси мира больше нравится, то сразу /var/www и отключить selinux (или поставить контекст)

AVL2 ★★★★★
()

Куда хочешь, главное выставить правильный контекст для selinux и правильные права для http сервера.

u0000
()
Ответ на: комментарий от kijllfatncdaplp

selinux отключается одной командой и будет всё как в других дистрибутивах. Не то, чтобы я рекомендовал это, но раз сложно.

Legioner ★★★★★
()

Куда хочешь клади, на практике nginx-ом и кодом сайта занимаются разные люди, админы настраивают сервер с nginx, создают пользователя для приложения и дают прогерам ssh доступ что бы они в своей $HOME делали все что захотят, рут в nginx такой о котором попросят программисты.

TDrive ★★★★★
()
Ответ на: комментарий от kijllfatncdaplp

Значит всё будет нормально работать. Главное файлы в /var/www копируй (cp), а не перемещай (mv). Ну или делай restorecon после перемещения.

Legioner ★★★★★
()
Последнее исправление: Legioner (всего исправлений: 1)
Ответ на: комментарий от kijllfatncdaplp

SELinux назначает контекст на каждый процесс и на каждый файл. Это разные виды контекстов. И в правилах прописывается что, например, процесс с контекстом httpd_t имеет право читать файлы с контекстом httpd_sys_content_t.

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

Опять же в дистрибутиве есть встроенные наборы правил, которые позволяют пользоваться сервисами без дальнейшей настройки, пока ты следуешь определённым общепринятым стандартам (например хранишь сайт в /var/www/html, а не в /usr/local/mywebsite, запускаешь nginx на 80 порту, а не на 88 и тд).

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

Legioner ★★★★★
()
Последнее исправление: Legioner (всего исправлений: 1)
Ответ на: комментарий от Legioner

Очень познавательные пустые разговоры. Дали понимание общей картины и как вообще это гуглить )

kijllfatncdaplp
() автор топика
Ответ на: комментарий от modest

Я не фапаю, но в федоре он включен по дефолту и если класть куда-нибудь помимо /var/www/html/, то может случиться так, что nginx не получит доступ к файлам.

u0000
()
Ответ на: комментарий от u0000

Не хватает хорошего гуишного редактора всей это SE машинерии.Уж больно низкоуровнево

kijllfatncdaplp
() автор топика
Ответ на: комментарий от Legioner

В целом тут в двух словах не объяснишь

Вот же оно https://people.redhat.com/duffy/selinux/selinux-coloring-book_A4-Stapled.pdf

например хранишь сайт в /var/www/html, а не в /usr/local/mywebsite, запускаешь nginx на 80 порту, а не на 88 и тд)

Самое распространенное после нестандартных портов - сертификаты. На них многие застревают. Их тоже надо правильно класть

alpha ★★★★★
()
Ответ на: комментарий от kijllfatncdaplp

Причем на /etc/letsencrypt не какой-то особенный контекст: unconfined_u:object_r:etc_t:s0

А вот у /etc/nginx особенный: system_u:object_r:httpd_config_t:s0

kijllfatncdaplp
() автор топика
Последнее исправление: kijllfatncdaplp (всего исправлений: 1)
Ответ на: комментарий от TDrive

Куда хочешь клади

Ну хоть кто-то не выжил из ума и остался в строю.

Я не сплю?
Бородатые дедушки и [возможно, но не факт] безбородые бабушки выдвигают гипотезы и обсуждают куда html файлы можно сложить?

Brillenschlange
()
Ответ на: комментарий от Brillenschlange

обсуждают куда html файлы можно сложить?

Дык RedHat же. Куда им разрешат только так они делать и будут.

bhfq ★★★★★
()
Ответ на: комментарий от bhfq

Ещё там нету слова «нету». Ерунда это всё прескриптивистская. Если люди так говорят – значит есть такие слова.

fulmar_lor
()
Ответ на: комментарий от bhfq

В русском языке нету слова ложить

Сам только что написал это слово, а говоришь, что нет такого слова.

Psilocybe ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.