Instalación, configuración y optimización de LAMPF (Linux-Apache-MySQL-PHP-FTP)

Adara Seguir

Gamma
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
24 Ago 2011
Mensajes
252
Instalación y puesta en parcha de un servidor.



La instalación de un servidor para vuestra página (ya pueda ser un servidor dedicado o un VPS) es la mejor opción cuando el alojamiento compartido se queda pequeño y ante la administración de un servidor podemos tirarnos de los pelos (como es normal) por ello creo una guía que os va a servir muchísimo para orientaros precisamente en este tema.

¿Qué distribución instalo en mi VPS o servidor dedicado?

Básicamente todas son viables siguen siendo Linux (Sistema de ficheros + kernel (núcleo) la diferencia exponencial es la forma de configuración/mantenimiento y paquetes.

Vale pero...¿Cual es la que mejor se adaptará a mi?

CentOS es un clon de Red Hat (la distribución más antigua y con más excelencia) ya que la utiliza empresas muy importantes como Telefónica, Ono IBM, Sabadell, BBVA....Es algo compleja cuando quiere ponerse cabezona dicha distribución pero al fin y al cabo da un rendimiento inmejorable. (A diferencia de Red Hat, CentOS es gratuito y soportado por la comunidad)

Debian es una muy buena distribución que se ha confirmado que ninguna empresa estar por detrás en su desarrollo, es una de las distribuciones más estables hasta el día de hoy pero su actualización no es continuada si no que se publican nuevas versiones del sistema operativo cada bastantes años, esto no es un punto negativo para nada, eso es que en la versión que trae instalada viene por defecto un plus de estabilidad.

Ubuntu basado en Debian es una muy buena distribución que a diferencia de Debian, Ubuntu saca nuevas versiones cada 6 meses con el último software, por lo que Ubuntu digamos que tiene las últimas funcionalidades y mejoras (esta distribución es la más sencilla pero no por ello ineficaz) ya que hay muchísimas guías por internet y mucho soporte por Canonical (su empresa) y la comunidad.

Ya me he decidido o eso creo...¿Ahora que?

Ahora toca la instalación, por ahora deberás saber que Debian, Ubuntu y otros derivados sus paquetes de instalación terminan con la extensión .deb. Red Hat en cambio tiene otra extensión y es .rpm. Al fin y al cabo son paquetes de instalación para cada distribución nada más. (En Windows por ejemplo podríamos asemejarlo a .exe o .msi son los dos paquetes de instalación o ejecutables)


Instalación de los paquetes necesarios


Para empezar con la instalación se requerirá mínimo las siguientes características:

  • Un procesador (o vCore en caso de VPS) de un minimo de 800 Mhz
  • 256 MB de RAM (Se recomienda minimo 1024 MB de RAM)
  • 10 GB de disco duro
  • Conexión a internet
A la vez que voy explicando la guía pondré en negrita para que sistema operativo es el que lo estoy dictando pondré RPM/DEB como deberéis haber leído lo que he escrito antes sabréis a que va referido cada paquete.

Actualización del sistema operativo:

Cuando termine de actualizar los repositorios, actualizar los nuevos paquetes y actualizar la versión ya estaremos listos para instalar todo.

Debian/Ubuntu:

Insertar CODE, HTML o PHP:
sudo apt-get update
Insertar CODE, HTML o PHP:
sudo apt-get upgrade
Insertar CODE, HTML o PHP:
sudo apt-get dist-upgrade

Red Hat/CentOS:

Aquí si queréis instalar MySQL 5.5/PHP 5.3/Apache 2.2.20 tendréis que instalar un repositorio a parte para cuando sigáis la lista os instale las últimas versiones, para instalarlo

Insertar CODE, HTML o PHP:
rpm -Uvh http://download.powerstack.org/powerstack-release-0-2.noarch.rpm


Insertar CODE, HTML o PHP:
yum -y update
Insertar CODE, HTML o PHP:
yum -y upgrade
Insertar CODE, HTML o PHP:
yum -y distclean

Instalación de Apache y librerías necesarias:

En este paso instalaremos apache con las librerías necesarias para el funcionamient ocorrecto de los servicios que queremos.

Debian/Ubuntu:

Insertar CODE, HTML o PHP:
sudo apt-get install apache2 apache2-dev apache2-utils apache2.2-bin apache2.2-common libapache2-mod-auth-mysql libapache2-mod-php5 libapache2-mod-suphp

Red Hat/CentOS:

Insertar CODE, HTML o PHP:
yum -y install httpd openssl httpd-devel httpd-tools

PD: Por defecto el servicio de apache en CentOS no se activa por defecto al reiniciar el sistema por lo que lo tenemos que activar con este comando.

Insertar CODE, HTML o PHP:
service httpd start
Insertar CODE, HTML o PHP:
chkconfig httpd on



Creación de un usuario en el servidor que se localizará la carpeta en /home
Insertar CODE, HTML o PHP:
sudo adduser
NameVirtualHost *:80

Instalación de MySQL y librerías.

En este caso instalaremos el MySQL con sus librerías correspondientes y asignaremos una contraseña. En Ubuntu nada más instalarlo te pedirá que ingreses la contraseña en CentOS es manual.

Debian/Ubuntu:

Insertar CODE, HTML o PHP:
sudo apt-get install mysql-server mysql-client mysqltuner

Red Hat/CentOS:

Insertar CODE, HTML o PHP:
yum -y install mysql mysql-server mysqltuner

Para configurar la contraseña deberéis hacer lo siguente:

Insertar CODE, HTML o PHP:
mysqladmin -u root password vuestra_contraseña

Y activar el servicio que se active al reiniciar:

Insertar CODE, HTML o PHP:
service mysqld start
Insertar CODE, HTML o PHP:
chkconfig mysqld on

Instalación de phpmyadmin.

Este paso es bastante sencillo ya que es un simple comando instalaréis phpMyAdmin y configurado nada más hacerlo.

Debian/Ubuntu:

Insertar CODE, HTML o PHP:
sudo apt-get install phpmyadmin

(Os pedirá la configuración durante el proceso de instalación)

Red Hat/CentOS:

Insertar CODE, HTML o PHP:
yum -y install phpmyadmin

(Al ser un script en PHP este no ha de activarse nada más que instalarlo)

Instalación de PHP5 con las extensiones adecuadas.

Instalar PHP5 con las dependencias necesarias para vBulletin y otros scripts como por ejemplo XenForo...phpBB...etc.

Debian/Ubuntu:

Insertar CODE, HTML o PHP:
sudo apt-get install php5 php5-cgi php5-dev php5-mysql php5-xls php5-mycrypt php5-gd php5-xcache php5-xdebug

Red Hat/CentOS:

Insertar CODE, HTML o PHP:
yum -y install php php-cgi php-devel php-gd php-mysql php-xls php-mycrypt

La instalación de xCache en CentOS tiene que se manual dbembibre lo hizo muy bien aquí -> Instalar xCache.


Creación de un VirtualHost en Apache.

La creación de un VirtualHost en apache es tan simple como crear el directorio y configurarlo para que cuando se acceda por el dominio vaya a dicha localización. Deberéis seguir los siguientes pasos

Debian/Ubuntu:
- Creación de un usuario del sistema para la web
Insertar CODE, HTML o PHP:
sudo adduser nombre_de_usuario

- Entramos al directorio del usuario y creamos las carpetas raíces
Insertar CODE, HTML o PHP:
cd /home/nombre_de_usuario/

- Una vez dentro crearemos los directorios adecuados al mismo
Insertar CODE, HTML o PHP:
mkdir www
,
Insertar CODE, HTML o PHP:
mkdir subdominios
,
Insertar CODE, HTML o PHP:
mkdir logs

- No iremos a la carpeta de los virtualhost de apache que se localiza en
Insertar CODE, HTML o PHP:
cd /etc/apache2/sites-available

- Deberemos crear un VirtualHost por defecto
Insertar CODE, HTML o PHP:
sudo nano nombre_de_tu_web_principal

Insertar CODE, HTML o PHP:
<VirtualHost *:80>
ServerAdmin administracion@tu_dominio.com
ServerName www.tu_dominio.com
DocumentRoot /homenombre_de_usuario/www/
ErrorLog /home/nombre_de_usuario/logs/Error.log
TransferLog /home/nombre_de_usuario/logs/Transferencia.log
ServerAlias tu_dominio.com
</VirtualHost>

- Luego simplemente hacemos Control + o y se guardará el archivo automáticamente, posteriormente Control + X y se cerrará el editor.

- Activaremos el virtualhost con el siguiente comando
Insertar CODE, HTML o PHP:
sudo a2ensite nombre_de_tu_web_principal

- Recargamos apache para que adquiera la configuración base del nuevo VirtualHost
Insertar CODE, HTML o PHP:
service apache2 reload

- ¡Listo! ahora desde el navegador meteremos nuestra dirección http://tu_dominio.com y veréis como os sale Apache pero sin ningún archivo ya que la carpeta www está vacía.

Red Hat/CentOS:
- Creación de un usuario del sistema para la web
Insertar CODE, HTML o PHP:
adduser nombre_de_usuario

- Ponemos una contraseña al usuario del sistema para la web
Insertar CODE, HTML o PHP:
passwd nombre_de_usuario

- Entramos al directorio del usuario y creamos las carpetas raíces
Insertar CODE, HTML o PHP:
cd /home/nombre_de_usuario/

- Una vez dentro crearemos los directorios adecuados al mismo
Insertar CODE, HTML o PHP:
mkdir www
,
Insertar CODE, HTML o PHP:
mkdir subdominios
,
Insertar CODE, HTML o PHP:
mkdir logs

- No iremos a la carpeta de los virtualhost de apache que se localiza en
Insertar CODE, HTML o PHP:
cd /etc/httpd/conf/

- Deberemos editar el archivo httpd.conf y en el final poner el VirtualHost
Insertar CODE, HTML o PHP:
nano httpd.conf

Insertar CODE, HTML o PHP:
<VirtualHost *:80>
ServerAdmin administracion@tu_dominio.com
ServerName www.tu_dominio.com
DocumentRoot /homenombre_de_usuario/www/
ErrorLog /home/nombre_de_usuario/logs/Error.log
TransferLog /home/nombre_de_usuario/logs/Transferencia.log
ServerAlias tu_dominio.com
</VirtualHost>

- Luego simplemente hacemos Control + o y se guardará el archivo automáticamente, posteriormente Control + X y se cerrará el editor.

- Reiniciamos apache para que adquiera la configuración base del nuevo VirtualHost
Insertar CODE, HTML o PHP:
service apache2 restart

- ¡Listo! ahora desde el navegador meteremos nuestra dirección http://tu_dominio.com y veréis como os sale Apache pero sin ningún archivo ya que la carpeta www está vacía.

Si queréis crear subdominios es el mismo proceso pero a diferencia que en el VirtualHost en la parte DocumentRoot deberá ir a la carpeta /subdominios y en ServerName/ServerAlias el subdominio.



Instalación de un servidor FTP.

Todo alojamiento necesita su servidor FTP para subir los archivos necesarios para la instalación de los scripts entre otras cosas. En este caso instalaremos ProFTPD.

Debian/Ubuntu:

Insertar CODE, HTML o PHP:
sudo apt-get install proftpd

Red Hat/CentOS:

Insertar CODE, HTML o PHP:
yum -y install proftpd

Activación del servicio tras la instalación.

Insertar CODE, HTML o PHP:
service proftpd start
Insertar CODE, HTML o PHP:
chkconfig proftpd on

Ahora iremos al directorio de configuración de ProFTPD para enjaular al usuario en su propio directorio y que no pueda ir de directorio en directorio.

Insertar CODE, HTML o PHP:
cd /etc/
Insertar CODE, HTML o PHP:
nano proftpd.conf

Debemos descomentar la línea
Insertar CODE, HTML o PHP:
DefaultRoot
y sustituirla por
Insertar CODE, HTML o PHP:
DefaultRoot                     ~ !adm

Guardamos el archivo y reiniciamos el proceso
Insertar CODE, HTML o PHP:
service proftpd restart

¡Servidor FTP listo para acceder, los datos de acceso serán la IP del VPS/servidor el usuario creado con Apache y la contraseña del mismo!

AVISO: Por dicho FTP no es accesible el usuario root.


Seguridad del servidor

  • SSH
Miles de ataques son provistos por tener los puertos por defecto, la mejor forma en estos aspectos es cambiarlos por puertos que no sean ocupados por ningún proceso pero que nos lo inventemos nosotros, un proceso vulnerable en este por ejemplo es el SSH (el método de conexión al servidor)

Deberemos ir a la carpeta de SSH

Insertar CODE, HTML o PHP:
cd /etc/ssh/

Editar el archivo sshd_config

Insertar CODE, HTML o PHP:
nano sshd_config

Cambiar el dato
Insertar CODE, HTML o PHP:
#Port 22
a
Insertar CODE, HTML o PHP:
Port 2222

Yo he puesto el 2222 como puedo poner 3982 que ningun proceso conocido utiliza dicho puerto, como queráis, guardáis el archivo y reiniciamos el demonio.

Insertar CODE, HTML o PHP:
service sshd restart

¡Ahora cuando nos conectemos no podremos con el 22 si no con el 2222!

  • Firewall

Cualquier servidor conectado a internet debe tener unas medidas de seguridad claves que son necesarias para que no ocurran mayores problemas/desgracias, en primera estancia instalaremos un Firewall muy potente llamado CSF+LPD. (Este proceso es genérico vale para cualquier OS)

Entramos en el directorio temporal:

Insertar CODE, HTML o PHP:
cd /tmp

Descargamos el programa.

Insertar CODE, HTML o PHP:
wget http://configserver.com/free/csf.tgz

Descomprimimos el archivo:

Insertar CODE, HTML o PHP:
tar xvzf csf.tgz

Entramos en el directorio e instalamos.

Insertar CODE, HTML o PHP:
cd csf
Insertar CODE, HTML o PHP:
sh install.sh

¡Ya estaría instalado! pero todavía no está activado ahora hay que configurarlo, para ello deberemos ir a
Insertar CODE, HTML o PHP:
cd /etc/csf/
y posteriormente deberemos editar el archivo csf.conf
Insertar CODE, HTML o PHP:
nano csf.conf

Buscamos la linea

Insertar CODE, HTML o PHP:
TESTING = "1"

Y la cambiamos a ya que cuando reiniciemos el proceso del Firewall se activará, por defecto vienen activados los puertos para web, y demás si quieres activar alguno más deberás editar el TCP_IN TCP_OUT UDP_IN UDP_OUT.

Insertar CODE, HTML o PHP:
TESTING = "0"


  • OSSEC (Seguridad completamente adicional)
Hay gente que la seguridad juega un papel muy importante en sus vidas y por eso mismo estoy brindando esta gran herramienta de protección de seguridad de Trend Micro llamada OSSEC

Descargamos la aplicación en el directorio temporal.

Insertar CODE, HTML o PHP:
cd /tmp
Insertar CODE, HTML o PHP:
wget http://www.ossec.net/files/ossec-hids-2.6.tar.gz

Descomprimimos la aplicación.

Insertar CODE, HTML o PHP:
tar xvzf ossec-hids-2.6.tar.gz

Entramos en el directorio de la aplicación

Insertar CODE, HTML o PHP:
cd ossec-hids-2.6/

Instalamos la aplicación, la aplicación actúa de la forma (siguiente, siguiente, siguiente) incluso está en español, para lanzar la instalación es tan fácil como.

Insertar CODE, HTML o PHP:
sh install.sh

El servicio de activará automáticamente tanto en Ubuntu/CentOs entre otros es una buena aplicación de seguridad, pero algo estricta con algunas operaciones por lo que si actua de forma rara ya sabéis por que, y aviso cuando os pide la intensidad de la seguridad, poner media baja no la pongáis extrema por que podréis tener problemas luego.

Llevo dos horas escribiendo la guía voy a darme un respiro y después me pondré con la optimización PHP/MySQL/Apache.... :p
¡Espero que os haya gustado mi guía y si encontráis un error no dudéis en decirmelo...




Un Saludo.

Adara.​
 

Khriz

Delta
Verificado por Whatsapp
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
18 Mar 2011
Mensajes
521
Excelente Guía,

Queda adherida a la sección!

;)
 

robert66

Gamma
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
14 Ene 2008
Mensajes
227
Buena guia aunque centos tambien lo actualizan cada 6 meses, de hecho ya van por el 6 y en cuanto a seguridad aparte de esconder las versiones y si no tenemos mucha idea por CSF e iptables, que ademas te ofrece un interface grafico muy manejable para cpanel, para webmin, direcadmin, etc.

saludos
 

Adara

Gamma
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
24 Ago 2011
Mensajes
252
Buenas,

No la he terminado todavía pero escribiendo dos horas cansa :) por eso ahora más tarde o mañana la terminaré con más calma, CentOS sale una versión (pero sin cambios pertinentes/incompatibilidades de binarios) versiones rutinarias 6.x. Las versiones liberadas 5 / 6 salen cada 4 - 5 años ya que depende principalmente de RHEL que sigue con la misma política.

Un saludo.
 
Arriba