Spanish (Español) translation by Luis Chiabrera (you can also view the original English article)
Todos los grandes sitios web tienen un gran servidor detrás de ellos. En este tutorial, te mostraré cómo configurar un servidor web dedicado (con Apache, MySQL y PHP) usando esa computadora vieja que tienes en la casa y algún software gratuito.
1. Una descripción rápida
En este tutorial, nuestro objetivo es lograr varias cosas:
- Vamos a instalar el sistema operativo Ubuntu Server. Normalmente uso Ubuntu debido a su facilidad de uso y
Administración simple. También tiene una comunidad bastante grande y extremadamente activa detrás de ella, lo que hace que conseguir
soporta una brisa - Vamos a instalar un servidor OpenSSH. Esto le permite administrar su servidor desde computadoras remotas.
- Se instalará una pila LAMP (Linux, Apache, MySQL y PHP). Esto proporciona la columna vertebral que se ejecutará
su sitio web. Apache es el servidor web estándar de la industria en sistemas operativos basados en Unix; es lo que la mayoría de los servidores web
uso (¡NETTUTS lo está usando ahora mismo!) y es lo que vamos a usar. - Vamos a instalar un firewall para proteger su servidor del acceso no autorizado.
Para seguir este tutorial, necesitarás algunos elementos:
- Una computadora para usar como su servidor. No necesita ser poderoso; Mientras no sea antiguo, funcionará bien. Por favor
no hagas esto en tu PC de escritorio; Ubuntu borrará completamente tu computadora. - Una grabadora de CD y un CD en blanco. Estos son para que pueda grabar Ubuntu en un disco para instalarlo.
- Hora. En serio, este proceso requiere mucho tiempo, especialmente si tiene problemas. Intenta reservar una tarde
para seguir este tutorial.
Es posible que se pregunte por qué querría tener su propio servidor web. Hay varias razones, algunas de las cuales son: puedes tener tus propias pruebas
terreno para sus sitios web; Con una pequeña modificación, puedes alojar tu propio sitio; y, aprenderá mucho sobre Linux / Unix a medida que avanza.
Dicho esto, ¡comencemos!
2. Descargar Ubuntu Server
En primer lugar, vamos a necesitar un CD con Ubuntu. Apunte su navegador web a http://www.ubuntu.com/,
y haga clic en descargar desde el menú a la izquierda. Ahora aparecerá un cuadro con dos pestañas: "Edición de escritorio" y
"Edición servidor". Haga clic en la pestaña "Edición de servidor" y seleccione "Ubuntu 8.04 LTS". A continuación, seleccione una ubicación de descarga de la
caja desplegable. Finalmente, pulsa el botón "Comenzar descarga".



Ahora necesita grabar el ISO (el archivo que descargó) en un CD en blanco. Si no sabes cómo hacer esto, hay un
excelente guía en https://help.ubuntu.com/community/BurningIsoHowto
3. Instalar Ubuntu Server
Ahora que ha descargado y quemado la ISO, instalemos Ubuntu en su servidor. Coloque el disco en la unidad y arranque desde el CD. En la mayoría de las computadoras modernas, esto ocurrirá de manera predeterminada si hay un disco en la unidad cuando lo enciende. Si no es así, debe presionar una tecla de su teclado a la derecha cuando lo encienda. Para mi portátil, es F12, y para mi servidor, es F2. Solo depende de tu computadora Puede encontrarlo mirando el texto en su pantalla derecha cuando enciende la computadora, durante el BIOS. Verá algo como "Presione [TECLA] para cambiar el orden de arranque". Presiona esa tecla y selecciona tu unidad de CD.
¿Aún conmigo? Bueno. Ahora que ha arrancado Ubuntu, debería ver la siguiente pantalla:



Selecciona tu idioma y pulsa Intro. Ahora verás esta pantalla:



Seleccione "Instalar Ubuntu Server", y nos vamos!
El instalador ahora le preguntará si desea que detecte la distribución de su teclado. En lo personal, siempre elijo no, porque
es más rápido seleccionar un teclado americano estándar de la lista que hacer que el instalador lo detecte. Cualquiera de las opciones está bien,
sólo tienes que seguir las instrucciones en pantalla.
Después de que haya hecho eso, ahora verá un montón de pantallas de carga que dicen cosas como "Detección de unidades de CD-ROM" y demás.
Estos deben pasar rápidamente y sin problemas. Sin embargo, durante estas pantallas, el instalador intentará configurar automáticamente su
configuración de red. Para la mayoría de los casos, esto funcionará sin queja. Sin embargo, si no funciona para usted, simplemente siga las
Instrucciones en pantalla para que funcione.
Después de que haya terminado con todo eso, le pedirá un nombre de host. Por lo general, puede establecer esto a cualquier cosa; Siempre me pongo
la mía a "servidor web".



El sistema ahora le pedirá que configure la zona horaria para su reloj. Para mí, es pacífico. Elija el que se aplica a
usted.
Ahora, el sistema detectará más hardware y se le pedirá que "particione el (los) disco (s)". Seleccione "Guiado - use entero
disco".



Ahora deberá seleccionar el disco que desea particionar. Para la mayoría de las configuraciones, solo un disco estará disponible; sin embargo,
Para sistemas más especializados, más opciones estarán disponibles aquí. Elige el que se aplique a ti.



Le preguntará si desea escribir los cambios en el disco. Selecciona "Sí" y pulsa enter. El instalador ahora procederá
para formatear el disco y configurar las particiones.
Ahora la magia pasa. El sistema comenzará a instalarse. Mientras esto sucede, ve a tomar una taza de café. Esto puede llevar a cualquier parte
De 10 minutos a una hora. Solo depende de tu sistema. Puede haber veces que parece que está congelado; no te preocupes
no lo es Solo deja que haga lo que sea. Sin embargo, si se atasca en una cosa durante más de una hora, entonces sí, se congela.



Ahora que el sistema está instalado, debe configurar la cuenta con la que va a iniciar sesión. En primer lugar, dale tu plena
nombre y pulsa "continuar".



Ahora dale tu nombre de usuario. Normalmente solo lo establecerá como su primer nombre,
pero puedes cambiarlo. Un nombre que no puede usar es "raíz".



Ahora se le pedirá que proporcione una contraseña. Es ESENCIAL que elija una contraseña segura, o su servidor no lo hará
estar seguros en absoluto Recomiendo por lo menos una mezcla de números, letras minúsculas y letras mayúsculas. Sin embargo, para mis servidores.
Uso símbolos, así como una mezcla de los anteriores. NO use una contraseña de menos de 7 caracteres.



Luego, vuelva a ingresar su contraseña para verificar que la escribió correctamente.
El sistema ahora intentará configurar el "Administrador de paquetes" (llegaremos a lo que es en breve). Proporcionalo con tu
información del proxy, o déjela en blanco si no usa un proxy y seleccione "Continuar".



El sistema ahora escaneará varios servidores en busca de actualizaciones y ajustes de configuración.



Después de que se haya completado, se le presentarán varias opciones para instalar el software del servidor. Ahora, escucha MUY con cuidado.
Seleccione el servidor OpenSSH y presione SPACE, NOT ENTER. Si pulsa enter, la instalación continuará sin instalar el servidor OpenSSH.
También puede instalar el "servidor LAMP", pero no tengo experiencia con esta opción, por lo que vamos a instalarlo todo con una configuración diferente.
comando más adelante.



El sistema ahora instalará el software seleccionado, así como otros componentes del sistema.



Finalmente, la instalación terminará. Quita el CD, y pulsa enter. La computadora se reiniciará. Si todo va bien, estarás
Presentado con una pantalla que se parece a la siguiente:



¡Felicidades! Acabas de terminar la parte más difícil. Ubuntu ya está instalado, y es hora de convertir esta computadora en
un servidor web
4. Actualice su nuevo servidor
Antes de continuar, debemos asegurarnos de que su servidor esté actualizado. Para hacer esto, necesitas iniciar sesión. Primero, escriba su nombre de usuario
(el que eligió anteriormente), presione intro y luego escriba su contraseña. Mientras escribe su contraseña, notará que nada
parece estar sucediendo No te preocupes, esa es la forma en que fue diseñado para trabajar. Después de que hayas terminado de escribir tu contraseña, pulsa Intro,
y su pantalla debería verse similar a la de abajo si todo salió bien:



Ahora, escriba:
1 |
sudo aptitude update && sudo aptitude dist-upgrade |
Le pedirá su contraseña y, de nuevo, no verá nada mientras la escribe. Después de que hayas hecho eso, te preguntará si
quieres continuar Escribe "y" y presiona enter. Su pantalla se verá similar a la siguiente:



Su sistema ahora descargará e instalará todas las actualizaciones más recientes. Esto tomará un tiempo dependiendo de su conexión a internet. Después
ha terminado, tu computadora tendrá que ser reiniciada. Para hacer esto, escriba:
1 |
sudo shutdown -r now |
Y dejar que se reinicie. Su servidor ahora está completamente actualizado.
Una nota rápida sobre "Sudo"
Por ahora, es posible que haya notado que todos los comandos que ha escrito han comenzado con "sudo". Esto es porque requieren
privilegios de administrador, y eso es lo que hace "sudo". Ejecuta el comando (es decir, "shutdown") como administrador, lo que le permite trabajar
correctamente. Por eso también te pide tu contraseña. Sin embargo, después de haber escrito "sudo" una vez e ingresado su contraseña,
no tiene que volver a ingresar su contraseña durante cinco minutos. No todos los comandos requieren sudo, solo los que modifican partes del sistema.
¿Tienes todo eso? Bueno.
5. Instalar Apache, MySQL y PHP
Ahora es el momento de instalar algunos programas. Para poder acceder a sus sitios desde Internet, necesitaremos instalar un servidor web (Apache). Además del servidor web,
También desea un servidor de base de datos (MySQL) y un lenguaje del lado del servidor (PHP) para que podamos ejecutar aplicaciones populares como WordPress. Asi que,
¡Hagámoslo!
Instalar programas en Ubuntu es muy diferente a instalar programas en Windows o
OS X, en el que Ubuntu descargará e instalará los programas por usted con un simple comando. Esto se debe a que Ubuntu tiene algo llamado
un Administrador de paquetes, que administra casi todos los programas en su sistema. Todo lo que tenemos que hacer es decirle al gestor de paquetes.
(llamado "aptitude") que queremos que instale Apache, MySQL y PHP. Para hacer esto, escriba el siguiente comando:
1 |
sudo aptitude install apache2 php5-mysql libapache2-mod-php5 mysql-server |
Y pulsa enter. Aptitude descargará e instalará los programas que especificó. También descargará e instalará cualquier
dependencias



Durante el proceso de instalación, MySQL le pedirá una contraseña de root. Puedes configurar esto para cualquier cosa, solo asegúrate de que sea largo y seguro.
Hagas lo que hagas, NO dejes esto en blanco.



Después de que todo haya terminado, ahora tiene un servidor web completamente funcional. Para probarlo, primero encuentre la IP de su servidor escribiendo:
1 |
ifconfig | grep inet
|



Por lo general es la primera IP devuelta. En mi caso, es 192.168.177.129. Ahora que ya conoce la IP, abra su navegador web y apúntelo
a su servidor IP. Si ves el "¡Funciona!" Mensaje, entonces felicidades, funciona.



Sin embargo, todavía no hemos terminado. No queremos que Apache o PHP divulguen información sobre ellos mismos, ya que esta información no es necesaria
por sus usuarios y podría suponer un riesgo para la seguridad. Primero, haga una copia de seguridad del archivo de configuración original de Apache:
1 |
sudo cp /etc/apache2/apache2.conf /etc/apache2/apache2.conf.bak
|
Ahora abre el archivo de configuración:
1 |
sudo nano /etc/apache2/apache2.conf
|
Desplácese hacia abajo (flecha hacia abajo) hasta donde dice "ServerTokens Full" y cámbielo a "ServerTokens Prod"



Ahora, desplácese hacia abajo un poco más y cambie "ServerSignature On" a "ServerSignature Off"



Finalmente, presione Control-O seguido de Control-X. Eso guardará el archivo y saldrá del editor de texto.
Ahora, tenemos que hacer lo mismo para PHP. Primero, haga una copia de seguridad del archivo de configuración PHP original:
1 |
sudo cp /etc/php5/apache2/php.ini /etc/php5/apache2/php.ini.bak
|
Abra el archivo de configuración:
1 |
sudo nano /etc/php5/apache2/php.ini
|
Cambie "expose_php = On" a "expose_php = Off"



Nuevamente, presione Control-O seguido de Control-X. Ahora que los archivos de configuración están actualizados, reinicie Apache:
1 |
sudo /etc/init.d/apache2 restart
|
Ya ha terminado de configurar Apache, MySQL y PHP.
6. Instalar un cortafuegos
Ahora vamos a bloquear nuestro servidor un poco más instalando Shorewall, un firewall de línea de comandos. Para instalarlo:
1 |
sudo aptitude install shorewall |
De forma predeterminada, Shorewall se instala sin reglas, lo que permite un acceso completo. Sin embargo, este no es el comportamiento que queremos.
En su lugar, vamos a bloquear todas las conexiones a cualquier otra cosa que no sea el puerto 80 (HTTP) y el puerto 22 (SSH). Primero, copia la configuración.
archivos al directorio de Shorewall:
1 |
sudo cp /usr/share/doc/shorewall-common/examples/one-interface/* /etc/shorewall/ |
Ahora, abre el archivo de "reglas":
1 |
sudo nano /etc/shorewall/rules
|
Agrega estas líneas arriba donde dice "#LAST LINE"
1 |
HTTP/ACCEPT net $FW |
2 |
SSH/ACCEPT net $FW |



Luego presione Control-O y Control-X. Su firewall ahora está configurado para aceptar solo el tráfico HTTP y SSH. Lo último que necesitamos
hacer es decirle a Shorewall que comience en el arranque. Entonces, abre el archivo de configuración principal de Shorewall:
1 |
sudo nano /etc/shorewall/shorewall.conf
|
Desplázate hacia abajo hasta "STARTUP_ENABLED = No" y configúralo en "STARTUP_ENABLED = Sí"



Presiona Control-O y Control-X. Ahora, abra el archivo de configuración por defecto de Shorewall:
1 |
sudo nano /etc/default/shorewall
|
Y cambia "inicio = 0" a "inicio = 1". Presiona Control-O y Control-X. Finalmente, inicie su firewall:
1 |
sudo /etc/init.d/shorewall start
|
¡Felicidades! Su firewall está ahora configurado y protegiendo su servidor.
7. Agregue su sitio web a su servidor web
Ahora que ya tiene todo configurado, probablemente le gustaría agregarle un sitio web. Por defecto, todos los archivos que Apache sirve.
hasta internet se encuentran en "/ var / www /". Sin embargo, no puede escribir en esta carpeta. Hagámoslo para que puedas:
1 |
sudo usermod -g www-data [YOUR USERNAME] |
2 |
sudo chown -R www-data:www-data /var/www |
3 |
sudo chmod -R 775 /var/www |
Lo que sucedió allí fue que usted se agregó al grupo "www-data" e hizo que la carpeta del sitio web se pueda escribir en los miembros de "www-data"
grupo.
Ahora, iniciará sesión en su servidor utilizando SFTP (no debe confundirse con FTPS). Algunos clientes que soportan SFTP son:
WinSCP (Windows, Gratis), FileZilla (Windows, Linux, OS X, Gratis),
Cyberduck (OS X, Gratis) y, mi favorito personal, Transmit
(OS X, $30)
Conéctese a su servidor usando su nombre de usuario y contraseña y, si su cliente lo admite, una ruta predeterminada de "/ var / www" (si no es así,
simplemente navegue a / var / www una vez que haya iniciado sesión): (Transmit en la foto)



Ahora puede agregar sus archivos a esta carpeta (/ var / www) y se mostrarán en su servidor cuando lo busque con su
navegador web.
Ahora, puede que se pregunte por qué estamos usando SFTP en lugar de FTP. Principalmente, porque SFTP ya está integrado en OpenSSH (que instaló
más temprano). Sin embargo, también es mucho más seguro que FTP y dificulta (si no imposible) que los usuarios malintencionados obtengan acceso.
a sus credenciales de inicio de sesión.
8. Haga que su servidor sea accesible a Internet
La mayoría de las redes domésticas modernas están detrás de un enrutador en estos días. Debido a esto, su servidor web no será visible en Internet sin
un poco de trabajo Como no tengo todos los enrutadores disponibles para probar, solo puedo darle instrucciones generales en esta área.
Hay dos formas de abrir su servidor a Internet: una DMZ o un reenvío de puertos. La principal diferencia que notará es que con una DMZ, su servidor usa la
cortafuegos que instalamos anteriormente para protegerse. Sin embargo, con el reenvío de puertos, su servidor estará protegido por el firewall de su enrutador.
Sin embargo, antes de continuar, querrá darle a su servidor una dirección de LAN estática. Para hacer eso, inicie sesión en su enrutador y busque algo
a lo largo de las líneas de "IP estáticas" o "Enrutamiento estático". Después de que le haya dado a su servidor una dirección LAN estática, puede hacer las siguientes partes. Recuerda,
Google es tu amigo.
Para avanzar, hay un sitio web excelente, PortForward.com, que aunque es feo, puede
Ayudarte a hacer el trabajo para casi cualquier enrutador. Los puertos que desea reenviar son 22 y 80.
Para crear una DMZ, debe iniciar sesión en su enrutador y buscar algo como "configuración DMZ". Una vez que lo encuentre, agregue su servidor a
la DMZ, y estará listo. Una vez más, Google es útil en situaciones como esta.
Ahora, encuentra tu IP pública, y listo! Puede acceder a su servidor desde cualquier lugar siempre que lo desee.
como tu IP no cambia
9. Administrar su servidor de forma remota
Además de permitirle cargar archivos, OpenSSH le permite iniciar sesión en su servidor desde cualquier lugar siempre que sepa que es IP. Para Windows, podrás
Necesito un cliente SSH. Recomiendo Putty. Para OS X, SSH es
ya instalado. Simplemente abra la Terminal y escriba "ssh you @ yourip". Para Putty, elija SSH e ingrese su IP, nombre de usuario y contraseña
cuando se lo pida. Notará que, una vez que inicia sesión, se ve exactamente igual a la pantalla en el servidor:



Puedes hacer cualquier cosa desde aquí que harías sentado en el servidor. Para cerrar sesión en el servidor, simplemente escriba "exit" y presione enter.
10. ¡Eso es todo!
Ahora tienes un servidor web completamente funcional. Es un excelente campo de pruebas, e incluso sería adecuado para alojar sitios web con poco tráfico. Obviamente, queda mucho por aprender, pero es de esperar que haya adquirido un poco de información sobre cómo funcionan los servidores web.
Si desea leer más sobre los temas que traté, aquí hay algunas guías geniales:
- Instalación de software
- Configurando Apache, MySQL y PHP
- Guía de configuración de Shorewall
- Cómo hacer Port Forward
Además, asegúrese de revisar los miles de scripts PHP útiles en Envato Market. Con todo, desde formularios y carros de compra hasta abstracciones de bases de datos, seguramente habrá algo para ayudarlo en la próxima etapa de su trabajo como desarrollador.


