SERVIDOR
WEB EN LINUX
Walter Hidalgo Córdova
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 cuál 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
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
Walter Hidalgo Córdova
systemctl start httpd.service
systemctl enable httpd.service
Ahora comprobamos que el Apache está funcionando:
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
Walter Hidalgo Córdova
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
Comprobamos su funcionamiento en un navegador:
Walter Hidalgo Córdova
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 útiles 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
Walter Hidalgo Córdova
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
Walter Hidalgo Córdova
Luego procedemos a la instalación del paquete en el repositorio:
rpm -ivh mysql-community-release-el7-7.noarch.rpm
Si hacemos:
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:
Walter Hidalgo Córdova
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;
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
Walter Hidalgo Córdova
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
dominios en el mismo para ello vamos a configurar Apache:
El directorio donde es aconsejable guardar todas las webs será:
/var/www/html/
A partir de aquí podemos ir creando carpetas para cada web, luego tendremos
que configurar los vhosts de Apache.
Walter Hidalgo Córdova
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
Walter Hidalgo Córdova
Walter Hidalgo Córdova