Каковы основы работы веб-сервера?

26

Это предложенный канонический вопрос о начале администрирования веб-сервера.

Предполагая, что вы начинающий SysAd, новичок в WebOps или небольшая команда с небольшой или совсем неопытной поддержкой SysAd веб-сервера (и не можете себе это позволить прямо сейчас), что вы должны сделать, чтобы настроить и защитить веб-сервер для своего бизнеса?

gWaldo
источник
Вы дважды упоминаете о преимуществах наличия сисада, что означает, что вы обращаетесь к людям, которые не являются сисадами. Конечно, тогда это выводит ваши вопросы и ответы из строя за отказ сервера, который предназначен для sysads и др.? Возможно, Super User - лучший дом для этого?
user9517 поддерживает GoFundMonica
8
Мое чтение часто задаваемых вопросов интерпретируется как «технические специалисты, задающие вопросы системного администрирования». Я видел такой вопрос, который много раз задавали технические (но не SysAd) люди (в основном разработчики), и они часто реагировали на них жестко, а не помогали. Этот вопрос ставится кандидатом на то, чтобы стать каноническим ответом «С чего начать» и почему они должны нанять реальную помощь SysAd как можно скорее. (И, надеюсь, никогда больше не придется отвечать на этот конкретный вопрос.
gWaldo

Ответы:

32

Прежде чем мы начнем:

Наличие качественных людей сэкономит вам деньги. Точно так же, как наличие хорошего юриста (возможно, NSFW для присяги) или бухгалтера, наличие качественного SysAd, вероятно, сэкономит вам деньги, часто просто помогая вам избежать дорогостоящих ошибок. Возможно, у вас сейчас нет денег, чтобы оплатить экспертизу, но как только вы сможете, вы должны сделать эти инвестиции.

Нет простого, единственного ответа на этот вопрос. Если вы один, чтобы задать этот вопрос, вы должны понимать, что этот вопрос является ядром области, в которую профессионалы вкладывают годы обучения и практики. Аналогичным вопросом для разработчика будет «как мне написать веб-приложение?»; Конечно, мы могли бы указать вам, как установить Ruby-on-Rails и RoR "Hello World". Хотя это «ответит на вопрос», на самом деле это вам не поможет. Этот Q / A является попыткой реально помочь вам.

Ты должен знать:

Администрирование веб-сервера - это большая тема, которая тесно связана с различными дисциплинами. Чтобы сделать это хорошо, вам понадобится фундаментальное понимание TCP / IP, вашей хост-ОС, вашего WebServer-приложения и некоторое понимание работы стека приложений.

Будьте готовы к чтению. Много .

Определите ваши потребности:

Требования

  • Вы работаете на простом, статичном веб-сайте (возможно, с некоторыми эффектами Javascript), или
  • (более вероятно) вы используете приложение, которое имеет веб-интерфейс?
  • У вас есть постоянные данные? (Вам нужна база данных?)
  • Там участвуют учетные данные пользователя? Есть ли еще одна причина, по которой вам необходимо обеспечить связь между пользователем и веб-сайтом? (SSL)
  • Вы обрабатываете платежи любого рода? Помимо наличия требований SSL, вам необходимо изучить дополнительные факторы (в зависимости от региона). Они также будут различаться в зависимости от используемого вами обработчика платежей.

Определите свой стек:

Как вы собираетесь написать и запустить это?

  • Платформа (Windows, Linux, другие Unix и т. Д.)
  • Требования к приложениям (Ruby / Rails, Python, Perl, PHP, .NET и т. Д. И т. Д.)
  • База данных (...)
  • Кэширование? (Честно говоря, не беспокойтесь об этом сейчас; имейте в виду, что это решает некоторые проблемы и может создавать другие. Это проблема производительности, и сейчас вы просто пытаетесь начать.)

Некоторые из этих вариантов сообщат другим. Например, если вы используете приложение .NET, вы, вероятно, хотите использовать MSSQL и IIS; Если вы используете Ruby on Rails, вам, вероятно, нужен сервер Linux; так далее...

Познакомьтесь с вашим продуктом:

Теперь, когда вы определились с тем, как будет выглядеть ваш стек, вам нужно узнать его. Это где вы должны проводить большую часть своего времени. Поиск «Configure [product]» или «[product] Admin Guide» даст вам много ресурсов.

Например, если вы используете Apache в Ubuntu, вы должны прочитать:

Ищите похожие документы, статьи, сообщения в блоге для своего стека.

Установите минимум:

Существует множество модулей для Apache, но если вы не собираетесь использовать PHP (например), не устанавливайте mod-php.

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

Защита сайта:

  • Обеспечить минимальные разрешения на работу. Это относится не только к файловой системе, но также к сервисам и процессам.
  • Держите порты сервера отключенными для ненужных сервисов. (Опять же, установите только минимум.)
  • Ограничьте интерфейсы приложений внутренней средой (если, например, веб-приложение запущено на том же сервере (например, Rails), ограничьте его прослушиванием только localhost)

В заключение:

Это только начало того, что вы должны сделать, чтобы сайт заработал и работал. Это даже не начинает касаться проблем обслуживания серверов или того, как решать проблемы масштабирования (если ваш проект станет успешным), или каких-либо других бесчисленных проблем, которые опытный SysAd решит для вас.

gWaldo
источник
Выполнение минимума является критически важным, но может быть неочевидно, что / как удалить / отключить / защитить. Будет ли приемлемо предлагать публично запускать «обнаженную», полностью защищенную брандмауэром машину, которая только перенаправляет / передает определенные запросы на свой сервер приложений, работающий в частной сети? Можно даже предложить дистрибутив / config для этого, так как это не должно быть той же самой средой, которую использует их приложение.
Карлос Лима
1
Это хорошее начало. Одна вещь, которую вы не охватили, это способность повторяться. В какой-то момент вы выйдете за рамки текущей настройки. Ваши инструкции по настройке среды повторяемы? А еще лучше, они автоматизированы? Сохраняете ли вы все исходные пакеты, чтобы можно было заново создать среду, или вы полагаетесь на внешние репозитории? Как вы узнаете, когда пришло время для обновления? Вы отслеживаете правильные метрики? Как вы докладываете о них?
toppledwagon
@toppledwagon Это все хорошие моменты, но я обращался к курсу 101. Все, что вы упомянули (консистенция / конфигурация mgt, масштабирование, мониторинг / метрики и т. Д.), Я чувствую, придет позже И, честно говоря, я бы скорее рекомендовал приобрести Systems Pro, чем углубляться в эти области.
gWaldo
3
@toppledwagon Как только вы доберетесь до этой точки, вам нужен системный администратор. Или, по крайней мере, Sysadmin-as-a-Service.
Майкл Хэмптон