Назад | Перейти на главную страницу

Каковы преимущества запуска сервера приложений в пространстве пользователя, такого как Unicorn, по сравнению с sudo?

Я использую Phusion Passenger + Rails / Sinatra для множества проектов. Пассажир работает под управлением основного процесса Nginx или Apache.

Но меня интересует Unicorn отчасти потому, что он работает в пользовательском пространстве. Вы просто настроили Nginx для запросов proxy_pass к сокету unix, который подключен к процессам Unicorn, которые вы запускаете под обычной учетной записью пользователя.

Можно ли что-нибудь сказать о преимуществах и недостатках этих двух альтернативных подходов к запуску веб-приложения? Я имею в виду простоту администрирования, стабильность, простоту и т. Д.

Ну, Phusion / Nginx / Unicorn все работают в пространстве пользователя и ядра, я думаю, вы хотели сказать, что запускаете его как непривилегированный пользователь против привилегированный пользователь / пользователь root. В этом есть ряд преимуществ:

  1. Больше безопасности, если ваше приложение делает что-то глупое, оно не может получить доступ к критическим частям сервера.
  2. Мобильность, приложение разделено на одно пространство.
  3. Если вы используете рельсы, вы, вероятно, используете capistrano для развертывания, это означает, что вы можете запустить процесс единорога непосредственно из процесса развертывания без необходимости sudo

Кроме того, я предлагаю вам использовать опцию сокета Unicorn с Nginx, которая немного упрощает процесс развертывания, и прочитать документ о развертывание без необходимости полного перезапуска сервер приложений

Я говорю здесь root, когда вы говорите sudo - sudo повышает права пользователя до уровня root, но по сути это то же самое.

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

С пользовательским пространством у вас есть возможность лучшего разделения (как минимум для каждого приложения / пользователей стека, чтобы вы могли настроить все в одном месте и легко перемещать его между системами) или даже chroot. В целом, избегать запуска чего-либо от имени root - это хорошо (многие приложения при запуске опускаются до «none», чтобы избежать запуска от root), поскольку, если процесс, запущенный с root-правами, скомпрометирован, вы можете получить привилегии root у злоумышленника.

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

Как сказал coredump, вы имели в виду, что он работает как привилегированный пользователь, а не как обычный пользователь. Но Phusion Passenger определенно не запускается как привилегированный пользователь..

  • Все процессы приложений, порожденные Phusion Passenger, запускаются как обычные пользователи. В частности, как пользователь, владеющий config / environment.rb или config.ru, не как пользователь Apache / Nginx. Это часть функции «Переключение пользователей», которую Phusion Passenger имеет с версии 1.0.
  • С Unicorn вы должны вручную запускать процессы от имени желаемого пользователя. Phusion Passenger автоматически позаботится об этом за вас.
  • Phusion Passenger категорически отказывается запускать какие-либо процессы приложения от имени root. Вы не можете изменить это поведение. Phusion Passenger очень серьезно относится к безопасности, поэтому добавил эту меру безопасности.
  • Apache / Nginx не запускаются от имени привилегированных пользователей. В большинстве систем они настроены для работы под www-data учетная запись.
  • Есть несколько вспомогательных процессов Phusion Passenger, которые запускаются от имени пользователя root, чтобы они могли запускать процессы как другие пользователи, но вы можете отключить это, отключив выключение пользователя, и в этом случае все Процессы Phusion Passenger (включая процессы приложений) запускают указанную вами учетную запись пользователя.

Phusion Passenger проще в администрировании и установке, чем Unicorn, потому что он автоматизирует для вас больше вещей. Phusion Passenger очень стабилен благодаря своей сторожевой архитектуре. Он наблюдает за своими внутренними вспомогательными процессами и перезапускает их, если какой-либо из них выходит из строя. Phusion Passenger используется более 150 000 сайтов включая крупные торговые марки такие как Pixar, New York Times, AirBnB, Oakley и Symantec. Предстоящий Phusion Passenger 4 добавит кучу дополнительных функций, связанных со стабильностью и надежностью.