Які основи роботи веб-сервера?


26

Це запропоноване канонічне запитання про початок адміністрування веб-сервера.

Якщо припустити, що ви починаючи SysAd, новачок у WebOps або невелика команда з малою чи малою досвідченою підтримкою SysAd для веб-сервера (і зараз не можете собі це дозволити), що вам потрібно зробити, щоб налаштувати та захистити веб-сервер для свого бізнесу?


Ви вдвічі згадуєте про переваги наявності sysad, що означає, що ви звертаєтесь до людей, які не є sysad. Звичайно, це виводить Ваші запитання поза сферою помилки сервера, яка призначена для sysads та ін? Можливо, Super User є кращим домом для цього?
user9517 підтримує GoFundMonica

8
Моє читання FAQ трактується як "технічні фахівці, які задають питання системного адміністрування". Я багато разів бачив подібне запитання від технічних (але не для SysAd) людей (переважно розробників), і вони часто відповідали різко, а не насправді допомагали. Це запитання ставить перед кандидатом канонічну відповідь із того, з чого почати, і чому вони повинні найняти реальну допомогу SysAd ASAP. (І сподіваємось, ніколи більше не доведеться відповідати на це конкретне питання.
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 на Rails, ви, мабуть, хочете сервер Linux; тощо ...

Ознайомтеся з вашим продуктом:

Тепер, коли ви вирішили, як буде виглядати ваш стек, вам потрібно це познайомити. Тут ви повинні провести більшу частину свого часу. Пошук "Налаштувати [продукт]" або "[продукт] Посібник для адміністратора" має отримати достатньо ресурсів.

Наприклад, якщо ви використовуєте Apache в Ubuntu, вам слід абсолютно прочитати:

Шукайте подібні документи, статті, повідомлення в блогах для свого стека.

Встановіть мінімум:

Для Apache існує безліч модулів, але якщо ви не збираєтесь використовувати PHP (наприклад), не встановлюйте mod-php.

Тут також слід зазначити, що вам слід уникати встановлення графічного інтерфейсу, якщо це сервер Linux; GUI використовує значну кількість системних ресурсів.

Захист сайту:

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

Закриття:

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


Запуск мінімуму є надзвичайно важливим, але може бути не очевидно, що / як видалити / відключити / захистити. Чи було б прийнятним запропонувати запустити публічно запущену машину без перешкод, повністю захищену печаткою, що лише пересилає / надає певні запити серверу своїх додатків, що працює в приватній мережі? Можна навіть запропонувати дистрибутив / конфігурацію для цього, оскільки це не повинно бути тим самим середовищем, яке використовує їх додаток.
Карлос Ліма

1
Це гарний початок. Одне, що ви не прикривали, - це здатність повторювати. У якийсь момент ви переростете за рамки поточної установки. Чи повторюються ваші вказівки щодо налаштування навколишнього середовища? А ще краще, чи вони автоматизовані? Ви зберігаєте всі вихідні пакети, щоб ви могли відтворити навколишнє середовище, або ви покладаєтесь на зовнішні сховища? Як ви дізнаєтесь, коли прийшов час оновлення? Ви відстежуєте належні показники? Як ви звітуєте про них?
toppledwagon

@toppledwagon Це все хороші моменти, але я звертався до курсу 101. Все, що ви згадали (узгодженість / налаштування mgt, масштабування, моніторинг / показники тощо), я відчуваю, пізніше. І якщо чесно, я б скоріше рекомендував отримати System Pro, ніж заглиблюватися в ці сфери.
gWaldo

3
@toppledwagon Як тільки ви дістанетесь до цього пункту, вам потрібен sysadmin. Або принаймні службу Sysadmin-as-a-Service.
Майкл Хемптон
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.