Instalar un servidor web en Linux (CentOS 7)

SERVIDOR WEB EN LINUX

Un consejo, aunque creas que eres un experto de la informática y un gurú de los sistemas Linux, acostumbrate a hacer copias de los los archivos que vayas a modificar un simple (cp) te puede ahorrar mucho tiempo.

Partimos de la idea que ya tenemos una máquina física o virtual instalada con lo mínimo, y con la tarjeta de red configurada y con conexión a internet. En este caso es una distribución Linux con CentOS 7 de 64 bits, que instalamos a partir de la ISO Minimal: CentOS-7-x86_64-Minimal-1503-01.iso

Nuestro servidor será un servidor de desarrollo por lo que dejaremos un poco relajado el tema de la seguridad con Linux + Apache + MySQL+ PHP = LAMP

También vamos a suponer que estamos trabajando con el usuario root.

Que sabemos cual es la dirección de nuestra máquina (ip addr).

Lo primero que vamos a hacer es actualizar el sistema:

  • yum update

Luego instalaremos algunas herramientas básicas que utilizaremos:

  • yum install nano (a no ser que seas un fanático del vi)
  • yum install ftp
  • yum install wget

Instalación de Apache, nuestro servidor web.

Y ahora empezamos con la instalación propiamente dicha, lo primero será instalar el servidor web Apache:

  • yum install httpd

Iniciar servicio hhtpd

systemctl start httpd.service
systemctl enable httpd.service

Ahora comprobamos que el Apache está funcionando:

Pantalla de bienvenida a Apache

Sino funciona puede que se tenga activado el FirewallD (el sustituto de iptables creado por la gente de Fedora), para abrir el puerto del firewall tendremos que ejecutar:

firewall-cmd --permanent --zone=public --add-service=http
firewall-cmd --permanent --zone=public --add-service=https
firewall-cmd --reload

Ahora instalamos el lenguaje de scripts PHP:

yum -y install php

Reiniciamos el Apache para que soporte ahora PHP con la siguiente instrucción:

systemctl restart httpd.service

Y ahora creamos una pequeña página web en php.

con el editor “nano”:

nano /var/www/html/probando.php

creando una pagina en php

Comprobamos su funcionamiento en un navegador:

Comprobando funcionamiento de PHP

Instalamos ahora los módulos de PHP que nos permitirán conectarnos a una base de datos MySQL.

yum -y install php-mysql

Instalamos algunos módulos de seguridad y utiles de PHP:

yum -y install php-gd php-ldap php-odbc php-pear php-xml php-xmlrpc php-mbstring php-snmp php-soap curl curl-devel

Comprobamos que se han instalado los módulos con la instrucción:

php -m

Si queremos ver donde se ubican los ficheros de configuración de PHP:

php --ini

Algunos parámetros que se suelen modificar del fichero “/etc/php.ini” son:

post_max_size = 50M
upload_max_filesize = 100M

Reiniciamos nuevamente Apache para que funcionen los nuevos módulos

systemctl restart httpd.service

Instalación de la última versión de PHP

rpm -Uvh https://mirror.webtatic.com/yum/el6/latest.rpm

Instalación de MySQL en CentOS 7.

CentOS 7 no incluye MySQL en su repositorio en su lugar utiliza MariaDB, así que si queremos forzar la instalación de MySQL deberos descargarlo nosotros previamente

En la página web http://repo.mysql.com/ podemos ver la última versión de MySQL, en estos momentos la última release es la 7-7, por lo que nuestro comando será:

wget http://repo.mysql.com/mysql-community-release-el7-7.noarch.rpm

instalacion mysql community

Luego procedemos a la instalacion del paquete en el repositorio:

rpm -ivh mysql-community-release-el7-7.noarch.rpm

Si hacemos:

ls -1 /etc/yum.repos.d/mysql-community*

ls -1 /etc/yum.repos.d/mysql-community*

AHORA ya podemos instalar los 80 Mb de MySQL:

yum install mysql-server

Una vez terminada la instalación debemos arrancar el servicio:

systemctl start mysqld

Configuración de MySQL

Primero tratamos el tema de seguridad de la cuenta “root”

mysql_secure_installation

La clave por defecto está en blanco, así que lo primero será crear una clave para el root, luego vendrán una serie de preguntas de seguridad por si queremos conectarnos desde el exterior, etc.

Si tenemos activado el FirewallD y queremos acceder a MySQL desde el exterior debemos abrir el puerto de MySQL:

firewall-cmd --permanent --zone=public --add-service=mysql
firewall-cmd --zone=public --add-port=3306/tcp 

Si queremos que root pueda conectarse desde otros equipos:

mysql -u root -p
grant all on *.* to root@'%' identified by 'contraseña_que_sea';
flush privileges;

Permitir conexión root desde exterior

Instalación de PHPMyAdmin

Utilizaremos este software para administrar la base de datos MySQL. Los repositorios por defecto de CentOS no incluyen PHPMyAdmin así que lo primero que haremos es incluir el repositorio que si lo incluye http://pkgs.repoforge.org/rpmforge-release/ (miramos cual es el último):

rpm -iUvh http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el7.rf.x86_64.rpm
yum -y update
yum install phpmyadmin

Ahora la segunda parte sería poder acceder al phpMyAdmin desde un ordenador externo para ello hay que editar el archivo:

nano /etc/httpd/conf.d/phpMyAdmin.conf

y añadir las de bajo de las “Require ip 127.0.0.1”

Require ip 

Luego nuevamente reiniciamos el sistema:

systemctl restart httpd.service

Descarga directa de phpMyAdmin

Si no queremos modificar nuestro repositorio de paquetes y queremos descargar directamente PHPMyAdmin:

wget https://files.phpmyadmin.net/phpMyAdmin/4.5.5.1/phpMyAdmin-4.5.5.1-all-languages.tar.gz
tar -xzvf phpMyAdmin-4.5.5.1-all-languages.tar.gz

Nos creará una carpeta con todo el código de phpMyadmin.

Creando un directorio para un dominio

Una vez tenemos montado el servidor lo que nos interesa es alojar distintos dominio en el mismo para ello vamos a configurar Apache:

El directorio donde es aconsejable guardar todas las web será:

  • /var/www/html/

A partir de aquí podemos ir creando carpetas para cada web, luego tendremos que configurar los vhosts de Apache.

Permisos para apache:

las carpetas y archivos deben tener permisos de lectura para el usuario apache

Soluciones: pones todo como propietario a apache o bien aplicas los permisos correspondientes para resto de usuarios que no son el propietario:

chown -R apache:apache ./la_carpeta_que_sea
chmod -R 755 ./la_carpeta_que_sea