Bueno, pues puesto ya manos a la obra vamos a mostrar una configuración básica típica en un servidor debian. El objetivo de este "mini-tutorial" es cubrir los siguientes aspectos:
- Login a nuestro servidor
- Adminstracion de usuarios
- Establecer una conexión SSH
- Establecer y configurar un firewall
- Locales
- Configurar repositorios y actualizar a los últimos paquetes. Paquetes esenciales
- Instalación y configuración de un servidor FTP
- Instalación Mysql
- Instalación de Apache y PHP
Tras esto deberíamos de tener un servidor más o menos preparado para instalar un CMS, crear un foro o lo que deseemos. Estoy suponiendo que trabajais bajo Linux, vamos al tema:
1.LoginAntes de nada en caso de que sea una reinstalación y no una instalación nueva hemos de eliminar la entrada en SSH known_host que referencia a nuestra IP del servidor y salvar el archivo, todo ello con el comando
nano ~/.ssh/known_hosts
Para logearnos en nuestro servidor hay que abrir un terminal y escribir
ssh root@ip.de.nuestro.servidor
2.Administración de usuariosNos logeamos y cambiamos el password a uno de nuestra elección, tras lo que añadiremos un usuario al sistema para no tener que volver a entrar como root y le añadimos los permisos correspondientes.
passwd
adduser admin
visudo
admin ALL=(ALL) ALL
3.Establecer una conexión SSHAbrimos otro terminal e introducimos
mkdir ~/.ssh para crear una carpeta donde guardar la llave privada, tras lo cual creamos las llaves ssh con
ssh-keygen -t rsa y pulsamos enter cuando nos pregunten por una passphrase, tras lo cual se crearan dos archivos, uno de ellos es el .pub y es el que contiene la clave publica que almacenaremos en el servidor. Acuerdate de proteger la carpeta con las claves.
Copiaremos la clave pública en el servidor con el siguiente comando (suponiendo el usuario admin):
scp ~/.ssh/id_rsa.pub admin@tu.ip.del.servidor:/home/admin/
Ahora vamos a dar permisos para el SSH por lo que movemos el archivo que contiene la clave pública a un directorio llamado .ssh, tras lo cual le damos permisos a la llave pública.
mkdir /home/admin/.ssh
mv /home/admin/id_rsa.pub /home/demo/.ssh/authorized_keys
chown -R admin:admin /home/admin/.ssh
chmod 700 /home/admin/.ssh
chmod 600 /home/admin/.ssh/authorized_keys
El siguiente paso es configurar el SSH, para lo cual debereis de introducir el comando
nano /etc/ssh/sshd_config y añadir la
siguiente configuración (a modo de ejemplo), donde debereis cambiar las siguientes lineas:
Port 30000 <--- cambia al puerto de tu elección Protocol 2 PermitRootLogin no PasswordAuthentication no X11Forwarding no UsePAM no UseDNS no AllowUsers admin
Como tenemos una clave publica y privada no va a hacernos falta la autenticación por password, por lo que será más cómodo anularlo.
4.Establecer y configurar un firewallDeberemos estar logeados como superusuario (sudo) para poder realizar esta tarea. Siempre que queramos ver el estado de las conexiones (firewall) tenemos que teclear iptables -L. Como habrás podido deducir iptables es la tabla que guarda la configuración de las conexiones entrantes y salientes, así que lo que haremos será editar esta tabla, para ello tecleamos:
nano /etc/iptables.test.rules
Y podemos usar
esta tabla como plantilla.
Tras lo que salvaremos la tabla y haremos que sea siempre aplicada al arrancar el servidor modificando el archivo /etc/network/interfaces
iptables-restore < /etc/iptables.test.rules iptables-save > /etc/iptables.up.rules
nano /etc/network/interfaces
Añadiremos tan sólo una linea al archivo
...
auto lo
iface lo inet loopback
pre-up iptables-restore < /etc/iptables.up.rules # The primary network interface ...
5.LocalesLos locales son muy fáciles de instalar y básicos para las webs con las que vayamos a trabajar, si no tenemos el locale instalado referente al idioma de la web nos causará problemas.
De modo que lo instalaremos (seleccionamos con espacio y le damos al ok con enter)
sudo aptitude install locales
Y configuraremos
sudo
dpkg-reconfigure locales
6.Configurar repositorios y actualizar a los últimos paquetes. Paquetes esencialesAhora que tenemos instalados y configurados los locales podemos configurar los repositorios y actualizarlos para tenerlo todo a punto. Los repositorios están situados en un archivo llamado sources.list, que editaremos con el siguiente comando:
sudo nano /etc/apt/sources.list
Nos aparecerán cuatro lineas con repositorios, lo suyo es que las modifiques para que apunten al
repositorio más cercano que tengas (respecto a la localización de tu servidor) o para que apunte
al sitio global. Una manera neutral de que quede sería:
deb http://ftp.debian.org/debian/ lenny main
deb-src http://ftp.debian.org/debian/ lenny main
deb http://security.debian.org/ lenny/updates main contrib
deb-src http://security.debian.org/ lenny/updates main contrib
Recuerda que siempre puedes añadir más repositorios que no sean oficiales, aunque a tu propio riesgo.
Tras esto meteremos los comandos
sudo aptitude safe-upgrade
sudo aptitude full-upgrade
para actualizar a la ultima version los paquetes que tenemos instalados.
Ahora nos tenemos que encargar de los paquetes esenciales, que no son más que paquetes con las librerías comunes usadas por la mayoría de programas y compiladores, todo ello se puede hacer con el simple comando:
sudo aptitude install build-essential
7.Instalación y configuración de un servidor FTPPara poder hacer uso de una conexión ftp necesitas dos cosas, un servidor ftp (para servir la conexión) y un cliente ftp (para hacer uso de la conexión). Servidores ftp hay muchos, aunque de los que h e visto para debian al menos el que me inspira más confianza es vsftp (very secure ftp) ya que es bastante configurable y bastante sencillo en su instalación.
Para instalarlo nos logeamos como superusuario (su) simplemente escribimos
aptitude install vsftpd
Tras la instalación vendrá la configuración, la primera es la del servidor situada en el archivo
/etc/vsftpd.conf
las distintas opciones a tener en cuenta son:
listen=Yes (Este es para que corra como servidor independiente y no como parte de inet)
anonymous_enable=No (Evitamos conexiones anonimas que son peligrosas en ftp)
local_enable=Yes
write_enable=Yes
local_umask=022
nopriv_user=admin (o el usuario que hayais puesto con privilegios)
ftpd_ banner=Mensaje de bienvenida que te apetezca
pam_service_name=vsftpd
pasv_max_port=65534
pasv_min_port=49152
Éstas dos ultimas opciones son bastante importantes en caso de que tan solo podamos usar conexiones pasivas. Por tanto deberemos abrir en el firewall los puertos correspondientes para poder conectarnos a nuestro servidor ftp.
Primero reiniciamos nuestro servidor ftp:
/etc/init.d/vsftpd restart
Y abrimos otra vez el firewall
nano /etc/iptables.test.rules
Y añadimos las siguientes lineas:
# Allows ftp connections
-A INPUT -p tcp --dport 21 -j ACCEPT
-A INPUT -p tcp --dport 20 -j ACCEPT
- A INPUT -p tcp --dport 49152:65534 -j ACCEPT
Ahora salvamos el fichero y reconfiguramos el firewall
iptables-restore < /etc/iptables.test.rules iptables-save > /etc/iptables.up.rules
Con ello tendremos abiertas las conexiones en el firewall. Podemos ir a nuestro cliente ftp preferido y poner la direccion del servidor, puerto 21 y el nombre de usuario y password que hayamos asignados. El servidor ftp debe de estar funcionando sin problemas.
8.Instalación MysqlLa instalación de Mysql es de lo más sencilla, simplemente tecleamos
sudo aptitude install mysql-server mysql-client libmysqlclient15-dev
creamos un usuario root e introducimos las dos veces que nos lo pidan el password para ese usuario y listo, ya tenemos mysql funcionando.
Sin embargo está bien deshabilitar la base de datos InnoDB para que consuma menos espacio en mem oria, para ello introducimos el siguiente comando
sudo nano /etc/mysql/my.cnf
Y en el archivo buscamos la frase con el encabezado #* InnoDB, en ese apartado simplemente quitamos el comentario (quitar la almohadilla #) de la frase
skip-innodb y salvamos el archivo.
9.Instalación de Apache y PHPComo los anteriores paquetes, Apache2 y Php vienen incluidos con la distro de debian lenny, con lo cual para una instalación básica de apache simplemente deberíamos escribir:
sudo aptitude install apache2 apache2.2-common apache2-mpm-prefork apache2-utils libexpat1 ssl-cert
Al final de la instalación veremos que pone el siguiente error:
apache2: Could not reliably determine the server's fully qualified domain name,
using 127.0.0.1 for ServerName
Es porque no hemos definido el nombre del servidor en la configuración de apache, por lo tanto deberemos abrir el archivo de configuración de apache (insisto en que es una instalación muy básica) y cambiar la linea que pone ServerName con el nombre de nuestro servidor
sudo nano /etc/apache2/apache2.conf
ServerName nombreServidor
Tras esto tan sólo tenemos que reiniciar el servidor apache
sudo apache2ctl graceful
y escribir en el navegador la dirección ip del servidor, tras lo que veremos el mensaje "It Works!"
Ya está Apache instalado, por lo tanto tán sólo nos queda instalar Php5 y todo estará casi listo. Tened en cuenta los modulos que querais instalar de Php ya que para CMS como drupal o wordpress os piden como requerimientos algunos específicos, para ello podemos buscar los modulos disponibles con el comando
sudo aptitude search php5-
Una vez elegidos los instalamos con aptitude y el nombre de los paquetes
sudo aptitude install libapache2-mod-php5 php5 php5-common php5-curl php5-dev php5-gd \
php5-imagick php5-mcrypt php5-memcache php5-mhash php5-mysql php5-pspell php5-snmp \
php5-sqlite php5-xmlrpc php5-xsl
Y reiniciamos apache para que tenga en cuenta los cambios
sudo /etc/init.d/apache2 reload
Ahora nos disponemos a comprobar la instalación de Php, para lo cual vamos a crear un archivo php llamado test en la carpeta publica por defecto de apache
sudo nano -w /var/www/test.php y añadir al archivo php el siguiente código:
Ahora salvamos y vamos a la dirección donde se encuentra el archivo con nuestro navegador (en mi caso http://67.23.29.85/test.php ) y comprobamos el resultado.
Ya tenemos nuestro servidor minimamente configurado y listo para trabajar con él. :)