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.
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.
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.
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
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.
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
.
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.
Para terminar te dejo con más tutoriales de Servidores y el enlace a la presentación del sistema de ventas gratuito.
Hoy te voy a presentar un creador de credenciales que acabo de programar y que…
Ya te enseñé cómo convertir una aplicación web de Vue 3 en una PWA. Al…
En este artículo voy a documentar la arquitectura que yo utilizo al trabajar con WebAssembly…
En un artículo anterior te enseñé a crear un PWA. Al final, cualquier aplicación que…
Al usar Comlink para trabajar con los workers usando JavaScript me han aparecido algunos errores…
En este artículo te voy a enseñar cómo usar un "top level await" esperando a…
Esta web usa cookies.