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
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
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:
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
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*
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;
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