¿Cuáles son los principios básicos para ejecutar un servidor web?

26

Esta es una pregunta canónica propuesta sobre el inicio de la administración del servidor web.

Suponiendo que usted es un SysAd principiante, que es nuevo en WebOps o que es un equipo pequeño con poco o ningún soporte SysAd de servidor web experimentado (y no puede permitírselo ahora), ¿qué debe hacer para configurar y proteger un servidor web para su negocio?

gWaldo
fuente
Menciona dos veces los beneficios de tener un sysad, lo que implica que se dirige a personas que no son sysads. ¿Seguro que esto pone sus preguntas y respuestas fuera del alcance de Server Fault, que es para sysads et al? ¿Quizás Super User es un mejor hogar para esto?
user9517 es compatible con GoFundMonica el
8
Mi lectura de las preguntas frecuentes se interpreta como "profesionales técnicos que hacen preguntas a la Administración de Sistemas". He visto este tipo de preguntas formuladas muchas veces por personas técnicas (pero no por SysAd) (en su mayoría Desarrolladores), y a menudo se las responde con dureza en lugar de ayudarlas. Esta pregunta se plantea como candidato a ser una respuesta canónica de dónde comenzar y por qué deberían contratar ayuda SysAd real lo antes posible. (Y con suerte nunca más tendré que responder esta pregunta en particular.
gWaldo

Respuestas:

32

Antes de que comencemos:

Tener personas de calidad le ahorrará dinero. Al igual que tener un buen abogado (posiblemente NSFW por maldecir) o un contador, tener un SysAd de calidad probablemente le ahorrará dinero, a menudo simplemente ayudándole a evitar errores costosos. Es posible que no tenga el dinero para pagar la experiencia ahora, pero tan pronto como pueda, debe hacer esa inversión.

No hay una respuesta simple y singular a esta pregunta. Si usted es alguien que hace esta pregunta, debe darse cuenta de que esta pregunta es el núcleo de un campo en el que los profesionales invierten años de estudio y práctica. La pregunta análoga a un desarrollador sería "¿cómo escribo una aplicación web?"; Claro, podríamos indicarle las instrucciones para instalar Ruby-on-Rails y un RoR "Hello World". Si bien eso 'respondería la pregunta', en realidad no lo ayudaría. Este Q / A es un intento de ayudarte realmente.

Usted debe saber:

La administración del servidor web es un tema importante y está intrínsecamente entrelazado con muchas disciplinas diferentes. Para hacerlo bien, necesitará una comprensión fundamental de TCP / IP, su sistema operativo host, su aplicación de servidor web y cierta comprensión de la ejecución de la pila de aplicaciones.

Prepárate para leer. Una gran cantidad .

Identifica tus necesidades:

Requisitos

  • ¿Está ejecutando un sitio web simple y estático (tal vez con algunos efectos de Javascript), o
  • (más probable) ¿está ejecutando una aplicación que tiene una interfaz web?
  • ¿Tienes datos persistentes? (¿Necesita una base de datos?)
  • ¿Hay credenciales de usuario involucradas? ¿Hay alguna otra razón por la que necesitaría la conexión entre el usuario y el sitio web para estar seguro? (SSL)
  • ¿Está manejando pagos de algún tipo? Además de tener requisitos SSL, hay consideraciones adicionales que deberá investigar (dependiendo de la región). Estos también variarán según el procesador de pagos que utilice.

Identifica tu pila:

¿Cómo vas a escribir y ejecutar esto?

  • Plataforma (Windows, Linux, otros Unix, etc.)
  • Requisitos de la aplicación (Ruby / Rails, Python, Perl, PHP, .NET, etc., etc.)
  • Base de datos (...)
  • Almacenamiento en caché? (Honestamente, no se preocupe por esto ahora; tenga en cuenta que esto resuelve algunos problemas y puede crear otros. Este es un problema de rendimiento, y en este momento solo está tratando de comenzar).

Algunas de estas opciones informarán a otros. Por ejemplo, si está ejecutando una aplicación .NET, probablemente quiera usar MSSQL e IIS; Si está ejecutando Ruby on Rails, probablemente desee un servidor Linux; etc ...

Conozca su producto:

Ahora que ha decidido cómo se verá su pila, debe conocerla. Aquí es donde debes pasar la mayor parte de tu tiempo. Si busca "Configurar [producto]" o "Guía de administración [producto]" debería obtener muchos recursos.

Por ejemplo, si está ejecutando Apache en Ubuntu, debería leer absolutamente:

Busque documentos similares, artículos, publicaciones de blog para su pila.

Instale el mínimo indispensable:

Hay una gran variedad de módulos para Apache, pero si no vas a usar PHP (por ejemplo), no instales mod-php.

También debe indicarse aquí que debe evitar instalar una GUI si es un servidor Linux; Las GUI usan una cantidad significativa de recursos del sistema.

Asegurando el sitio:

  • Garantizar permisos mínimos para funcionar. Esto se aplica no solo al sistema de archivos, sino también a los servicios y procesos.
  • Mantenga los puertos del servidor deshabilitados para servicios innecesarios. (Nuevamente, solo instale el mínimo).
  • Restrinja las interfaces de la aplicación al entorno interno (si, por ejemplo, ejecuta una aplicación web en el mismo servidor (como Rails), limítelo a escuchar solo localhost)

Para concluir:

Esto es solo el comienzo de lo que debe hacer para poner en funcionamiento un sitio. Esto ni siquiera comienza a tocar los problemas de mantenimiento de servidores o cómo manejar los problemas de escalado (en caso de que su proyecto tenga éxito), ni ninguno de los otros innumerables problemas que un SysAd experto resolverá por usted.

gWaldo
fuente
Ejecutar el mínimo necesario es crucial, pero puede no ser obvio qué / cómo desinstalar / deshabilitar / proteger. ¿Sería aceptable sugerir ejecutar públicamente una máquina básica, totalmente cortafuegos, que solo reenvíe / delegue las solicitudes específicas a su servidor de aplicaciones que se ejecuta en una red privada? Incluso sería posible sugerir una distribución / configuración para eso, ya que no necesita ser el mismo entorno que utiliza su aplicación.
Carlos Lima
1
Ese es un buen comienzo. Una cosa que no cubriste es la capacidad de repetición. En algún momento crecerás más allá de la configuración actual. ¿Sus instrucciones para configurar el entorno son repetibles? Mejor aún, ¿están automatizados? ¿Está guardando todos los paquetes fuente para poder recrear el entorno o confía en repositorios externos? ¿Cómo sabrá cuándo es hora de actualizar? ¿Estás rastreando las métricas adecuadas? ¿Cómo estás informando sobre ellos?
toppledwagon
@toppledwagon Todos esos son buenos puntos, pero me dirigía al curso 101. Todo lo que mencionaste (consistencia / gestión de configuración, escalado, monitoreo / métricas, etc.) siento que vendré más tarde. Y honestamente, preferiría obtener un Systems Pro que profundizar en esas áreas.
gWaldo
3
@toppledwagon Una vez que llegas a ese punto, necesitas un administrador de sistemas. O al menos un Sysadmin-as-a-Service.
Michael Hampton