Este artículo sirve para crear un servidor estático y dinámico con FreeBSD. Parte de la idea que las personas que deseen hacerlo con FreeBSD ya conocen y utilizan este sistema operativo, de otra forma no creemos que sea fácil, aunque todo es posible.
Para este uso FreeBSD es sencillamente sensacional. Como se trata de aprender, utilizaremos un servidor en local y con entorno gráfico Mate, ya que facilita enormemente el trabajo de aprendizaje para las personas aficionadas, pues se puede trabajar mientras se consultan los problemas o ideas en los medios web disponibles..
Partiremos del sistema ya instalado tal como indicamos en el artículo de este mismo blog: Instalar y adaptar FreeBSD 14 y 15 con entorno gráfico Mate con el enlace siguiente:
https://tecn-ara.blogspot.com/2019/08/instalar-y-adaptar-freebsd-12-con.html
- Instalar apache
Normalmente utilizamos en los servidores apache pues lo conocemos desde siempre y nos es fácil de configurar. Siendo la 24 última versión.
# pkg install apache24
- Instalamos php
Utilizaremos la última a versión actual, que es la 85.
# pkg install php85 mod_php85 php85-mbstring php85-zlib php85-curl php85-gd
# pkg install php85-mysqli php85-extensions php85-pdo php85-pdo_mysql php85-zip php85-mbstring
- Instalamos mariaDB
MariaDB es exactamente lo mismo que mysql pero es la versión totalmente libre y, normalmente, más adelantada, pues sirve de pruebas para mysql. Instalamos la última versión actual.
# pkg install mariadb118-server
ya lo instala todo, no es necesario instalar mariadb118-client ya lo hace.
- Instalamos phpMyAdmin
Existe otra herramienta más sencilla que también se puede utilizar que es Adminer, pero nosotros preferimos phpMyAdmin, porque es mucho más completa para nuestro trabajo. También instalaremos la última versión actual.
# pkg install phpMyAdmin5-php85
- Ficheros de configuración
Ahora veamos como hemos dejado todos los ficheros de configuración para que el servidor dinámico funcione correctamente. Se ha procurado que todos los ficheros sean específicos para cada parte que forma el servidor y así se capte mejor su significado. Para ello hemos introducido en apache24 la instrucción Include /usr/local/etc/apache24/Includes/*.conf, que nos permitirá poner en la carpeta Includes todos los ficheros de configuración de cada una de los elementos que configuran nuestro servidor, facilitando el trabajo de comprensión y posterior ampliación.
Primero informaremos a rc.conf que active nuestro servidor
- /etc/rc.conf
En /etc/rc.conf, hemos añadido:
# nano /etc/rc.conf
apache24_enable="YES"php_fpm_enable="YES"
mysql_enable="YES"
Utilizaremos el servicio php_fpm. Además incorporaremos en la configuración de apache 24 la instrucción: Include /usr/local/etc/apache24/Includes/*.conf, lo cual nos va permitir configurar en la carpeta Includes todos los servicios por separado, que entendemos que queda más estructurado, fácil de ver y repasar, más que ponerlo todo en httpd.conf de apache24.
Ahora muy importante el fichero de configuración de apache24 agregamos lo siguiente.
# nano /usr/local/etc/apache24/httpd.conf
Listen 80 # son los puertos típicos de las web
Listen 443
ServerName 127.0.0.1 # Utilizamos servidor local (localhost) para pruebas.
# Estas dos líneas están comentadas para hacerlas activas eliminamos # para activarlas.
LoadModule proxy_module libexec/apache24/mod_proxy.so
LoadModule proxy_fcgi_module libexec/apache24/mod_proxy_fcgi.so
# aqui indicamos a apache que pondran los ficheros de configuración en la carpeta Include del mismo.
Include /usr/local/etc/apache24/Includes/*.conf
Observar que al poner la IP 127.0.0.1 se está trabajando únicamente en local.
# nano /usr/local/etc/apache24/Includes/php.conf
<IfModule php_module>
DirectoryIndex index.php index.html
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
</IfModule>
# nano /usr/local/etc/mysql/my.cnf
En el fichero de configuración de mysql.
# nano /usr/local/etc/mysql/my.cnf
[client]
port = 3306
socket = /var/run/mysql/mysql.sock
[mysqld]
bind-address = 127.0.0.1
# nano /usr/local/etc/apache24/Includes/phpmyadmin.conf
Alias /phpmyadmin "/usr/local/www/phpMyAdmin"
<Directory "/usr/local/www/phpMyAdmin">
AllowOverride All
Options None
Require all granted
</Directory>
- /usr/local/etc/apache24/Includes/php_fpm.conf
<FilesMatch "\.php$">
SetHandler "proxy:unix:/var/run/php-fpm.sock|fcgi://localhost/"
</FilesMatch>
# nano /usr/local/etc/apache24/Includes/php.conf
<IfModule php_module>
DirectoryIndex index.php index.html
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
</IfModule>
# nano /usr/local/etc/php-fpm.d/www.conf
listen = /var/run/php-fpm.sock
listen.owner = www
listen.group = www
listen.mode = 0660
# nano /usr/local/www/phpMyAdim/config.inc.php
<?php
$cfg['blowfish_secret'] = '0123456789abcdefghijklmnopqrstuv';
$i = 1;
$cfg['Servers'][$i]['auth_type'] = 'cookie';
$cfg['Servers'][$i]['host'] = '127.0.0.1';
$cfg['Servers'][$i]['connect_type'] = 'tcp';
$cfg['TempDir'] = '/tmp';
?>
En esta apartado observar que se han puesto exactamente 32 caracteres exactamente.
$cfg['blowfish_secret'] = '0123456789abcdefghijklmnopqrstuv';
Inicio y apagado de los servicios instalados
Debemos recordar que una vez hecho esto anterior deberemos iniciar los servicios, pues una vez instalados no se inician, debe hacerse manualmente o reiniciar el ordenador. pero es mejor hacerlo manualmente, así pues os daréis cuenta si funciona o si tenéis algún problema.
1.- La siguiente orden para el servicio apache.
# service apache24 stop
Esta inicia el servicio.
# service apache24 start
Esta reinicia de nuevo el servicio ya en funcionamiento.
# service apache24 reload
Y, finalmente, esta sirve para comprobar el estado del servicio.
# service apache24 status
2.- Para el servicio mysql igual
# service mysql-server restart
3.- Para el servicio php
php_fpm is running as pid 2370.
Importante permisos para la carpetas web del servidor.
Daremos los siguientes permisos para las carpetas de acceso web:
chown -R root:wheel /usr/local/www/
chmod -R 755 /usr/local/www/
chown -R www:www /usr/local/www/
chmod -R 755 /usr/local/www/
chmod -R 775 /usr/local/www/phpMyAdmin
chown -R www:www /usr/local/www/phpMyadmin
chown -R www:www /usr/local/www/apache24/data
chmod -R 755 /usr/local/www/apache24/data
Muy importante evitar el siguiente permiso, pues no se tendría ninguna seguridad.
chmod -R 777
Y con todo lo hecho ya se tiene el servidor dinámico preparado para instalar el servicio que se desee: Moodle, dokuwiki, Joomla, NAS, Wordpress, etc.
Observar que se ha utilizado Nameserver 127.0.0.1, por que se hace la experiencia en local en caso de querer IP pública se sustituye por el valor correspondiente. Pero hay una parte que aquí no se ha trabajado que es la seguridad y cortafuegos del servidor.
Lo que más nos gusta de este sistema operativo es que de forma nativa el entorno web dinámico y su configuración están fuera del sistema base y parece de entrada que sea una máquina virtual, pues lo separa totalmente de la base del sistema situándolo todo en /usr/local/www y las configuraciones en /usr/local/etc/apache24/ y no hay nada en la carpeta etc/ que es el sistema.
Se ha puesto todo muy escueto porque pensamos que las personas que se proponen crear un servidor FreeBSD tienen un nivel suficiente de todo y lo único que necesitan es una guía de lo que deben instalar. Observar que se han instalado siempre las ultimas versiones disponibles a día de hoy en los repositorios. Siempre se puede acceder a nuestro blog y consultar les explicaciones que damos, y que aquí no se repiten, mi primer servidor web estático y dinámico. Ahora viene la segunda parte dotarle de la seguridad necesaria y evitar ataques, hecho que estamos preparando.
Apreciado lector, entendemos que las IA son la herramienta de consulta más precisa que existe y la de más futuro, y que nuestro trabajo pierde casi todo su interés porque ellas te lo explican. Hecho que aceptamos con gusto, pues nunca debemos quedarnos quietos y no evolucionar y más las personas que estamos interesados en el software libre, y que siempre hemos ido luchando a contracorriente de lo que imponía y impone el mercado. I entendemos que si sabemos utilizar esta herramienta adecuadamente, podremos acceder a niveles de conocimiento superiores. Con esto los foros pierden bastante sentido.