Instalar PHP, Apache y PostgreSQL en Centos 7.x

Administración de Servidores

Instalar PHP, Apache y PostgreSQL en Centos 7.x de una manera fácil y sencilla en nuestro servidor, además, instalaremos Composer y haremos una aplicación de prueba. Esto sirve también para un Centos instalado en un Droplet de DigitalOcean.

PHP es el lenguaje de programación con el cual vamos a crear nuestras páginas web y que se ejecuta en el lado del servidor. Apache nos ayuda a poder gestionar las peticiones HTTP a nuestro servidor y finalmente PostgreSQL es el administrador de base de datos OpenSource que nos ayudará a gestionar nuestras bases de datos.

Instalar PHP

Antes de poder instalar PHP, tenemos que tener instalado el repositorio EPEL 

yum install epel-release
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

Ahora si instalamos PHP. En este caso instalaremos no solo el lenguaje, sino que también, un conjunto de librerías que son necesarias si es que queremos usar un framework como Laravel.

yum install php70w php70w-mysql php70w-mcrypt php70w-dom php70w-mbstring

Para revisar la versión y que realmente haya sido instalado

php -v

Instalar Apache

Para instalar Apache, escribimos el siguiente comando

yum install httpd

Ahora solo debemos iniciar el servidor Apache

systemctl start httpd.service

Para ver si está corriendo nuestro servicio, solo vamos a nuestro navegador y escribimos la IP de nuestro servidor. Si lo instalaste localmente en tu máquina, basta con solo escribir localhost en la barra de direcciones, si es un servidor en la nube como un Droplet o un servidor local con una IOP pública, entonces:

http://your_server_IP_address/

El resultado debe ser algo como esto

Instalar PostgreSQL

Ahora, tenemos que instalar el gestor de base de datos. Usamos el comando

yum install postgresql-server postgresql-contrib

Inicializamos el cluster de la base de datos

postgresql-setup initdb

Abrimos el archivo HBA para editar la configuración del método de autentificación al final de cada línea cambiar ident por md5.

vi /var/lib/pgsql/data/pg_hba.conf

Quedaría algo como lo siguiente, recordemos que los # significan que es un comentario por lo que no causa ningún efecto modificar esas líneas, a menos que eliminemos el carácter #.

local   all             all                                     peer

host    all             all             127.0.0.1/32            md5

host    all             all             ::1/128                 md5

La primera línea se queda con peer, esto para que podamos entrar en modo interactivo usando el usuario postgres. Esto lo explicaremos más adelante.

Finalmente, iniciamos y habilitamos el servicio de postgres

systemctl start postgresql
systemctl enable postgresql

 

Ya tenemos instalado nuestro ambiente en LAPP (Linux, Apache, PostgreSQL, PHP), ya solo queda terminar de configurarlo y hacer nuestra prueba para ver que todo esté funcionando.

Antes de iniciar a cambiar las configuraciones, vamos a instalar Composer, un gestor de dependencias para PHP parecido a NPM de JavaScript, el cual, nos ayudará a gestionar mejor nuestras dependencias.

Instalar Composer

Primero, dentro de la carpeta de usuario creamos una carpeta llamada tmp y entramos a ella

mkdir tmp
cd tmp

Descargamos composer usando el comando curl

curl -sS https://getcomposer.org/installer | php

Finalmente, movemos el instalador a la carpeta donde se encuentran los binarios instalados

mv composer.phar /usr/local/bin/composer

Nos salimos de la carpeta y comprobamos que se haya instalado correctamente y que tenemos acceso global al comando

cd ..
mv composer.phar /usr/local/bin/composer

Eliminamos la carpeta tmp

rm tmp -R

Configurar roles y bases de datos en PostgreSQL

Crear un role

En PostgeSQL solo existe el concepto de roles, los cuales van ligados directamente a un usuario del sistema. Durante la instalación de Postgres, nos crea un usuario llamado postgres, con el cual, debemos entrar para poder crear nuevos roles, usando el modo interactivo

sudo -i -u postgres

Ahora entramos al usuario postgres, seguido de esto, tenemos que crear un usuario al cual le asignaremos la base de datos que crearemos y con el que nos conectaremos desde nuestra aplicación

$ createuser --interactive

Nos preguntará 3 cosas, el nombre del role, si será super usuario, si tendrá la capacidad de crear bases de datos y si tendrá la capacidad de crear nuevos roles. En mi caso a todos le puse que no, pero dependerá de las necesidades de cada uno.

Ahora, tenemos que cambiar la contraseña de nuestro usuario postgres, así que entramos al administrador de la base de datos

psql

Cambiamos la contraseña

postgres=# \password

Nos preguntará 2 veces la nueva contraseña. Seguido de esto, tenemos que modificar nuestro archivo pg_hba.conf para hacer que siempre pregunté la contraseña de nuestros usuarios

vi /var/lib/pgsql/data/pg_hba.conf

El archivo quedaría

local   all             all                                     md5

host    all             all             127.0.0.1/32            md5

host    all             all             ::1/128                 md5

Crear una base de datos

Una vez creado nuestro usuario en Postgres y en Centos, vamos a crear una base de datos. Como comentamos anteriormente, a nuestro usuario no le dimos permisos de crear bases de datos, así que entraremos con el usuario postres

sudo -i -u postgres

Creamos la base de datos

$ createdb tu_base_de_datos

Entramos al administrador de base de datos 

psql

Asignamos nuestra base de datos al usuario que creamos, lo hacemos de la siguiente manera

grant all privileges on database tu_usuario to tu_base_de_datos

Ahora, le asignamos una contraseña a nuestro usuario

alter role tu_usuario with password 'tu_password'

Configurar usuario en Centos

Finalmente, ahora solo debemos crear un usuario en Centos con permisos a la carpeta donde se guardarán nuestras aplicaciones web. Por default, Apache sitúa nuestras aplicaciones en la carpeta /var/www/html/.

Creamos un usuario y le asignamos una contraseña

adduser tu_usuario_linux
passwd tu_usuario_linux

Ahora, le asignamos permisos a la carpeta html

chown alexander:apache /var/www/html

Listo, ahora cambiamos de usuario

sudo -i -u tu_usuario_linux

Vamos a la carpeta html

cd /var/www/html

Creamos un archivo index.php de prueba

touch index.php
echo '<?php phpinfo(); ?>' >> index.php

Ahora, si vamos a nuestra barra de navegación del navegador y escribimos la IP de nuestro servidor, y todo ha salido bien, entonces veremos algo como esto

Hasta aquí hemos terminado, ahora ya podemos empezar a subir una página web para que sea mostrada, o bien, una aplicación web.