¿Cómo puede un principiante configurar un servidor?

Al ver que nadie ha respondido su pregunta en el contexto de los detalles en su comentario, intentaré explicar más de acuerdo con eso. Sin embargo, no desacredite las otras respuestas. De ninguna manera la gente NECESITA saber sobre hardware para hacer software en estos días; Las plataformas en la nube y los sistemas operativos son demasiado buenos para que tenga que preocuparse demasiado por los sistemas subyacentes.

Por lo tanto, desea aprender sobre hardware en el contexto de la web. Comience con algo realmente pequeño, algo que supere los límites de forma bastante rápida. Si se siente particularmente masoquista, use un arduino que sea compatible con Linux, pero de lo contrario sería mejor una frambuesa pi o el antiguo escritorio de su abuelo. Instale el servidor ubuntu y una pila LAMP. Eso le dará algunas aplicaciones con muchos recursos. Escribe algunas cosas de pasatiempo y sácalo de encima. Estudie los modos de falla que obtiene de los diferentes recursos que se están agotando y los cuellos de botella que impone el hardware simple. Una vez que esté harto de LAMP, purgue y use algunas tecnologías más limpias. Go, o Node (si ya está familiarizado con JS) o su idioma de elección, con un mariaDB (para SQL) o couchDB (para NoSQL) será mucho más eficiente y menos doloroso. Asegúrate de jugar también con Nginx en algún momento, porque esa cosa es increíblemente útil. Úselo para desarrollar su aplicación MVP y luego migre a la nube. Automatice TODO lo que haga para interactuar con su plataforma en la nube utilizando CI / CD y automatice las herramientas de configuración de la plataforma (terraform, pupet, chef, elastic beanstalk, composer, severless … hay HEAPS) Usted dijo que no quiere un sistema compartido, pero la mayoría de las plataformas en la nube le permiten tener instancias dedicadas. Incluso si no quiere ir por ese camino, aprenderá sobre las herramientas que necesita sin tener que desembolsar montones de cajas y espacio de CC. Ahora sabe lo suficiente como para poder administrar un clúster.

A partir de ahí, construya / contrate un clúster de máquinas antiguas o SOC y configure una base de datos fragmentada / agrupada, un equilibrador de carga (¡oye, Nginx!) Y ejecute algunas cargas virtuales en él hasta que las cosas comiencen a romperse y pueda tener algo que arreglar. ¡Para entonces deberías ser un experto!

Sugiero Linux en lugar de Windows como plataforma para el aprendizaje porque es totalmente gratuito y la mayoría de los sistemas también lo son. En cuanto a las máquinas baratas, los RPI son excelentes, y hay toneladas de grupos de investigación y tutoriales que los utilizan, por lo que podrá obtener ayuda fácilmente.

Si desea obtener información sobre los componentes de hardware reales, comience construyéndose una PC para juegos e investigue. Como, REALMENTE HAGA SU INVESTIGACIÓN. ¿Elegir una CPU? Busque todos los modelos en el rango de rendimiento que desee tanto de AMD como de Intel y busque CADA característica enumerada en ellos, cómo funciona y por qué lo querría / no querría para jugar. Los servidores no funcionan mucho como las plataformas de juegos, pero aprende sobre las formas en que las características del hardware se complementan entre sí y para qué están destinadas.

Proceso de configuración inicial de arranque de red y herramientas automatizadas de creación de imágenes / configuración -> pupet, chef, beanstalk, etc.

Dado que quería usar MySQL específicamente, le sugiero que mire a mariaDB. Es una bifurcación de cuando fue comprada por Oracle y es casi completamente compatible desde la perspectiva del lenguaje y es menos defectuosa y más fácil de fragmentar / replicar / escalar de otra manera.

¡Buena suerte!

¿Por qué no usar un PaaS como Heroku? Si tiene una necesidad comercial (por ejemplo, hacer crecer una aplicación de servicio web), recomendaría no obligarse a realizar tareas innecesarias.

Si quisiera aprender administración de sistemas para su propio desarrollo personal, le recomendaría usar máquinas virtuales en una nube pública, como la EC2 de Amazon. Aún mejor, use una nube pública a través de RightScale, que crea una gran cantidad de la inicialización y configuración del servidor, lo que hace que sea más rápido y fácil implementar sus propios servidores (y aún así mantener el mismo nivel de control sobre ellos como lo haría con un servidor dedicado de forma remota). servidor alojado).

El hardware para un proyecto inicial es obvio. Simplemente elija una PC barata. No volará puertas bajo altas tasas de solicitud, pero para un sistema de desarrollo será más que adecuado. A menos que sea realmente bueno con la administración del sistema (o realmente quiera aprender), simplemente instale Windows en él.

El software realmente depende de los servicios que necesita. Puede descargar e instalar Apache, PHP y MySQL en cualquier sistema Windows con bastante rapidez y facilidad. A menudo hago esto cuando necesito establecer un Wiki como una base de datos de información para un proyecto. Los tres son paquetes de software estándar instalados en ese nivel. La configuración más allá de eso debería determinarse en los paquetes que necesita. Esto es en gran medida un ejercicio en Google-Fu. Las respuestas casi siempre se encuentran en algún lugar, solo es cuestión de encontrarlas.

Si desea escribir su software web en Java, entonces probablemente quiera considerar usar JSP ejecutándose en un servidor de aplicaciones real. JBoss es fácil de instalar, pero más difícil de configurar. Te sugiero que escojas un libro decente sobre el tema si quieres seguir esa ruta.

Obtener una dirección IP estática para su servidor puede ser más costoso para usted que alquilar un alojamiento compartido, y eso es un requisito si desea que el resto del mundo pueda acceder a su servidor. Consulte con su proveedor de servicios de internet. Volvería a examinar su base de datos para ver si realmente están fuera del ámbito de lo que puede obtener en un servidor compartido.