(VPS + 1 user) Структура директорий для сайтов Новый


«Обычно» панели на VPS создают следующую структуру папок:

домашняя директория пользователя = /var/www/user/data/
корневая директория сайта = ~/www/site.ru = /var/www/user/data/www/site.ru
логи сайтов = /var/www/httpd-logs/...
сертификаты = /var/www/httpd-cert/user/...
fcgi-враппер = var/www/php-bin/user/php + php.ini

Интересует, какую структуру папок выдерживают разработчики/админы в случае, когда:
— на VPS работают только свои (или одного заказчика) сайты и все сайты (скрипты) запускаются от одного пользователя?
панели для управления сервером не используются и не будут использоваться

По стандарту FHS для сайтов должна использоваться папка /srv. Но на практике этот «стандарт», как правило, не соблюдают и в большинстве случае размещают сайты в /var/www/.
13 октября 2016, 00:15    Cyrax_02   G+  
2    475 +1

Комментарии (32)

  1. Наумов Алексей 13 октября 2016, 09:55 # +3
    Я не сильно большой специалист в серверах, но есть простая мысль, что если все сайты работают под одним пользователем, то взлом одного сайта автоматически приравнивается к взлому всех сайтов, что не хорошо.
    1. Воеводский Михаил 13 октября 2016, 09:58 # +2
      Не вижу смысла разделять — один или несколько сайтов. Все сервера настраиваю одинаково, каждый сайт на них работает от собственного пользователя. Даже если на сервере работают моих 2-3 сайта, не клиентских, все равно они работают от разных пользователей. Во-первых, это удобнее. Во-вторых — безопаснее.
      1. Cyrax_02 13 октября 2016, 14:18 # 0
        Даже если на сервере работают моих 2-3 сайта, не клиентских, все равно они работают от разных пользователей. Во-первых, это удобнее.
        1. Т.е. в указанном случае (все сайты — ваши) сайты работают от разных пользователей (настройки веб-сервера и php), но при этом физически они расположены в одной директории — так?

        2. И в какой директории у вас расположены сайты?
        3. При этом какими являются домашние директории пользователей/home/user/, /var/www/user/ или иные?
        1. Воеводский Михаил 13 октября 2016, 14:20 # +1
          1,2) Каждый сайт располагается в своей директории: /var/www/user/www
          3) /var/www/user
          1. Cyrax_02 13 октября 2016, 14:49 # 0
            4. А логи сайтов где расположены — в /var/www/user/httpd-logs?
            5. И где лежат php.ini конкретного пользователя?
            1. Воеводский Михаил 13 октября 2016, 14:53 # 0
              4) /var/log/nginx
              5) /etc/php5/fpm/pool.d/

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

              Я серверы настраиваю по этой инструкции.
      2. Василий Наумкин 13 октября 2016, 10:09 # +4
        все сайты (скрипты) запускаются от одного пользователя
        Такого быть вообще не должно.

        Для каждого сайта свой пользователь, вход через SSH/SFTP, сайт, БД в MySQL со своими паролями. Юзеры живут в /home.
        Желательно еще запереть их в jail (chroot) только с определённым набором утилит. Тогда домашняя директория у них /jail/home, а из обычного /home для них символическая ссылка.

        PHP процесс запускается от имени этого пользователя и работать может только в его директории. Там же ему назначена директория для времнных файлов tmp.

        Директория proc монтируется с пользовательскими разрешениями, так что top, htop и подобные утилиты показывают только процессы самого юзера.

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

        Собственно, примерно так всё и настроено на modhost.pro.
        1. Cyrax_02 13 октября 2016, 17:11 # 0
          Юзеры живут в /home.
          Раньше (2013 год) в качестве домашней директории вы использовали /var/www/$USERNAME.
          Сейчас — /home/$USERNAME?

          — Apache по умолчанию тестовую страницу в /var/www/html/index.html, nginx — в свои директории (/usr/share/nginx/html/index.html)
          1. Василий Наумкин 13 октября 2016, 17:14 # 0
            Да, сейчас всё добро юзера живёт в его директории, включая сайт.

            Можешь сделать тестовый сайт на modhost.pro и посмотреть всё изнутри через SSH.
            1. Cyrax_02 13 октября 2016, 17:23 # 0
              Да, сейчас всё добро юзера живёт в его директории, включая сайт.
              А с чем связан такой «переезд»? Сейчас, вроде, «все» хранят сайты в /var/www/ (и её же делают домашней).
              1. Василий Наумкин 13 октября 2016, 17:29 # 0
                С тем, что сайт — собственность пользователя и находится в его файлах.

                Я же всё описал выше. На каждый сайт свой юзер и наоборот.
                1. Cyrax_02 13 октября 2016, 17:37 # 0
                  При использовании в качестве корневой директории для сайта /var/www/user/ — её же делают и домашней директорией пользователя. Т.е. в этом случае сайт тоже будет лежать в домашней директории пользователя.

                  Т.е. я рассматриваю 2 варианта:
                  1. Домашняя директория /var/www/user/, корневая директория для сайтов = /var/www/user/www/
                  2. Домашняя директория /home/user/, корневая директория для сайтов = /home/user/www/

                  Раньше вы придерживались 1-го варианта, сейчас — 2-го. С чем связан «переезд» места размещения домашних директорий пользователей (с их сайтами)?
                  1. Василий Наумкин 13 октября 2016, 18:22 # +1
                    Раньше во 2м случае домашняя директория пользователя была так же в /home, а сайт в /var/www.

                    А еще раньше у меня тоже все сайты были от одного юзера и я даже использовал Apache2.

                    Ну а до этого я работал в Mandriva Linux мышкой. А еще раньше работал в Windows, а про Linux ничего и не знал.

                    В общем, всё течёт — всё меняется.
                    1. Cyrax_02 13 октября 2016, 19:55 # 0
                      Раньше во 2м случае домашняя директория пользователя была так же в /home, а сайт в /var/www.
                      Согласно вашему скрипту, домашняя директория тоже создавалась в /var/www/user/:
                      useradd $USERNAME -m -G sftp -s "/bin/false" -d "/var/www/$USERNAME"
              2. Cyrax_02 13 октября 2016, 19:52 # 0
                Инициировал процедуру создания аккаунта. На почту пришло письмо — жму по ссылке «активировать аккаунт» — попадаю на страницу регистрации. Жму «вход», набираю логин/пароль — получаю сообщение, что нужно активировать учётную запись.
                1. Cyrax_02 14 октября 2016, 00:20 # 0
                  Попробовал в другом браузере. То же самое. при попытке входа — получаю сообщение:
                  Вы еще не активировали свой аккаунт, поэтому мы снова отправили вам ссылку на активацию.
                  В итоге получаю письмо с заголовком «Ссылка для авторизации», которое содержит… информацию о сбросе пароля. Который я не запрашивал.

                  В самый первый раз получил письмо с таким же заголовком, но которое содержало ссылку для активации учётной записи (переход по ссылке привёл на страницу создания нового аккаунта). Из другого браузераещё раз перешёл по ссылке — снова попадаю на страницу создания нового аккаунта…
                  1. Василий Наумкин 14 октября 2016, 07:09 # +1
                    Я даже как-то не удивлён, что уже 2 новых пользователя после тебя спокойно зарегистрировались, а ты не смог активировать email.

                    Активировал тебя вручную, заходи.
                    1. Cyrax_02 14 октября 2016, 13:08 # 0
                      1. Cyrax_02 14 октября 2016, 13:18 # 0
                        А конструктива не будет? Ещё раз: при переходе по ссылке «активировать учётную запись» открывается страница создания нового аккаунта modhost.pro/auth/register. При этом активации учётной записи не происходит. Ссылка такая:
                        modhost.pro/auth/register?action=auth%2Flogin&email=publ.n.a%2540mail.ru&hash=dc4c99f9a09ee447e48c1a8fb5412d05%3A12345678

                        Посмотрел в режиме отладки: на такой запрос получаю от вашего сервера 302 редирект на modhost.pro/auth/register.
                        1. Василий Наумкин 14 октября 2016, 13:25 # 0
                          Активировал тебя вручную, заходи.
                          Тебе еще что-то нужно?
                          1. Cyrax_02 14 октября 2016, 13:48 # 0
                            Вы меня обвиняете, что я не могу пройти по ссылке и активировать учётную запись. Я должен это проглотить?
                            1. Василий Наумкин 14 октября 2016, 14:49 # 0
                              Я тебя обвиняю только в крайней степени занудства.

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

                              Больше не повторится, удачи!
            2. info 13 октября 2016, 11:53 # 0
              Абсолютно не играет роль свои там или нет, если используется один юзер для всех при взломе одного сайта отымеют всех, это абсолютно не приемлимо. vk.com/debia
              1. Cyrax_02 13 октября 2016, 19:50 # +5
                1. Домашняя директория /var/www/user/, корневая директория для сайтов = /var/www/user/www/
                2. Домашняя директория /home/user/, корневая директория для сайтов = /home/user/www/

                Согласно спецификации FHS, директория /home содержит домашние директории пользователей. Директория /var — часто меняющиеся данные (кэш, логи, временные файлы и пр.). В сабже мы имеем дело с файлами сайтов. Файлы сайтов — одновременно принадлежат пользователям (должны размещаться в домашней директории пользователя) и вместе с тем часто меняются.

                Логическим фактором, влияющим на выбор места размещения сайтов, является преобладание более детерминированного определения (назначения) директории /home над /var. Т.е. в данном случае директорию /var нужно связывать не просто с "часто меняющимися данными", а "прочими часто меняющимися данными" (не соотнесёнными однозначно с другими директориями).

                Формальным фактором, влияющим на выбор места размещения сайтов, является грубое нарушение стандарта в случае размещения домашней директории пользователя НЕ в /home.

                Это моё обоснование необходимости размещения сайтов в директории /home/user/www/, а не в /var/www/user/www/. В Интернете не нашёл никаких доводов в пользу того или иного варианта. В итоге удалось сформировать свои собственные доводы. Теперь можно спать спокойно…

                P.S. Поддиректория /var/www/ в спецификацию FHS не входит. При этом в отношении директории /var в спецификации указано:
                Applications must generally not add directories to the top level of /var. Such directories should only be added if they have some system-wide implication, and in consultation with the FHS mailing list.

                Таким образом, Apache, создавая файл /var/www/html/index.html в этой папке, нарушает спецификацию. Nginx — не нарушает (создаёт файл index.html в /usr/share/nginx/html/).
                1. Василий Наумкин 13 октября 2016, 20:14 # -3
                  Зануда вернулся!

                  Ведь с 2015 года ничего не писал, а тут на тебе — такая важная тема про имена директорий сайтов.

                  Теперь можно спать спокойно…
                  Рад, что полегчало.
                  1. Cyrax_02 14 октября 2016, 15:00 # 0
                    А вот на личности переходить не нужно. Выдерживайте нейтральный тон.
                    1. Василий Наумкин 14 октября 2016, 15:16 # 0
                      На всякий случай — ты на моём сайте, у меня в гостях.

                      И я советы по общению не спрашивал.
                      1. Cyrax_02 15 октября 2016, 13:43 # -1
                        а) данная интернет-площадка является не столько местом оказания техподдержки по определённой группе дополнений, сколько местом обсуждения всех вопросов, касающихся modx и не только (включая вопросы, входящие в цикл разворачивания сайтов на modx, нравится это кому бы то ни было или нет). О чём здесь же прямо и указано:

                        Здесь можно задавать различные вопросы про MODX, хостинги, базы данных, программирование и вообще — что угодно.
                        Вы можете задавать вопросы по любым темам, но имейте в виду, что инженеров-радиоэлектронщиков, специалистов по маркетингу и MODX Evolution в нашем сообществе очень мало.

                        б) претендуя на "крупнейшее русскоязычное MODX сообщество", руководство данной площадки де факто берёт на себя обязательства по соблюдению общепринятых норм и правил приличия, предъявляемых к подобным ресурсам. В особенности, не допускаются переход на личности, оскорбление участников площадки и угрозы в их адрес.

                        в) как правило, каждый задаваемый вопрос или тема для обсуждения адресуется не одному или нескольким конкретным участникам, а всем участникам сообщества, компетентным в данном вопросе. При этом никто никого не заставляет принимать участие в открываемых вопросах и темах.

                        г) реплики типа "ты на моём сайте — что хочу, то и делаю" — мягко говоря, не соответствуют тому заявленному руководством уровню, который сформулирован в title-заголовке сайта ("крупнейшее русскоязычное MODX сообщество").
                        1. Василий Наумкин 15 октября 2016, 14:22 # 0
                          Нет никакого руководства, есть один программист, который написал и ведёт этот сайт.

                          Крупнейшее русскоязычное MODX сообщество — это просто факт, счётчик посещаемости внизу. Найди более посещаемое русскоязычное MODX сообщество и я уберу эту надпись.

                          Своё мнение, будь добр, оставь при себе — мне оно не интересно. Если продолжишь в том же духе — отключу.

                          Спасибо за внимание.
                          1. Cyrax_02 17 октября 2016, 12:18 # 0
                            В каком таком «духе»? Я спросил, с чем связан переезд пользователей из /var/www/ в /home/www/. Вы сказали, что связан с желанием разместить пользователей в их домашней директории и что /var/www/user/ ранее не была домашней директорией. Я указал на ваши исходники, где /var/www/user/ создавалась в качестве домашней директории. В ответ вы перешли на личности и начали меня оскорблять. Я ответил, что переходить на личности и оскорблять меня не стоит. Вы стали мне угрожать. Поясните, что вы имеете ввиду под «продолжать в том же духе»?
                            1. Василий Наумкин 17 октября 2016, 12:48 # 0
                              Вот именно то, что ты сейчас делаешь — пытаешься выяснять отношения с администратором этого сайта.

                              То что ты зануда — не оскорбление, это факт. Достаточно почитать твои пространные обстоятельные комментарии, да и сам этот вопрос «в какой директории хранить сайты» с чтением RFC — он тоже занудный. Никто об этом не парится и на что это не влияет.

                              Ты же мне в ответ пытаешься предъявлять какие-то свои требования к моему сайту, навязывать своё видение, как и каким образом он должен работать.

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

                              Кстати говоря, я даже нашел комментарии, где уже обещал с тобой не общаться из-за твоей занудности: раз и два. Но ты целый год выжидал, и подловил меня — молодец!

                              Так что, это реально последнее предупреждение.
                  2. Павел Гвоздь 13 октября 2016, 20:21 # 0
                    Интересно, спасибо!
                  Вы должны авторизоваться, чтобы оставлять комментарии.