• Email CO: ceo@programandoweb.net
  • Agenda una cita: +573042059044

Archivo de categoría Blog

PorLCDO. JORGE MENDEZ

Ayuda: session_start(): Failed to initialize storage module: user (path: )

Solución:

Cuando se da este error para el proyecto Codeigniter que está ejecutando, esto es específicamente por no tener una ruta reconocida para almacenar datos de sesión.

Establezca los datos de configuración de la siguiente manera [file: tu-carpeta-proyecto/application/config/config.php]

$config[‘sess_driver’] = ‘files’;
$config[‘sess_cookie_name’] = ‘ci_session’;
$config[‘sess_expiration’] = 7200;
$config[‘sess_save_path’] = APPPATH.’cache/’;
$config[‘sess_match_ip’] = TRUE;
$config[‘sess_time_to_update’] = 300;
$config[‘sess_regenerate_destroy’] = FALSE;

PorLCDO. JORGE MENDEZ

Disable MySQL Strict Mode? tanto en CPanel como en cualquier servidor LINUX

El modo estricto en MySQL o MariaDB es un modo que nos limita para realizar malas practicas como insertar una cantidad grande de caracteres cuando el limite es bajo en un determinado campo.

Hacer esto puede tener dos consecuencias dependiendo de la versión que usemos, por ejemplo puede recortar nuestros datos y mostrar una advertencia, o la declaración no se ejecutara y nos mostrara un error.

Extraido de https://www.imperioweb.net/como-desactivar-el-modo-estricto-o-strict-mode-de-mysql-y-mariadb

Cómo desactivar MySQL Strict Mode en whm, ubicamos nuestro archivo /etc/my.cnf y agregamos una línea al final así:

sql_mode = ""

Reiniciamos el servidor SQL y listo, solventada la situación. Vale la pena aclarar que hay que ser  más estrictos con respecto a las buenas prácticas a fin de evitar sucedan estos inconvenientes como programador.

PorLCDO. JORGE MENDEZ

Hosting económico para desarrolladores nuevos

He visto en publicaciones, nuevos desarrolladores que quieren publicar sus primeros proyectos, bien sea para hacer pruebas y por qué no? aprender a publicar sus trabajos en la Web.

El problema para estos nuevos desarrolladores, es el costo de un hospedaje robusto, bueno y con soporte vía Whatsapp con personal calificado.

Acá les traigo la solución, espero les funcione y ayude, me comentan por favor qué tal les va.

«Hola Mundo» Potente hosting con Cpanel por sólo COP $3000 Mensuales por GB

PorLCDO. JORGE MENDEZ

Script en PHP para hacer respaldos automáticos en CPanel

Nota: Este es el mismo script originalmente alojado en el sitio web de nuestro autor, v-nessa.net.

cPanel Automated Backup Script (1.2 KiB, 12,503 hits)

Este es un script simple derivado del proceso cPanel que genera copias de seguridad completas de la cuenta, solo en forma de PHP. Esto hace que la tarea de realizar copias de seguridad de su sitio sea más fácil y más confiable al permitirle generar y mantener sus propias copias de seguridad de todo el sitio.

  • Copia de seguridad automática a través de trabajo Cron
  • Genera una copia de seguridad real de cPanel en formato tar.gz
  • Muy fácil de configurar y ejecutable con un solo comando simple
  • Notificación por correo electrónico cuando se complete la copia de seguridad
  • Opción de FTP para transferir el archivo de respaldo a un servidor FTP específico
  • Compatible con temas x3

Requisitos:

  • cPanel 10 o superior con la función de copia de seguridad y la funcionalidad de copia de seguridad habilitadas
  • PHP 4.1.xo superior
  • Acceso FTP (opcional)

Cómo utilizar:

  1. Descarga el script a tu computadora y extrae el archivo tar
  2. Edite el archivo cpanel_backup.php con la configuración de cPanel:

$ cpuser = Su nombre de usuario de cPanel

$ cppass = Tu contraseña de cPanel

$ dominio = el nombre de dominio donde se ejecuta cPanel, generalmente sin los www.

$ skin = cPanel skin que está ejecutando actualmente. Esto usualmente será «x3» o «paper_lantern». Puede verificar esto fácilmente en la barra de estadísticas de la izquierda de cPanel o mirando la URL de cPanel en su navegador cuando está conectado.

La siguiente sección configurará las opciones de FTP para cargar el archivo comprimido de respaldo en un servidor. Si la ubicación de FTP es la misma que la del servidor en el que está realizando la copia de seguridad, debe dejar estos campos en blanco .

$ ftpuser = Nombre de usuario para su sitio FTP

$ ftppass = Contraseña para su sitio FTP

$ ftphost = nombre de host FTP (normalmente ftp.yourdomainname.com)

$ ftpmode = El modo en el que desea transferir el archivo. Recomendaría el modo «pasivo», especialmente para sitios más grandes.

$ ftpport = El puerto para acceso FTP en el servidor

$ ftpdir = El directorio remoto, comenzando desde la raíz del directorio FTP. Si el servidor FTP es el servidor local, NO debe ser la carpeta de inicio del usuario, ya que cPanel eliminará automáticamente la copia de seguridad una vez que se complete. Ejemplo: / backups (/ home / $ user / backups). El directorio debe existir.

$ notifyemail = La dirección de correo electrónico a la que debe enviarse la confirmación de la copia de seguridad una vez que se complete

$ secure = Permitir o no que el script acceda a su cPanel a través de sus puertos seguros

$ debug = Si se muestran o no los resultados de la copia de seguridad detallados en su correo electrónico de confirmación

4. Una vez que se haya configurado el archivo php, cárguelo en su servidor web. Por motivos de seguridad, es muy importante que se asegure de que este archivo se encuentre fuera de la raíz de su documento (public_html) con permisos de 600

5. Ahora, todo lo que necesita hacer es configurar el crontab. Inicie sesión en su cPanel y vaya a la sección «Cron Jobs» y elija «Estándar». Aquí es donde creará el trabajo cron real para ejecutar el script cuando lo desee:

El comando puede variar según la configuración de PHP en su servidor, pero su comando Cron será el siguiente:

php -q /home/username/cpanel_backup.php

PorLCDO. JORGE MENDEZ

Setting up a Create-React-App with PM2

I recently finished one of my projects and wanted to host it online for the world to see all its beauty. I didn’t want to use Heroku as I thought that it abstracts too much of the server configurations and I myself wanted to know how the server configs worked.

I first started looking around on how to host a React app on DigitalOcean. Side note, if you haven’t set up a Linux VPS on DigitalOcean before, I’d highly recommend. It’s one of the simplest things to do and for the cheapest option it’s about 5$ a month. Not being paid to say that, I just enjoy their service and I’ll be using it on for the rest of the tutorial. Ok back to the server. I used DigitalOcean’s NodeJS One-Click app as my starting template.

After the server was created, I like to secure the server the first time I log in, here’s a link to an article I follow. Next do the installations.

sudo apt-get install nginx
sudo npm i -g create-react-app react-scripts@latest pm2@latest

Go to a directory where you’d like to your React app and run:

create-react-app my-app

Once you have a ready to deploy application, go to your react app’s directory and run

sudo npm run build

The above code creates a minified version of your code optimized for production in the my-app/build directory.

We use PM2 as an application manager in order to keep our app running after we log out of the server.

pm2 start my-app/node_modules/react-scripts/scripts/start.js --name "my-app"

This will have our application running in the background.

Here’s a few commands to note when using pm2:

pm2 status
pm2 restart my-app
pm2 stop my-app
pm2 start my-app
pm2 delete my-app

Now it’s time we get Nginx configured in order to expose our application.

First, create a new site in /etc/nginx/sites-available/

cd /etc/nginx/sites-available/
vim my-app.com

Then inside /etc/nginx/sites-available/my-app.com place the server configurations:

server {
listen 80;
  server_name my-app.com;
  server_name your.server.ip.goes.here;
  root /root/my-app.com;
  index index.html;
  
  access_log /var/log/nginx/my-app.com.access.log;
  error_log /var/log/nginx/my-app.com.error.log;
location / {
    try_files $uri /index.html =404;
  }
}

Nginx needs to be told that a given site is active. To do this, create a symlink in sites-enabled

cd /etc/nginx/sites-enabled
ln -s ../sites-available/my-app.com

Run nginx -t to see if there are any errors with the config file, if any come up, try and find the error and correct it.

Restart Nginx:

/etc/init.d/nginx restart

Navigate to your servers IP on your local computer and your site should now be hosted!

ACTUALIZACIÓN

pm2 start "serve -s build" --name "react_pwa_eros"
PorLCDO. JORGE MENDEZ

Cómo instalar node.js con certificado Letsencrypt

Me tocó por motivos de trabajo, crear un chat con aspecto de Whatsapp, esto obliga a tener instalado SOCKET.IO con un certificado SSL, en mi caso con Letsencrypt en Centos 7.

Los pasos para instalar Letsencrypt en Centos lo puedes ver aquí.

Y para instalar un Certificado Letsencrypt + React JS.

Sin más preámbulo, debe importarse:

const fs = require('fs');
const https = require('https');

Luego:

// Certificate
const privateKey = fs.readFileSync('/etc/letsencrypt/live/sudominio.com/privkey.pem', 'utf8');
const certificate = fs.readFileSync('/etc/letsencrypt/live/sudominio.com/cert.pem', 'utf8');
const ca = fs.readFileSync('/etc/letsencrypt/live/sudominio.com/chain.pem', 'utf8');

const credentials = {
key: privateKey,
cert: certificate,
ca: ca
};
var cors = require('cors')
app.use(cors())

y por último, la creación del servidor:

const server = https.createServer(credentials, app);

Una vez finalizado estos pasos en tu archivo index.js iniciamos el servidor con:

node index.js

Y listo, abre tu navegador en el puerto asignado.

PorLCDO. JORGE MENDEZ

Certificado Letsencrypt + React JS (Actualizado)

Confieso que aunque hay mucha información sobre ReactJS, el montar un servidor con certificado Letsencrypt fue cuesta arriba. La ayuda disponible en los foros por lo general hablan de poner en producción la apliación pero no con estas características.

La solución la conseguí para mi proyecto, un chat con el aspecto de whatsapp publicado en github, pero con sus particularidades.

Para saber como lo hice en el backend del chat, desde luego en node.js, pueder ver cómo instalar node.js con certificado Letsencrypt en mi artículo.

También pueder ver cómo instalar Letsencrypt en Centos.

Sin más que decir, lo que hice fue buscar dentro de node_module/webpack-dev-server/lib/Server.js y coloqué antes de la condición:

if (semver.gte(process.version, '10.0.0'))

la siguientes líneas de código con la información de la ubicación del certificado:

// Certificate
      const privateKey = fs.readFileSync('/etc/letsencrypt/live/sudominio.com/privkey.pem', 'utf8');
      const certificate = fs.readFileSync('/etc/letsencrypt/live/sudominio.com/cert.pem', 'utf8');
      const ca = fs.readFileSync('/etc/letsencrypt/live/sudominio.com/chain.pem', 'utf8');

      const credentials = {
      	key: privateKey,
      	cert: certificate,
      	ca: ca
      };

y cambié:

this.listeningApp = require('spdy').createServer(options.https, app);

por:

this.listeningApp = https.createServer(credentials, app);

Una vez finalizado, npm start y listo.

Actualización

Para utilizar Letsencrypt con CRT:

const privateKey = fs.readFileSync('/etc/pki/tls/private//services.workplace.com.co.key', 'utf8');
const certificate = fs.readFileSync('/etc/pki/tls/certs/services.workplace.com.co.cert', 'utf8');
const ca = fs.readFileSync('/etc/pki/tls/certs/services.workplace.com.co.bundle', 'utf8');
PorLCDO. JORGE MENDEZ

PM2 Montar react js y Node.js como servicio

Montar un servidor node

pm2 start index.js --name "node-chat"

Montar una aplicación React.js

pm2 start node_modules/react-scripts/bin/react-scripts.js --name "reacj_frontend-chat" -- start
PorLCDO. JORGE MENDEZ

Starting cwpsrv: cwpsrv: [emerg] SL_CTX_use_PrivateKey_file

Oye, tengo el mismo problema y cwpsrv no se inicia:

Starting CentOS Web Panel service (daemon)...
cwpsrv: [emerg] SL_CTX_use_PrivateKey_file("/etc/pki/tls/private/hostname.key") failed (SSL: error:0B080074:x509 certificate routines:X509_check_private_key:key valu
cwpsrv[10853]: cwpsrv:configuration file /usr/local/cwpsrv/conf/cwpsrv.conf test failed
systemd[1]: cwpsrv.service: control process exited, code=exited status=1
systemd[1]: Failed to start CentOS Web Panel service (daemon).
systemd[1]: Unit cwpsrv.service entered failed state.
systemd[1]: cwpsrv.service failed.
systemd[1]: cwpsrv.service holdoff time over, scheduling restart.

No tengo el guion que mencionas:

/scripts/generate_hostname_ssl

¿Dónde puedo obtenerlo o cómo puedo resolverlo? Gracias de antemano.

Solución definitiva:

sh /scripts/generate_hostname_ssl
PorLCDO. JORGE MENDEZ

Entrenar OpenCV en Detección de Objetos (Python)

Aclaro que este artículo se publicó de: http://acodigo.blogspot.com/2015/12/entrenar-opencv-en-deteccion-de-objetos.html

Pareció fantástico para quienes se están iniciando en la bigdata.

El repositorio del proyecto:

https://github.com/TutorProgramacion/opencv-traincascade