(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/.
Cyrax_02
12 октября 2016, 21:15
modx.pro
3
3 939
+1

Комментарии: 32

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

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

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

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

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

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

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

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

      Собственно, примерно так всё и настроено на modhost.pro.
        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)
          Василий Наумкин
          13 октября 2016, 17:14
          0
          Да, сейчас всё добро юзера живёт в его директории, включая сайт.

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

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

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

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

                  В общем, всё течёт — всё меняется.
                    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"
              Cyrax_02
              13 октября 2016, 19:52
              0
              Инициировал процедуру создания аккаунта. На почту пришло письмо — жму по ссылке «активировать аккаунт» — попадаю на страницу регистрации. Жму «вход», набираю логин/пароль — получаю сообщение, что нужно активировать учётную запись.
                Cyrax_02
                14 октября 2016, 00:20
                0
                Попробовал в другом браузере. То же самое. при попытке входа — получаю сообщение:
                Вы еще не активировали свой аккаунт, поэтому мы снова отправили вам ссылку на активацию.
                В итоге получаю письмо с заголовком «Ссылка для авторизации», которое содержит… информацию о сбросе пароля. Который я не запрашивал.

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

                  Активировал тебя вручную, заходи.
                    Cyrax_02
                    14 октября 2016, 13:08
                    0
                      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.
                        Василий Наумкин
                        14 октября 2016, 13:25
                        0
                        Активировал тебя вручную, заходи.
                        Тебе еще что-то нужно?
                          Cyrax_02
                          14 октября 2016, 13:48
                          0
                          Вы меня обвиняете, что я не могу пройти по ссылке и активировать учётную запись. Я должен это проглотить?
                            Василий Наумкин
                            14 октября 2016, 14:49
                            0
                            Я тебя обвиняю только в крайней степени занудства.

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

                            Больше не повторится, удачи!
            info
            info
            13 октября 2016, 11:53
            0
            Абсолютно не играет роль свои там или нет, если используется один юзер для всех при взломе одного сайта отымеют всех, это абсолютно не приемлимо. vk.com/debia
              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/).
                Василий Наумкин
                13 октября 2016, 20:14
                -3
                Зануда вернулся!

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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