BoxBilling es un software de facturación impulsado por la comunidad escrito en PHP. Es una facturación gratuita y de código abierto diseñada para que sea fácil de usar tanto para los clientes como para los vendedores. BoxBilling proporciona una gran experiencia para los clientes con una interfaz intuitiva y también admite múltiples pasarelas de pago.
En este tutorial, le mostraremos cómo instalar BoxBilling con Nginx, PHP-FPM y MariaDB en Debian 11 Bullseye.
Requisitos
- Un servidor Debian 11 Bullseye.
- Un usuario con privilegios de sudo root.
- Un nombre de dominio o subdominio apuntado a la dirección IP del servidor. Especialmente en un entorno de producción.
Instalando y Configurando PHP
Primero, instalará y configurará PHP-FPM en su sistema Debian. la última versión de BoxBilling requería PHP-FPM 7.4 o superior, que es la versión predeterminada de PHP en el repositorio de Debian.
Antes de comenzar, actualice el índice de paquetes de Debian usando el 'apt ' comando a continuación.
sudo apt update
Después de que el repositorio se actualice, ejecute el siguiente comando para instalar PHP-FPM con todas las extensiones adicionales para BoxBilling.
sudo apt install php-fpm php-cli php-common php-zip php-mysql php-gd php-intl php-curl php-imap php-mbstring php-xml php-json libpcre3 openssl git unzip -y
Una vez finalizada toda la instalación de PHP, edite el archivo 'php.ini' usando el editor nano.
sudo nano /etc/php/7.4/fpm/php.ini
sudo nano /etc/php/7.4/cli/php.ini
Cambia la opción de 'memory_limit ', 'max_execution_time ' y 'fecha.zonahoraria ' con su entorno preferido. En este ejemplo, estamos usando el servidor con 2 GB de memoria RAM, por lo que asignaremos 'memory_limit ' para PHP a '512 MB '. Para 'data.timezone ', cámbiala con tu zona horaria.
memory_limit = 512M
max_execution_time = 360
date.timezone = Europe/Paris
Guarde el archivo y salga.
Ahora, reinicie el servicio PHP-FPM y aplique la nueva configuración ejecutando 'systemctl ' comando a continuación.
sudo systemctl restart php7.4-fpm
Por último, verifique el servicio PHP-FPM usando el siguiente comando.
sudo systemctl status php7.4-fpm
Verá el resultado ya que el servicio PHP-FPM está activo en ejecución.
Instalando Nginx y MariaDB
En este paso, instalará el servidor web Nginx y la base de datos MariaDB. La aplicación BoxBilling requiere al menos MySQL v8, pero también es compatible con otra implementación de MySQL como MariaDB.
Instale Nginx y MariaDB en el servidor Debian 11 usando 'apt ' comando a continuación.
sudo apt install nginx-full mariadb-server -y
Una vez completada la instalación de Nginx y MariaDB, ejecute el siguiente comando para verificar el servicio Nginx y el servicio MariaDB.
sudo systemctl status nginx
sudo systemctl status mariadb
Ahora debería obtener el resultado ya que los servicios Nginx y MariaDB están activos y ejecutándose.
Configuración de la base de datos MariaDB
Después de la instalación de MariaDB, se recomienda configurar la contraseña de root para MariaDB. Utilizará el comando 'mysql_secure_installation' para configurar la contraseña raíz de MariaDB e implementar MariaDB con seguridad básica.
Ejecute el comando 'mysql_secure_installation ' en su servidor terminal.
mysql_secure_installation
Ahora se le pedirá que escriba la contraseña de root para MariaDB. Presiona ENTRAR para continuar porque la instalación predeterminada de MariaDB viene sin contraseña de root.
Enter current password for root (enter for none):
OK, successfully used password, moving on...
Ahora escriba 'Y ' para cambiar la autenticación predeterminada para el usuario root a 'unix_socket_authentication ' método. Esto garantizará que el usuario raíz esté siempre conectado a MariaDB desde la máquina local.
Setting the root password or using the unix_socket ensures that nobody
can log into the MariaDB root user without the proper authorisation.
You already have your root account protected, so you can safely answer 'n'.
Switch to unix_socket authentication [Y/n] Y
Enabled successfully!
Reloading privilege tables..
... Success!
Escriba 'Y ' para cambiar la contraseña raíz de MariaDB, luego ingrese la nueva contraseña para MariaDB y repita.
You already have your root account protected, so you can safely answer 'n'.
Change the root password? [Y/n] Y
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
... Success!
Escriba 'Y ' para eliminar el usuario anónimo predeterminado en MariaDB.
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!
Escriba 'Y ' para deshabilitar el inicio de sesión remoto para el usuario root.
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!
Escriba 'Y ' para eliminar la base de datos predeterminada 'test ' y todos los privilegios encima.
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!
Por último, vuelva a cargar los privilegios de la tabla en MariaDB para aplicar nuevos cambios.
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...
Y ha configurado la contraseña raíz de MariaDB y su servidor MariaDB ahora está protegido.
All done! If you've completed all of the above steps, your MariaDB
installation should now be secure.
Thanks for using MariaDB!
Configuración de nueva base de datos y usuario para BoxBilling
En este paso, creará una nueva base de datos y un nuevo usuario para la instalación de BoxBilling. Todos los datos relacionados con BoxBilling se almacenarán en la base de datos MariaDB.
Ahora, inicie sesión en el shell de MariaDB usando el siguiente comando.
mysql -u root -p
Ejecute las siguientes consultas para crear una nueva base de datos y el usuario 'boxbilling ' con la contraseña 'dbpassBoxBilling ', luego otorgue todos los privilegios en la base de datos 'boxbilling ' al usuario '[correo electrónico protegido] '. Después de eso, vuelva a cargar todos los privilegios de la tabla para aplicar nuevos cambios en MariaDB.
CREATE DATABASE boxbilling;
CREATE USER [email protected] IDENTIFIED BY 'dbpassBoxBilling';
GRANT ALL ON boxbilling.* TO [email protected] WITH GRANT OPTION;
FLUSH PRIVILEGES;
Ahora escriba 'salir ' para cerrar sesión en el shell de MariaDB. Y ha creado la nueva base de datos MariaDB y el usuario para la instalación de BoxBilling.
Descargando el código fuente de BoxBilling
BoxBilling se puede instalar de muchas maneras. Puede instalar la última versión de BoxBilling desde el código fuente e instalar todas las dependencias de PHP usando 'Composer', o descargar la versión estable de BoxBilling y moverla al directorio web raíz.
En este paso, instalaremos la última versión estable de BoxBilling. Al momento de escribir este artículo, la última versión estable de BoxBilling es v4.22 .
Cree un nuevo directorio raíz web '/var/www/boxbilling ' y mueva su directorio de trabajo a él.
mkdir -p /var/www/boxbilling/
cd /var/www/boxbilling
Descargue la última versión estable del código fuente de BoxBilling usando el comando wget y extraiga el archivo 'BoxBilling.zip ' usando el comando descomprimir.
wget https://github.com/boxbilling/boxbilling/releases/download/4.22.1.3/BoxBilling.zip
unzip Boxbilling.zip
Ahora, cree un nuevo directorio 'caché ' y 'subir ' en el '/var/www/boxbilling/ '.
mkdir -p /var/www/boxbilling/bb-data/{cache,uploads}
A continuación, cambie la propiedad de '/var/www/boxbilling' directorio al otro usuario y grupo 'www-data ' usando el siguiente comando.
sudo chown -R www-data:www-data /var/www/boxbilling
Permitir al usuario 'www-data ' para escribir en el directorio 'cache ' y 'subir '.
sudo chmod u+rw /var/www/boxbilling/bb-data/{cache,uploads}
Y ahora está listo para configurar el servidor web Nginx para el software BoxBilling.
Configurar Nginx para BoxBilling
En este paso, agregará nuevos bloques de servidor Nginx para BoxBilling. Antes de crear la configuración del bloque del servidor, asegúrese de que el nombre de dominio apunte al servidor. Además, asegúrese de tener los certificados SSL generados para su dominio, puede usar los certificados SSL gratuitos de Letsencrypt.
Mueva su directorio de trabajo a '/etc/nginx/sites-disponible ' y crea una nueva configuración de bloques de servidor 'boxbilling.conf ' usando el editor nano.
cd /var/www/sites-available/
nano boxbilling.conf
Copie y pegue la siguiente configuración. Y asegúrese de cambiar el nombre de dominio y la ruta de los certificados SSL.
server {
listen 80;
server_name billing.example.io;
return 302 https://$server_name$request_uri;
}
server {
listen 443 ssl http2;
set $root_path '/var/www/boxbilling';
server_name billing.example.io;
index index.html index.htm index.php;
root $root_path;
try_files $uri $uri/ @rewrite;
sendfile off;
ssl_certificate /etc/letsencrypt/live/billing.example.io/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/billing.example.io/privkey.pem;
ssl_protocols TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384;
ssl_ecdh_curve secp384r1; # Requires nginx >= 1.1.0
ssl_session_timeout 10m;
ssl_session_cache shared:SSL:10m;
ssl_session_tickets off; # Requires nginx >= 1.5.9
# ssl_stapling on; # Requires nginx >= 1.3.7
# ssl_stapling_verify on; # Requires nginx => 1.3.7
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 5s;
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";
access_log /var/log/nginx/example.com.access.log;
error_log /var/log/nginx/example.com.error.log;
location @rewrite {
rewrite ^/(.*)$ /index.php?_url=/$1;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
include fastcgi_params;
fastcgi_intercept_errors on;
}
# Disable PHP execution in bb-uploads and bb-data
location ^~ /bb-uploads/ { }
location ^~ /bb-data/ {
deny all;
}
location ~* ^/(css|img|js|flv|swf|download)/(.+)$ {
root $root_path;
expires off;
proxy_no_cache 1;
proxy_cache_bypass 1;
}
location ~ /\.ht {
deny all;
}
}
Guarde el archivo y salga.
A continuación, ejecute el siguiente comando para activar la configuración de bloqueo del servidor 'boxbilling.conf ' y verifique la configuración de Nginx.
ln -s /etc/nginx/sites-available/boxbilling.conf /etc/nginx/sites-enabled/
sudo nginx -t
Si su configuración de Nginx es correcta, verá un mensaje de salida como 'Syntax OK '.
Por último, reinicie el servicio Nginx para aplicar la nueva configuración.
sudo systemctl restart nginx
Instalar y configurar BoxBilling
En este punto, ha configurado el servidor web BoxBilling y Nginx. Ahora comenzará a instalar y configurar BoxBilling desde el navegador web.
Abra su navegador web y escriba el nombre de dominio de BoxBilling en la barra de direcciones.
https://boxbilling.example.io/
Asegúrese de que todos los requisitos tengan el color verde, lo que significa que su sistema se cumple para instalar BoxBilling.
Marque la casilla Licencia 'Acepto' y haga clic en 'SIGUIENTE botón '.
Ingrese la base de datos y el usuario para BoxBilling y haga clic en 'NEXT ' de nuevo.
Ahora, escriba el nuevo usuario administrador, correo electrónico y contraseña para BoxBilling y haga clic en 'SIGUIENTE '.
Y ha instalado correctamente BoxBilling, pero necesitará configuraciones adicionales que debe aplicar al servidor de BoxBilling.
Haga clic en 'FINALIZAR ' y ha completado la instalación de BoxBilling.
Puede pasar a la página de inicio de BoxBilling y verá una página similar a la siguiente.
Instalación posterior de BoxBilling
Una vez completada la instalación de Boxbilling, deberá eliminar el directorio 'instalar' y cambiar el permiso del archivo 'bb-config.php', luego crear un nuevo cronjob para la aplicación BoxBilling.
Elimine la 'instalación de BoxBilling ' directorio usando el siguiente comando.
rm -rf /var/www/boxbilling/install
Cambiar el permiso de 'bb-config.php ' a 644 . Esto significa que solo el usuario 'www-data' puede escribir en este archivo.
sudo chmod 644 /var/www/boxbilling/bb-config.php
Ahora cree un nuevo cronjob para el usuario 'www-data'. La aplicación BoxBilling se ejecuta principalmente en el servidor web Nginx con el usuario 'www-data '.
export EDITOR=nano
sudo crontab -u www-data -e
Copie y pegue el siguiente script.
*/5 * * * * php /var/www/boxbilling/bb-cron.php
Guarde el cron y salga.
Ahora tu BoxBilling está listo para tus clientes y clientes.
Iniciar sesión en la página de administración de BoxBilling
La página de administración de BoxBilling se encuentra en la ruta URL '/bb-admin '. Ingrese la siguiente URL en la barra de direcciones de su navegador web.
https://boxbilling.example.io/bb-admin/
En la página de inicio de sesión del administrador de BoxBilling, ingrese su usuario y contraseña, haga clic en el botón 'INICIAR SESIÓN '.
Ahora verá el panel de administración de Boxbilling como se muestra a continuación.
Conclusión
¡Felicidades! Ahora ha instalado BoxBilling con PHP-FPM, Nginx y MariaDB en la última diana de Debian 11. Ya puedes utilizarlo como tu central de gestión de compras gratuita con tus clientes y clientes.