Cómo instalar la pila de Apache, MariaDB y PHP (FAMP) en FreeBSD


Esta guía describirá cómo instalar y configurar FBAMP en el sistema operativo FreeBSD, que es similar a una pila de LAMP en Linux. FBAMP es un acrónimo que significa una colección de software basada en el sistema operativo FreeBSD, Apache HTTP , el servidor web de código abierto más popular de Internet, MariaDB sistema de gestión de base de datos relacional ( RDBMS ), una bifurcación de MySQL motor de base de datos, y PHP del lado del servidor.

Requerimientos

  1. A fresh installation of FreeBSD
  2. FreeBSD Initial Configurations
  3. Direct console access or SSH in case of a remote connection to FreeBSD.
  4. A static IP Address configured on a Network Interface.

Paso 1: Instalar Apache en FreeBSD

1. El primer servicio que instalaremos es el servidor Apache HTTP . De forma predeterminada, FreeBSD ofrece varias versiones con diferentes módulos de trabajo de tiempo de ejecución para el servidor web Apache.

Las versiones están precompiladas en un paquete binario y son proporcionadas por los repositorios FreeBSD PORTS . Para mostrar todos los binarios de paquetes de Apache proporcionados por PUERTOS , emita el siguiente comando.

# ls /usr/ports/www/ | grep apache

También puede buscar paquetes de Apache precompuestos disponibles en FreeBSD emitiendo el siguiente comando.

# pkg search apache2

2. A continuación, instale la última versión del servidor HTTP Apache con todos los módulos necesarios emitiendo el siguiente comando.

# pkg install apache24

3. Después de instalar el servidor web Apache en el sistema, ejecute el siguiente comando para habilitar el demonio en todo el sistema en FreeBSD.

# sysrc apache24_enable="yes"

Un método alternativo para habilitar el daemon de Apache sería editar y agregar manualmente la línea apache24_enable = yes en /etc/rc.conf como se ilustra en la siguiente captura de pantalla.

4. Finalmente, para probar si el servidor web funciona correctamente, inicie el daemon de Apache emitiendo el siguiente comando y visite la página web predeterminada apuntando un navegador a la dirección IP de su servidor de FQDN ( http:/IP-orFQDN ) como se muestra en la siguiente captura de pantalla.

# service apache24 start

El directorio webroot predeterminado del servidor web Apache en FreeBSD 11.x se encuentra en la ruta del sistema /usr/local/www/apache24/data/. Allí encontrará un pequeño archivo index.html que puede editar según su preferencia.

Paso 2: Instalar PHP en FreeBSD

5. FreeBSD 11.x ofrece varias versiones de PHP lenguaje del lado del servidor interpretado empaquetado en archivos binarios previamente cumplidos. Para obtener una lista de todos los paquetes de versión de PHP disponibles proporcionados por los repositorios de FreeBSD Ports, ejecute el siguiente comando.

# ls /usr/ports/lang/ | grep php

Un método alternativo para buscar todas las versiones de paquetes FreeBSD PHP disponibles es ejecutar el siguiente comando.

# pkg search -o php

6. Para buscar todos los binarios disponibles proporcionados por FreeBSD para una versión específica de PHP ( 5 o 7 versiones actualmente) ejecute los siguientes comandos. Utilice menos comando para reducir y navegar a través de la salida.

# pkg search php5 |less
# pkg search php7

7. Para ser más específicos sobre qué módulos ofrece una versión de PHP personalizada, ejecute el siguiente comando como se describe a continuación, que muestra todos los módulos disponibles para la versión de PHP 7.1 .

# pkg search php71

8. En esta guía, instalaremos la versión PHP 7.1 para nuestra pila FBAMP . Ejecute el siguiente comando para instalar PHP con algunos de los módulos más importantes necesarios para una instalación típica de CMS.

# pkg install php71 mod_php71 php71-mbstring php71-mcrypt php71-zlib php71-curl php71-gd php71-json 

9. A continuación, debemos crear el archivo de configuración php.conf para el servidor web Apache en /usr/local/etc/apache24/Include/ Ruta del sistema con el siguiente contenido.

# nano /usr/local/etc/apache24/Includes/php.conf

Agregue las siguientes líneas al archivo php.conf .

<IfModule dir_module>
    DirectoryIndex index.php index.html
    <FilesMatch "\.php$">
        SetHandler application/x-httpd-php
    </FilesMatch>
    <FilesMatch "\.phps$">
        SetHandler application/x-httpd-php-source
    </FilesMatch>
</IfModule>

10. Para comprobar si la puerta de enlace PHP funciona correctamente con el servidor web Apache, cree un archivo PHP info.php en /usr/local/www/apache24/data/system , que es la ruta raíz del documento web predeterminado del servidor web Apache.

# echo '<?php phpinfo();  ?>' | tee -a /usr/local/www/apache24/data/info.php

Reinicie el demonio de Apache para aplicar los cambios.

# service apache24 restart

A continuación, visite la siguiente URI en un navegador para ver el resumen de PHP.

http://IP-or-FQDN/info.php 

11. Para activar el archivo de configuración PHP ini para la producción, emita los siguientes comandos. Puede modificar el archivo de producción php.ini para cambiar la configuración diversa de PHP en su pila FBAMP.

# cp /usr/local/etc/php.ini-production /usr/local/etc/php.ini-production.bakup
# ln -s /usr/local/etc/php.ini-production /usr/local/etc/php.ini

Paso 3: Instala MariaDB en FreeBSD

12. El último componente faltante para nuestra pila FBAMP es el servidor de base de datos MySQL . FreeBSD 11.x ofrece más de 1000 paquetes para diversas bases de datos.

Para mostrar qué componentes están disponibles para las bases de datos MariaDB o MySQL , emita los siguientes comandos. En esta guía instalaremos la base de datos MariaDB sobre MySQL (que ahora es propiedad y está desarrollada activamente por Oracle).

# ls -al /usr/ports/databases/ | grep mariadb
# pkg search -o mariadb
# ls -al /usr/ports/databases/ | grep mysql
# pkg search -o mysql5

13. En esta guía, instalaremos la última versión del servidor de base de datos MariaDB en FreeBSD, que actualmente está representado por la versión del paquete binario mariadb102 .

Ejecute el siguiente comando para instalar el servidor y el cliente MariaDB y el módulo PHP 7.1 necesario para acceder a la base de datos a través de la puerta de enlace del servidor Apache.

# pkg install mariadb102-server mariadb102-client php71-mysqli

14. A continuación, habilite el servidor MariaDB en todo el sistema e inicie el daemon de base de datos ejecutando los siguientes comandos.

# sysrc mysql_enable="yes" 
# service mysql-server start

15. Para proteger la base de datos, ejecute mysql_secure_installation . Utilice el siguiente extracto de salida de script para fortalecer MariaDB.

# /usr/local/bin/mysql_secure_installation

Salida segura del script de instalación de MySQL

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!
 
In order to log into MariaDB to secure it, we'll need the current
password for the root user.  If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.
 
Enter current password for root (enter for none):
OK, successfully used password, moving on...
 
Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.
Set root password? [Y/n] y
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
 ... Success!
By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.
Remove anonymous users? [Y/n] y
 ... Success!
Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.
Disallow root login remotely? [Y/n] y
 ... Success!
By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.
Remove test database and access to it? [Y/n] y
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!
Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.
Reload privilege tables now? [Y/n] y
 ... Success!
Cleaning up...
All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.
Thanks for using MariaDB!

16. De forma predeterminada, el demonio MariaDB escucha las conexiones de red fuera de localhost en el puerto 3306/TCP . Ejecute el comando netstat, lsof o sockstat para obtener el estado de socket MariaDB. Esta configuración es peligrosa y expone el servicio a ataques de red externos.

# lsof -i4 -i6
# sockstat -4 -6

17. Si no necesita acceso remoto a MariaDB, asegúrese de que el demonio MariaDB solo escuche a localhost, emitiendo el siguiente comando. Posteriormente, reinicie el servicio MariaDB para aplicar los cambios.

# sysrc mysql_args="--bind-address=127.0.0.1"
# service mysql-server restart
or
# /usr/local/etc/rc.d/mysql-server restart

18. Nuevamente, ejecute el comando netstat, lsof o sockstat para listar el socket de red MariaDB. El zócalo debe unirse y escuchar en localhost ahora, como se ilustra en la imagen de abajo.

# lsof -i4 | grep mysql
# netstat -an | grep 3306
# sockstat -4 | grep 3306

19. Para probar la conectividad de la base de datos MariaDB desde la consola, ejecute el siguiente comando. Ingrese la contraseña de la raíz de MySQL en el indicador y se mostrará una lista de las bases de datos predeterminadas en la pantalla de la consola, como se ilustra en la siguiente imagen.

# mysql -u root -p -e "show databases"

¡Eso es todo! Has instalado con éxito el servidor web Apache con la base de datos MariaDB y el intérprete de PHP en FreeBSD. Ahora puede comenzar a implementar un sitio web de WordPress en ningún momento.

En el siguiente tutorial, discutiremos algunos temas avanzados de FPBAMP, como cómo habilitar y crear hosts virtuales de Apache, habilitar el módulo de reescritura requerido por el archivo .htaccess para funcionar correctamente y cómo asegurar las conexiones de Apache usando un Certificado autofirmado o un certificado gratuito ofrecido por la entidad Let's Encrypt.