Ya escribí un artículo indicando cómo usar Sublime POS 3 en internet de manera resumida, pero en este post te enseñaré una pequeña guía específica de cómo subirlo a un servidor con Linux Ubuntu alojado en DigitalOcean.
Te recomiendo leer primero el post que cité anteriormente y después volver a este. También te sugiero que veas cómo compilar el código fuente para que entiendas los conceptos aquí mostrados.
Requisitos del servidor
Yo pude compilar y subir exitosamente el sistema de ventas a un servidor con Linux Ubuntu que tenía medio gigabyte de RAM, agregando una partición de intercambio de 1 gigabyte antes de compilar.
Si tú tienes un servidor más potente o los recursos para rentarlo, entonces renta uno con al menos 2 GB de RAM, pero te repito que se puede lograr con medio GB y así te ahorras la renta.
Lado del cliente
Aquí me gusta aplicar un truco, y es que al final no importa en qué plataforma compiles el lado del cliente, por lo que puedes compilar en Windows o en tu servidor local.
La ventaja de esto es que ahorras recursos del servidor. En tu computadora local vas a tener un hardware más potente que el del servidor, por lo que puedes ahorrarte espacio y poder de cómputo compilando en tu computadora.
En mi caso compilé en mi computadora con Windows y dejé lista la carpeta dist
para copiarla al servidor más adelante.
Nota: tú puedes subir la carpeta completa, instalar las dependencias en el servidor y compilar ahí mismo, solo te decía un truco.
Recuerda que compilar las dependencias con node necesita memoria y espacio de almacenamiento, cosas limitadas en un VPS.
Compilando lado del servidor
Lo que tenemos que hacer es subir la carpeta api
al servidor, es decir, la contenedora del código de Go.
Luego instalamos el compilador de Go como se indica en https://parzibyte.me/blog/2019/01/09/instalar-go-linux-ubuntu-18/
También necesitamos gcc
si vamos a usar el sistema con SQLite3, por lo que instalamos: sudo apt install gcc
Finalmente entramos a la carpeta (en mi caso se llama api)
y compilamos:
go build -tags produccion
Usando Sublime POS 3 en Ubuntu Server
El paso anterior te dará un ejecutable llamado tiendas
.
Lee el README para que sepas en dónde colocar la carpeta dist
previamente compilada, y una vez que la misma (junto con los archivos SQL) estén en el mismo directorio que tiendas
entonces puedes ejecutar el programa con: ./tiendas
Ahora averigua la IP del servidor, accede a http://ip_del_servidor:2106/static/
y todo debería funcionar sin problemas.
Ejecutar SPOS3 en segundo plano
Si quieres ejecutar el programa sin que la terminal se bloquee ni el proceso se detenga puedes correrlo en segundo plano así:
./tiendas >> ~/log_sublime_pos_3.log 2>&1 &
Eso va a ejecutar el programa en segundo plano y registrar todo en la carpeta home
de tu usuario en el archivo log_sublime_pos_3.log
.
Nota: si después quieres detenerlo, ejecuta un ps aux | grep tiendas
y eso te debe dar el PID del programa (no te confundas con el PID del propio comando).
Una vez que lo tengas, detén el proceso con kill PID
en donde PID es un número, el de la primera columna de la salida de ps
.
Partición de intercambio
Nota: al compilar, a mí me dio un error por falta de memoria porque el servidor tenía 512 Megabytes de RAM. Primero apareció lo siguiente:
# github.com/mattn/go-sqlite3
gcc: fatal error: Killed signal terminated program as
compilation terminated.
Luego depuré un poco con dmesg
y al final de la salida aparecía lo siguiente:
Out of memory: Killed process 13942 (as) total-vm:287948kB, anon-rss:280056kB, file-rss:0kB, shmem-rss:0kB, UID:1000 pgtables:592kB oom_score_adj:0
Lo solucioné agregando un swap temporal de 1GB.
No tengo una guía de cómo hacer eso pues hay varias por internet, yo seguí la que aparece en: https://www.digitalocean.com/community/tutorials/how-to-add-swap-space-on-ubuntu-20-04-es.
Conclusión
Para terminar te dejo con más tutoriales de Servidores y el enlace a la presentación del sistema de ventas gratuito.