Comunidad de diseño web y desarrollo en internet

Instalar Apache, MySQL y PHP en un servidor remoto

Animado por los amenos tips de Dientuki, donde explica cómo instalar una distribución debian, cómo conectarse de de manera remota, cómo instalar un media server y cómo instalar un entorno lamp. Me he propuesto hacer otro tip explicando lo mismo (vaya estupidez dirán algunos) pero creando un entorno fácil de hacerle backup. Básicamente se trata de mover todos los archivos importantes, nuestros sites y bases de datos a un único directorio. Así, cuando hagamos nuestros backups, sólo será necesario guardar un directorio.


En este tip voy a intentar mostrar cómo instalar un entorno lamp (Linux, apache, mysql, php) en un servidor distante. Todos los comandos son propios de una distribución Debian y teniendo en cuenta que poseéis acceso a un servidor remoto con privilegios de root. Yo he seguido todos estos pasos en una red local, pero todo lo explicado es aplicable en una comunicación remota. Si vuestro servidor tiene instalado otra distribución Linux revisad los manuales para una correcta utilización de los comandos, si vuestro servidor tiene un SO windows... ¡Cambiad de servidor! ;-)

¡Lo primero es conectarse!

Antes de poder hacer nada en un servidor distante tendremos que conectarnos a él, si no, ¡no podremos hacer nada!
Lo primero es decir que todas nuestras conexiones se van a realizar mediante el protocolo ssh. Un sistema fácil de conectarse en modo línea de comandos y sobretodo seguro.
Vuestro servidor ya contará con el programa apropiado (openssh-server) para poder conectarnos a él, así que sólo nos queda instalar un cliente ssh en nuestra maquina local. Es muy sencillo con la ayuda del comando:

Código :

root@maquinaCliente:/# apt-get install ssh-client


Después de instalar el cliente ssh en nuestra maquina local, ya estamos preparados para conectarnos a nuestro servidor distante. Una de las maneras de hacerlo es mediante su dirección IP que deberíais conocer. Para conectaros como root, el código es el siguiente:

Código :

root@maquinaCliente:/# ssh root@IP_del_servidor_distante


La primera vez que os conectéis de esta manera vuestro sistema os preguntara si queréis añadir este servidor a la lista de vuestras conexiones "confiables". Por ahora estamos obligados a aceptar ya que si no, no hay ni conexión ni tip ;-)

Ahora tendremos que introducir nuestro password de root para poder finalizar de conectarnos.
En un futuro tip intentaré explicar cómo realizar esta misma conexión de manera más segura, con el intercambio de claves públicas ssl. Así no tendremos que tener miedo de un posible "robo" de IP.

Ahora que estamos conectados a nuestro servidor remoto podemos pasearnos un poco por las entrañas de éste, listar/crear/borrar los directorios/ficheros, manipular archivos de configuración... de todas formas tened cuidado, con los privilegios de root tendréis acceso a TODO vuestro sistema remoto, así que si "tocáis" algo de la manera indebida podéis hacer que vuestro sistema sea inestable, mi sugerencia es: Si no sabes lo que estas haciendo, no lo hagas.

Pon un indio en tu vida

Lo que ahora toca es instalar nuestro servidor http. Seguro que todos conocéis Apache, así que vamos a por él. Os recomiendo instalar la ultima versión de Apache propuesta por vuestra distribución. En mi caso (Debian lenny) se trata de Apache/2.2.8. Así que nos armamos de nuestro apt y salimos a la caza del indio.

Código :

root@servidorDistante:/# apt-get install apache2 


Esto os instalará Apache en vuestro servidor con todas sus dependencias.
Por defecto, la instalación de Apache crea un directorio llamado www en el directorio /var donde se guardaran todos los futuros sitios que creéis. A mí no me gusta mucho, para hacer backups tendréis que guardar diferentes directorios, /var/www , después /var/lib/mysql para las bases de datos, etc. Yo prefiero crear un nuevo directorio y guardarlo todo en él, requiere un poco más de trabajo al principio, pero después se gana en comodidad. Así que, como soy yo el que hace el tip...

Código :

 
root@servidorDistante:/# cd /
## creamos el directorio www para guardar todo lo relacionado con nuestros sitios web
root@servidorDistante:/# mkdir /www
##  copiamos la pagina creada por defecto en /www/sites donde albergaremos los.. "sites"
root@servidorDistante:/# cp -av /var/www /www/sites
## borramos el directorio por defecto (siempre me ha dado miedo hacer esto)
root@servidorDistante:/# rm -rfv /var/www
root@servidorDistante:/# cd /var
## creamos un enlace simbólico apuntando hacia nuestro recién creado /www/sites
root@servidorDistante:/# ln -s /www/sites www


También, en un posible siguiente tip, explicaré cómo crear/conseguir un certificado ssl para nuestras conexiones seguras y configurar apache para tenerlo en cuenta.

Un sistema recursivo es un sistema recursivo...

Con este gracioso (¿?) título quiero decir que vamos a instalar PHP en nuestro servidor (PHP Hypertext Preprocessor). Con él podremos crear contenido dinámico para nuestros sitios, incluyendo un fantástico contador de visitas!
Hacerlo es muy sencillo basta con un toque de apt y activar el nuevo modulo en apache:

Código :

## esto descargara e instalara todas las dependencias para poder tener php5
root@servidorDistante:/# apt-get install libapache2-mod-php5
## ahora activamos el modulo en apache
root@servidorDistante:/# a2enmod php5
## también podemos instalar algunas librerías de utilidad
root@servidorDistante:/# apt-get install php5-xsl php5-gd
## y recargamos la configuración de apache
root@servidorDistante:/# /etc/init.d/apache2 reload


¿Pero dónde guardo mis datos?

Ha llegado el momento de instalar una base de datos para guardar todo lo que necesitemos. He optado por mysql porque es una base de datos potente, fácil y ampliamente documentada. Si queréis usar postgresql o cualquier otra solo tendréis que cambiar algunos comandos.
Como he dicho antes, quiero tener toda la información almacenada en un solo lugar, así que después de instalar mysql moveré algunos archivos para tener todo mas controlado. ¡Vamos a ello!

Código :

## instalamos mysql y todas sus dependencias
root@servidorDistante:/# apt-get install mysql-server
## ahora moveremos todo el contenido creado con la instalación a nuestro directorio /www/base
## primero paramos el servidor mysql
root@servidorDistante:/# /etc/init.d/mysql stop
## creamos /www/base
root@servidorDistante:/# mkdir /www/base
## copiamos todo
root@servidorDistante:/# cp -av /var/lib/mysql /www/base/
## borramos el directorio creado por defecto (da miedo eh)
root@servidorDistante:/# rm -rfv /var/lib/mysql
## creamos  un enlace  simbólico para que las aplicaciones encuentren nuestra base de datos
root@servidorDistante:/# cd /var/lib
root@servidorDistante:/var/lib#  ln -s /www/base/mysql
## e iniciamos mysql 
root@servidorDistante:/var/lib#  /etc/init.d/mysql start


Administrar nuestra base de datos de manera gráfica

Seguro que todos conocéis phpmyadmin, se trata de un interface web para controlar las bases de datos mysql. Con él conseguimos un buen control de nuestras bases de datos de manera muy sencilla, así que vamos a instalarlo. Si preferís usar la consola mysql, no lo instaléis ;-)

Código :

root@servidorDistante:/#  apt-get install phpmyadmin


¿Sencillo no? La instalación de phpmyadmin crea un enlace simbólico en /var/www. Pero como nosotros habíamos creado otro enlace simbólico apuntando a nuestro /www todo funciona correctamente. Ahora podréis encontrarlo en la dirección http://vuestro_servidor/phpmyadmin. Para que apache lo tenga en cuenta tendremos que recargarlo:

Código :

root@servidorDistante:/# /etc/init.d/apache2 reload


¿Y ahora que?


¡Pues es todo! Hemos instalado un entorno lamp en nuestro servidor remoto totalmente funcional. Quizá queráis explotar un poco las posibilidades de apache instalando algunos subdominios para vuestras aplicaciones o aumentar la seguridad o simplemente instalar aplicaciones del tipo drupal o wordpress para tener un cms funcional. Cualquier cosa que hagáis hará aumentar vuestros conocimientos en el área de la administración de sistemas, así que no dudéis en hacerlo ;-)

P.D.: Esto es un tip y no un tutorial porque puede haber fallos en lo que he explicado, si tenéis alguna duda al respecto, no dudéis en consultar la documentación, tanto de apache como de vuestra distribución Linux. Si encontráis algún fallo en lo expuesto comentadlo aquí. Si tenéis cosas a añadir no dudéis en hacer vuestros propios tips o tutoriales.

¡Buena conexión!

¿Sabes SQL? ¿No-SQL? Aprende MySQL, PostgreSQL, MongoDB, Redis y más con el Curso Profesional de Bases de Datos que empieza el martes, en vivo.

Publica tu comentario

o puedes...

¿Estás registrado en Cristalab y quieres
publicar tu URL y avatar?

¿No estás registrado aún pero quieres hacerlo antes de publicar tu comentario?

Registrate