Professional Documents
Culture Documents
http://desarrolloweb.com/manuales/administracion-servidores-linux.html Pgina 1 de 23
Manual de administracin de servidores Linux
En este manual encontrars talleres principalmente prcticos, que te ayudarn paso por paso a
realizar toda una gama de tareas de administracin de servidores habituales en el entorno web.
http://desarrolloweb.com/manuales/administracion-servidores-linux.html Pgina 2 de 23
Manual de administracin de servidores Linux
Las siguientes personas han participado como autores escribiendo artculos de este manual.
Vicente Garca
http://desarrolloweb.com/manuales/administracion-servidores-linux.html Pgina 3 de 23
Manual de administracin de servidores Linux
Esta es una lista de comandos de Linux que vengo usando habitualmente, para el
acceso por SSH a un servidor web y la realizacin de pequeas tareas de
administracin.
No obstante, es muy importante conocer los comandos ms bsicos para poder acceder a un
servidor y hacer el deploy de aplicaciones, o estar atento de la marcha de diversos servicios,
reiniciarlos, etc. Dicho esto, aclaro que los comandos que vamos a ver son sencillos y tiles
para las tareas ms bsicas que un desarrollador puede realizar.
Tambin hay que avisar que suelo usar servidores con Debian o Ubuntu, que es una
distribucin derivada y por lo tanto es muy similar.
El comando es "ssh" y sigue de la direccin IP, o dominio, del servidor que deseas acceder.
ssh dominio.example.com
http://desarrolloweb.com/manuales/administracion-servidores-linux.html Pgina 4 de 23
Manual de administracin de servidores Linux
Lo que ocurre con este comando a secas es que te conecta con el nombre de usuario que tienes
en tu mquina local, por lo que generalmente necesitas indicarle un nombre de usuario en
concreto:
ssh root@0.0.0.1
Una vez dentro del servidor puedes escalar tu usuario a root con:
sudo su
Muchos comandos como los que veremos a continuacin para el mantenimiento del servidor,
necesitan que ests logueado con permisos de "root".
Si administras o usas un servidor, una de las cosas ms importantes que debes hacer es
mantenerlo actualizado. Muchas de los updates que se publican en el software libre de tu
servidor (ya sea el propio sistema operativo o los programas que tengas instalados) son
muchas veces actualizaciones de seguridad, por lo que es importante instalarlas todas.
apt-get update
Con eso consigues actualizar los repositorios, para que tu servidor sepa realmente lo que tiene
http://desarrolloweb.com/manuales/administracion-servidores-linux.html Pgina 5 de 23
Manual de administracin de servidores Linux
apt-get upgrade
Este segundo comando sirve para instalar las actualizaciones disponibles para tu sistema,
tanto el propio sistema operativo como los programas que tengas instalados mediante los
repositorios.
Nota: apt-get funciona para las distribuciones basadas en Debian (Ubuntu, Mint, el propio
Debian) otras distros como CentOS usan el comando "yum". Supongo que habr ms
gestores de paquetes pero no los he usado.
A veces, a pesar de hacer un apt-upgrade se quedan algunos paquetes sin instalar. Entonces
usas:
Es normal que cuando entras en un servidor por primera vez no dispongas de algunos
comandos bsicos que sueles usar, como el que lanza el editor Vim, o Nano, Git, etc. En ese
caso debes simplemente instalar estos programas usando los repositorios, con el mismo apt-
get (o el gestor de paquetes que se use en tu sistema).
apt-get vim
Apagados o reinicios
A veces necesitas reiniciar la mquina, o apagarla. Tambin es sencillo via ssh.
reboot
http://desarrolloweb.com/manuales/administracion-servidores-linux.html Pgina 6 de 23
Manual de administracin de servidores Linux
Ojo con el comando shutdown, que te puede apagar el servidor y no te lo vuelve a arrancar.
Quizs tengas que entrar en el manager de tu servidor, en la pgina web del proveedor donde
lo gestiones, para volverlo a arrancar
shutdown -h now
shutdown -r now
Cuando se reinicia la mquina generalmente se saldr de tu conexin ssh y tendrs que volver
a conectarte pasado un minuto o dos, usando el comando ssh de nuevo.
Servicio Nginx
Si usas Nginx puedes reiniciar el servicio con:
Nota: Recuerda usar "sudo systemctl start nginx" o bien asegurarte de ser root o haber
escalado a superusuario. Asi mismo, para reiniciar tambin podras hacer primero un
comando stop y luego uno start.
Servicio de Apache
Si usas Apache, entonces podrs reiniciar el servicio con este comando: (recuerda usar sudo o
http://desarrolloweb.com/manuales/administracion-servidores-linux.html Pgina 7 de 23
Manual de administracin de servidores Linux
ser superusuario).
/etc/init.d/apache2 restart
De la misma manera, puedes hacer primero un "stop" y luego un "start", que sera el
equivalente a un "restart".
Servicio MySQL
Otro de los servicios que se puede trabar y hacer que tu web funcione de repente muy lenta es
MySQL. En estos casos tambin un reinicio suele ser "mano de santo".
/etc/init.d/mysqld restart
Como alternativa:
Conclusin
Con esto acabamos con la lista bsica de comandos para acceso a un servidor y su
mantenimiento, para las acciones ms sencillas que puedas llegar a necesitar. Haremos otras
recopilaciones de comandos en el futuro que estamos seguros que te resultarn tambin de
mucha utilidad. Puedes consultar todo en el Manual de Introduccin a Linux.
http://desarrolloweb.com/manuales/administracion-servidores-linux.html Pgina 8 de 23
Manual de administracin de servidores Linux
Una vez que el servidor este disponible podremos acceder por SSH. Nada mas conectar
podremos empezar con la siguiente configuracin:
NETWORKING=yes
HOSTNAME=minombre
http://desarrolloweb.com/manuales/administracion-servidores-linux.html Pgina 9 de 23
Manual de administracin de servidores Linux
#yum update
Si queremos que al instalar los grupos, que veremos mas adelante, se instalen tambin los
paquetes opcionales, aadiremos entonces en el fichero "/etc/yum.conf" la siguiente lnea:
group_package_types=mandatory,default,optional
Esto instala los mnimos paquetes para desarrollo. Si queremos instalar todos ellos, podremos
hacerlo ejecutando el siguiente comando:
Si antes de instalarlos queremos slo ver los paquetes que contiene el grupo de desarrollo,
ejecutamos la siguiente lnea:
4) Instalamos PHP
Con el siguiente comando instalamos todo lo necesario:
Puede que nos falte alguna cosa, as que podemos correr la siguiente lnea para completar la
instalacin de PHP:
Seguidamente, podemos configurar la zona horaria predeterminada usada por las funciones
"date" y "time", para ello en el fichero "/ etc/php.ini" aadimos la siguiente lnea:
date.timezone = "Europe/Madrid"
Como hemos dicho, si antes de instalar queremos ver todos los paquetes que contiene este
grupo, haramos "groupinfo" en lugar de "groupinstall".
Podemos completar la instalacin del servidor Apache instalando las libreras de desarrollo:
#httpd -v
Hay que decir que cualquier fichero con extensin .conf que coloquemos en el directorio
"/etc/httpd/conf.d" ser procesado por el servidor Apache. Tener en cuenta que los procesa
por orden alfabtico. Si hacemos un cambio en alguno de estos ficheros o aadimos uno nuevo,
hay que recargar para que el servidor recoja los cambios y para ello hacemos:
ServerName localhost
Tambin es recomendable eliminar la pgina de prueba que nos instala el servidor. Para ello
editamos el fichero /etc/httpd/conf.d/welcome.conf y comentamos todas las lneas, quedando
de la siguiente manera:
#<LocationMatch "^/+[[--body--]]quot;>
#Options -Indexes
#</LocationMatch>
Si queremos utilizar servidores virtuales (virtual hosts) y tener los ficheros organizados,
podemos crearnos un fichero llamado por ejemplo "vhosts.conf" que contenga nuestros virtual
hosts y colocar el fichero en "/etc/httpd/conf.d". El fichero quedara con un contenido
http://desarrolloweb.com/manuales/administracion-servidores-linux.html Pgina 11 de 23
Manual de administracin de servidores Linux
parecido al siguiente:
NameVirtualHost [IP]:80
<VirtualHost [IP]:80>
ServerName www.midominio.com
DocumentRoot /var/www/html/midominio.com/www
ErrorLog /etc/httpd/logs/midominio.com.error_log
</virtualhost>
Sustituir [IP] por tu IP pblica y midominio por el dominio que quieras dar servicio.
Si queremos que el servicio se inicie al arrancar nuestra mquina, podemos habilitarlo con:
#chkconfig httpd on
http://desarrolloweb.com/manuales/administracion-servidores-linux.html Pgina 12 de 23
Manual de administracin de servidores Linux
**
1) Instalacin de MySQL
Tal y como hicimos con Apache, instalamos MySQL de manera similar, es decir:
Esto instalar el paquete mysql-server necesario para ejecutar el servidor de base de datos. A
continuacin instalamos las herramientas del cliente MySQL con:
Por cierto, el editor que suelo utilizar en el terminal es nano. No es tan potente como Vim o
Emacs pero para ediciones sencillas, como en estos casos, es ms que suficiente y su uso es
muy simple: al editar cualquier fichero podemos ver en las dos lneas de abajo la ayuda.
http://desarrolloweb.com/manuales/administracion-servidores-linux.html Pgina 13 de 23
Manual de administracin de servidores Linux
#nano /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
symbolic-links=0
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
Lo siguiente que debemos hacer es ponerle la clave al usuario root de MySQL, as como
eliminar la base de datos test y el usuario annimo que se instalan por defecto. Para ello
arrancamos el servicio con:
#/usr/bin/mysql_secure_installation
Despus de contestar a una serie de preguntas que nos hace, ya tendremos nuestro servidor
MySQL instalado y ejecutndose. Es recomendable poner que se inicie al arrancar nuestra
mquina Linux, para ello basta con hacer:
#chkconfig mysqld on
Si queremos ver la informacin de los servicios del sistema y comprobar que los que hemos
instalado hasta ahora se inician al arrancar la mquina, podemos hacerlo ejecutando:
#chkconfig --list
En este punto podremos ver los servicios httpd y mysqld configurados en los niveles 2, 3, 4 y 5.
http://desarrolloweb.com/manuales/administracion-servidores-linux.html Pgina 14 de 23
Manual de administracin de servidores Linux
Actualmente existen varios servidores de FTP que podemos instalar en nuestro sistema. En
nuestro caso hemos optado por instalar ProFTPD, ya que es bastante estable y seguro.
Lo primero es asegurarnos de que no tenemos ya instalado otro servidor FTP, como pudiera
ser vsftpd; en tal caso habra que eliminarlo con:
Si queremos instalar proftpd con yum debemos habilitar EPEL, que es un repositorio con
paquetes adicionales. Lo habilitamos de la siguiente manera:
DefaultRoot ~
#Para ocultar . y ..
AllowRetrieveRestart on
AllowStoreRestart on
Arrancamos el servicio:
#chkconfig proftpd on
En este punto ya tendramos el servidor listo para empezar a funcionar, pero antes de nada lo
recomendable es asegurarlo. Aqu hay algunas cosas que hacer, pero para no alargar
demasiado el artculo comento un par de puntos importantes para hacer ya mismo:
Si contamos con un firewall lo ideal es utilizarlo y cerrar todos los puertos excepto los
que vayamos a utilizar: 80(http), 443(https), 20, 21(ftp), 22(ssh),
Si accedemos a nuestra mquina por ssh podemos aadir una regla a las iptables para
restringir el acceso por IP, lo mismo para el ftp (sustituimos las Xs por nuestra IP):
http://desarrolloweb.com/manuales/administracion-servidores-linux.html Pgina 15 de 23
Manual de administracin de servidores Linux
#/sbin/iptables --flush
#/etc/rc.d/init.d/iptables save
Esta segunda parte del artculo completa lo que sera la instalacin y configuracin de nuestro
servidor web. S que se puede profundizar mucho mas en cada uno de estos puntos, pero el
objetivo era hacer una gua breve y sencilla para poder comenzar a trabajar con el servidor.
http://desarrolloweb.com/manuales/administracion-servidores-linux.html Pgina 16 de 23
Manual de administracin de servidores Linux
Gua para Instalar un certificado SSL gratuito de Lets Encrypt sobre un sitio web
con el servidor Apache y sistema operativo Linux con Debian.
Google est haciendo una campaa muy fuerte, desde hace aos, para que todos los
administradores de webs mudemos de http para https. Es sin duda una buena idea, pero
tradicionalmente tener un servidor por https era una complicacin, por diversos motivos.
Entre ellos la propia instalacin de los certificados o el pago peridico a entidades de
certificacin para mantenerlos. Afortunadamente gracias a Let's Encrypt esta situacin ha
pasado a la historia.
Actualmente no existen desventajas o complicaciones por las que no puedas hacerte en unos
minutos con tu propio certificado SSL y configurarlo en tu servidor. Adems completamente
gratuito, gracias a la entidad certificadora Let's Encrypt, que ofrece la posibilidad de generar
los certificados automticamente por nosotros mismos, sin la necesidad de depender de nadie
ms.
Todos los interesados, dedicando un poco de tiempo, podemos hacer las tareas necesarias para
migrar a https. Solo necesitas acceso a tu servidor por lnea de comandos mediante SSH.
Deben existir decenas o cientos de configuraciones. Yo voy a explicar cmo lo he hecho yo en
un servidor Linux Debian con Apache, para DesarrolloWeb.com.
Nota: Aunque para hacer esto no necesitas ser administrador de sistemas (Yo mismo no
soy sysadmin), alguna cosa doy por sabida. Bsicamente se trata de entrar por SSH y
realizar los comandos bsicos.
http://desarrolloweb.com/manuales/administracion-servidores-linux.html Pgina 17 de 23
Manual de administracin de servidores Linux
El primer paso consiste en instalar certbot en tu servidor. Esto es fcil porque en la propia
pgina de certbot explican cmo hacerlo para una gran cantidad de configuraciones posibles.
Debian 8 (jessie)
Lo que pasa es que antes debes agregar los repositorios jessie-backports. Es una accin
adicional que tendrs que procesar, si no la has hecho antes con algn otro software. El tema
de activar los repositorios jessie-backports est explicado en
https://backports.debian.org/Instructions/ pero bsicamente se trata de aadir una lnea a un
archivo. Entra en la carpeta "/etc/apt/sources.list.d" y tienes que crear un archivo con
extensin .list, algo como "jessie-backports.list". Dentro colocas el cdigo:
Debian 7 (wheezy)
http://desarrolloweb.com/manuales/administracion-servidores-linux.html Pgina 18 de 23
Manual de administracin de servidores Linux
Para la versin anterior de Debian el procedimiento es un poco diferente. Tienes que obtener
una copia del ejecutable certbot-auto como este comando:
wget https://dl.eff.org/certbot-auto
En el caso de Debian 8, donde s existe certbot como paquete para el sistema, habrs
instalado el comando "certbot". Como todo comando, simplemente lo escribes en la
consola y listo.
En el caso de Debian 7, donde no existe cerbot en los repositorios, entonces te has
descargado el ejecutable "certbot-auto". Para ejecutarlo tienes que escribir la ruta a
donde has descargado ese ejecutable: "./ruta/a/certbot-auto
Sea el caso que sea no habr mucha diferencia de cmo vas a generar los certificados, pero el
comando es ligeramente distinto. Enseguida veremos las diferencias.
certbot --apache
Para Debian 7 ejecutas (suponiendo que ests situado en la misma carpeta donde est el
ejecutable certbot-auto):
./certbot-auto --apache
http://desarrolloweb.com/manuales/administracion-servidores-linux.html Pgina 19 de 23
Manual de administracin de servidores Linux
El comando certbot, o certbot-auto, tambin puede generar los certificados y dejarlos en una
carpeta de tu sistema, con lo que consigues tu objetivo igualmente. Lo que pasa es que luego
tendrs que configurar a mano el virtual host de Apache. Veremos este proceso ahora.
Bsicamente estamos indicando la ruta del directorio raz de publicacin (document root) y
luego los dominios que deben asociarse al certificado. en mi caso se puede acceder al dominio
con las "www" y sin ellas, por eso se colocan dos dominios.
Para Debian 7 la cosa es casi idntica, solo que usas certbot-auto y su path.
Al procesar ese comando debes encontrar una salida que comprueba los dominios y te va
informando del proceso. Algo como esto:
http://desarrolloweb.com/manuales/administracion-servidores-linux.html Pgina 20 de 23
Manual de administracin de servidores Linux
Configurar Apache
Ahora toca configurar Apache, editando el archivo de los host virtuales (virtualhost).
cd /etc/apache2/sites-available/
Una vez all tendras que localizar la configuracin del Virtual Host para el dominio al que le
has generado el certificado. Usa tu editor preferido de consola, para mi es "Vim", pero muchos
prefieren "Nano" por ser ms sencillo.
vim desarrollowebcom
Encontrars la configuracin para el Host virtual en el puerto 80. Se trata de copiar y pegar esa
configuracin y crearla para el puerto 443 que es el de HTTPS.
http://desarrolloweb.com/manuales/administracion-servidores-linux.html Pgina 21 de 23
Manual de administracin de servidores Linux
Buscas:
<VirtualHost *:80>
Copias y pegas todo lo que hay entre esa etiqueta y su cierre, y editas el puerto.
<VirtualHost *:443>
Para la parte del SSL tienes que meter las siguientes instrucciones adicionales:
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/www.desarrolloweb.com/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/www.desarrolloweb.com/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/www.desarrolloweb.com/chain.pem
En ese cdigo es donde tienes que colocar las rutas a la carpeta adecuada de tu servidor donde
se han generado los certificados. Obviamente no vas a colocar nuestro nombre de dominio ;)
Adems, para el virtualhost del puerto 80 querrs generalmente agregarle estra otra
instruccin, que permite que todo el trfico generado para HTTP se redirija a HTTPS.
Con eso ya est todo, pero tenemos que reiniciar Apache. Para asegurarte de no romper nada
antes ejecutars el comando:
apache2ctl -t
Las cosas que pueden funcionar mal en este punto son fciles de identificar con la salida de
este comando. Una de ellas es que tengas soporte para SSL en el servidor.
Adems, si hay algn error en la ruta de los certificados te lo advertir. Simplemente ten
cuidado de copiar y pegar bien las rutas que encontraste al generar el certificado con certbot.
En el momento que te diga "Syntax OK" puedes reiniciar Apache. En mi caso lo hago con el
comando:
/etc/init.d/apache2 restart
http://desarrolloweb.com/manuales/administracion-servidores-linux.html Pgina 22 de 23
Manual de administracin de servidores Linux
Pero si no es as, no desesperes, quizs tengas que solucionar alguna cosa de tu cdigo.
Bsicamente lo que nos pasa a nosotros en muchas pginas es que estamos accediendo a
recursos por http en lugar de https.
Nota: Tu sitio HTTPS debe acceder a todo contenido externo tambin por HTTPS, si usas
http para acceder a scripts, imgenes, fonts, etc. Entonces Chrome te alertar y no vers el
mensaje correspondiente de sitio seguro.
En caso que no obtengas el aviso de sitio seguro abre la consola de desarrolladores para ver los
errores que encuentras. Puede que veas algo como esto:
Solo tienes que resolver las rutas que estn dando problemas por tener acceso a recursos no
seguros. Seguramente despus de resolver eso puedas dar por finalizada la tarea con xito.
Solo te queda configurar las renovaciones automticas del certificado, pero eso te lo contar en
un artculo en breve. Es una tarea importante, dado que el certificado dura tan solo 3 meses.
http://desarrolloweb.com/manuales/administracion-servidores-linux.html Pgina 23 de 23