2020-06-12

Como utilizar Git Cpanel y Repositorio privado Bitbucket


Estos son los pasa para poder utilizar un repositorio privado dentro de cpanel



  1. Vamos a crear un KEY para entrar por SSH el server donde tenes cpanel tu web.
  2. Después entrar por SSH, Si no podes entrar comunicate con el soporte y pregunta si te tiene que activar el servicio de SSH.
  3. Dentro del server hay que crear una nueva KEY que es solo para entrar al repositorio privado.

    cd /home/<tu-usuario>/.ssh/

    ssh-keygen -f nombre_repo_bitbucket_rsa

    # sin password tiene que ser
    cat /home/<tu-usuario>/.ssh/nombre_repo_bitbucket_rsa.pub

    # copia el HASH y ponelo dentro de bitbucket


    # creamos un archivos config para ssh con
    nano /home/<tu-usuario>/.ssh/config

    Host bitbucket.org
        Hostname bitbucket.org
        IdentityFile ~/.ssh/nombre_repo_bitbucket_rsa
      Host *
          Compression yes

    1. Ejecuta el comando para darle los permisos corrrectos: 
      chmod 600 ~/.ssh/config
    2. Después vamos a el cpanel entramos en sector de GIT y ponemos los siguiente datos:
    3. Después hay que crear un archivos .cpanel.yml para controlar el deploy cuando finaliza el pull que hace GIT desde cpanel.

      Ejemplo: .cpanel.yml
      ---
      deployment:
        tasks:
          export DEPLOYPATH=/home/user/public_html/
          /bin/cp -R images $DEPLOYPATH

      Más info: Doc Cpanel
    4. Si queres instalar composer:

      Bajar composer de su sitio web
      wget https://getcomposer.org/composer-stable.phar

      Y movemos el archivo a nuestra carpeta bin
      mv composer-stable.phar bin/composer
      chmod +x bin/composer
      Y listo como eso tenemos instalado composer

    2019-08-09

    Primer y ultimo dia del mes en curso con PHP o MySQL

    Ejemplo simple de como calcular le primer y ultimo dia del mes con PHP o MySQL

    PHP:
    $f_date = 'Y-m-d';
    $my_date = new DateTime();
    $my_date->modify('first day of '.date('F Y'));
    echo $my_date->format($f_date);
    echo "<br>";
    $my_date->modify('last day of '.date('F Y'));
    echo $my_date->format($f_date);

    MySQL:
    select 
    DATE_FORMAT(now(),'%Y-%m-01') AS 'primer_dia_del_mes',
    LAST_DAY(DATE_FORMAT(now(),'%Y-%m-01')) AS 'ultimo_dia_del_mes'

    2019-08-07

    Problema después de hacer un APT UPDATE con la extension MSSQL 17 y PHP 7 en linux debian 9

    Hola gente después de hacer un mantenimiento en mi server me encontré con un problema después de hacer APT Update.

    En la lista de actualizaciones, tenia que actualizaba la versión de mi extensiones PHP para MSSQL de la msodbcsql17:amd64 (17.3.1.1-1, 17.4.1.1-1) y mssql-tools:amd64 (17.3.0.1-1, 17.4.1.1-1)

    Pero como esto me trajo problema de conexión entre PHP y MSSQL dejo la solución para volver atrás esos cambio y que funcione de nuevo eso.

    1. Mira en ./../apt/history.log y recuperar las versión (vieja y nueva) en mi caso msodbcsql17:amd64 (17.3.1.1-1, 17.4.1.1-1) y mssql-tools:amd64 (17.3.0.1-1, 17.4.1.1-1)  
    2. apt install msodbcsql17=17.3.1.1-1 
    3. apt install mssql-tools=17.3.0.1-1
      Listo eso es todo para volver a una versión puntual con APT-GET

      Esto también es valido para volver atrás cualquier actualizacion por APT-GET a una versión puntal; el lugar útil para encontrar los datos correcto de los cambios lo podes ver en 

      /var/log/apt/history.log y /var/log/apt/term.log

      2019-05-27

      Redireccionar con IPTABLE puerto 80 a 8080 si el servicio web no corre como ROOT por la limitación de los puerto menores a 1024



      1. Primero como ROOT a nuestro Debian
      2. ip address (Miramos cual es la interfaz de red que escucha las llamadas con el exterior en mi caso es la enp0s3)
      3. iptables -A INPUT -i enp0s3 -p tcp --dport 80 -j ACCEPT
      4. iptables -A INPUT -i enp0s3 -p tcp --dport 8080 -j ACCEPT
      5. iptables -A PREROUTING -t nat -i enp0s3 -p tcp --dport 80 -j REDIRECT --to-port 8080

      Listo miramos que desde otra maquina funciones bien la nueva regla.
      El paso a seguir es que IPTABLES guarde los cambios de manera permanente en el sistema y sean cargados siempre que inicia el sistema por medio de un demonio en el arranque.

      1. Como ROOT en Debian
      2. apt install iptables-persistent (Para facilitar las cosas vamos a instalar iptables-persistent cuando pregunta si quiere que guarde las reglas actuales, indiquen que <SI> y listo)
      3. nano /etc/iptables/rules.v4 (Para ver que las reglas están guardadas)
      4. reboot (Para ver si esta todo ok y recuperar las reglas al iniciar el sistema solo)

      Eliminar UFW y limpiar todas las reglas viejas creadas por UFW dentro del IPTABLETS


      1. Primero entramos como ROOT
      2. service ufw stop
      3. update-rc.d -f ufw disable
      4. apt remove ufw
      5. service --status-all (si esta ufw en la lista corremos el siguiente comando PUNTO 4).
      6. rm /etc/init.d/ufw
      Listo con esto eliminamos UFW del sistema por completo.

      Los siguientes pasos son para limpiar IPTABLES por completo y no dejar ninguna regla o archivo vinculado a UFW

      1. Entro como ROOT
      2. iptables -t nat -F
      3. iptables -t mangle -F
      4. iptables -F
      5. iptables -X
      Listo quedo limpio IPTABLETS, para ver que no hay reglas solo ponemos

      1. Como ROOT
      2. iptables -L

      2018-12-28

      BackUp con PowerShell Copiar archivos modificados en las ultimas 8hs y guardarlos en un Zip

      Hola gentes acá dejo un simple linea de comando para PowerShell, que permite buscar los archivos que fueron modificados las ultima 8 horas en un PATH X y comprimirlo en un Destino X en formato ZIP.

      Get-ChildItem -Path "C:\Users\linux\Desktop\*.doc" | Where-Object CreationTime -GT (Get-Date).AddHours(-8) | Compress-Archive -DestinationPath "C:\BackUp\mis-docs.zip"

      2018-08-22

      Configurar Server OpenSSH en Debian 9.5 con PublicKey tipo ED25519 que es mas segura que RSA y conectar con Putty

      Hola Amigos acá les dejo todo lo que hay que hacer para configurar el Server OpenSSH en Debian 9.5

      En estos pasos damos por entendido que el usuario que esta realizando los pasos es "user1" y en algunos momento "root" para otros cambios. Y tambien esta mis PC es la que tiene instalado el Server OpenSSH an que queremos entrar desde otro PC con Linux o Putty con Windows

      Linux donde instalamos el server OpenSSH

      Paso 1)
      Ver si tenes instala Server OpenSSH
      su root /etc/init.d/ssh status

      Si no existe el servicio, es porque no esta instalado, si existe pasa al paso 3

      Paso 2)
      Instalar Server SSH ponemos todo "YES"

      su root apt install openssh-server

      Paso 3)
      Configurar el server para poder entrar solo con clave y cambiar alguna parámetros por seguridad.

      echo '' > /var/log/sshd_banners
      su root nano /etc/ssh/sshd_config
      Cambiar el archivo sshd_config con
      Protocol 2 # <= inserta si no esta en el archivo
      Port 22 # <= Por otro numero distinto al estándar eje 2822
      PermitRootLogin no
      AllowUsers user1 user2 # <= lista de usuario en el sistema /home/xxx que van a entrar por ssh
      PubkeyAuthentication yes
      LoginGraceTime 2m
      PasswordAuthentication no
      PermitEmptyPasswords no
      StrictModes yes
      UsePAM no
      X11Forwarding no # <= Solo si trabajamos en modo consola
      PermitTunnel no
      UsePrivilegeSeparation sandbox
      PrintMotd no
      PrintLastLog yes
      Banner /var/log/sshd_banners.log
      Paso 4)
      Generar la clave publica y privada de tipo ED25519 y es recomendable poner un password para mas seguridad a la key que vamos a generar, si alguien te la roba también tiene que saber el password para poder utilizarla. Damos todo entre y ponemos un password o lo dejamos en blanco.
      ssh-keygen -t ed25519
      Paso 5)
      Ya tenemos los dos  archivos generado en nuevos directorio /home/user1/.ssh/
      id_ed25519          <= privada
      id_ed25519.pub   <= publico

      Paso 6)
      Crear el archivo "authorized_keys" que va en ese mismo directorio que va ir a buscar el mismo Server OpenSSH, copiamos la key publica a authorized_keys.
      cp -p /home/user1/.ssh/id_ed25519.pub /home/user1/.ssh/authorized_keys
      Paso 7)
      Reiniciamos el servicio de OpenSSH, para que tome todo los cambios.
      su root /etc/init.d/ssh restart
      Paso 8)
      En la misma Pc que tiene el server SSH  que es a donde queremos entrar desde windows con Putty por ejemplo. Ya esta listo, el server linux. Lo que nos queda hacer es sacar la clave privada "id_ed25519"

      Sacar la key privada para copiarla y llevar a PuTTYgen.
      cat /home/user1/.ssh/id_ed25519
      Paso 9)
      Copiamos todo lo que salio por pantalla, lo guardamos en un archivo key-user1-pri.ppk y pegamos dentro todo.

      -----BEGIN OPENSSH PRIVATE KEY-----
      b3Bsasasasadwfrrfrferwfewfefewfewcxzffgfdasfsd
      ........
      ........
      7owz/DzjZrPx1ABOSWlsaskakjsakljfiedGLg/m0=
      -----END OPENSSH PRIVATE KEY-----


      Windows Putty

      Paso 10)
      Abrimos PuTTYgen => "Load" y buscar el archivo creado antes como ejemplo "key-user1-pri.ppk"
      le ponemo el password si lo pide.
      Aceptamos el mensaje que muestra el programa.
      Y después marcamos "ED25519"
      Cuando este marcado, apretar el botón "Save private key" y se puede pisar el archivo cargado o crear una nuevo.


      Paso 11)
      Abrimos Putty y poner
      IP del server linux a conectar
      Cambiar el puerto si es distinto a 22
      Connection =>  Data => Auto-login poner el nombre del usuario del key "user1"
      Connection => SSH => Auth => Private key ... buscar el archivo nuevo reformatiado con PuTTYgen
      Volvemos a Session => Saved Sessions, ponemos un nombre y click en "Save"
      Y por ultimo "Open"

      Y listo tendría que poder entrar al server OpenSSH sin problema, si tu key tiene password te la va a pedir, si no tiene entrar directo al server.





      2018-01-17

      Configurar Google Cloud AppEngine + PHP Flex + CakePHP 3.5.*

      Como configurar CakePHP 3.5 dentro de Google Cloud con AppEngine (PHP Flex) y me costo  mucho por  eso dejo acá los pasos a seguir con la versión 3.5.*.

      Primero pasos entrar a la consola shell de google por el navegador y pone estas lineas para instalar composer en AppEngine:

      mkdir -p ${HOME}/bin
      php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
      php -r "if (hash_file('SHA384', 'composer-setup.php') === rtrim(file_get_contents('https://composer.github.io/installer.sig'))) { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
      php composer-setup.php --filename=composer --install-dir=${HOME}/bin
      export PATH=${HOME}/bin:${PATH}

      Listo, ya poder ejecutar composer en la consola

      composer
         ______
        / ____/___  ____ ___  ____  ____  ________  _____
       / /   / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
      / /___/ /_/ / / / / / / /_/ / /_/ (__  )  __/ /
      \____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
                          /_/
      Composer version 1.2.0 2018-01-17 01:28:52
      
      ...
      ...


      Después hay que bajar cakephp 3.5.* y sus dependencias con composer

      composer self-update && composer create-project --no-dev --ignore-platform-reqs --prefer-dist cakephp/app CK35 3.5.*


      Editar el archivo CK35/composer.json y agregar la extencion intl que es requerida para que la active AppEngine en el Deploy de manera automatica por Google Cloud

      "require": {
              "php": ">=5.6",
              "ext-intl": "*",
              "cakephp/cakephp": "3.5.*",
              .....,
              .....,
      },
      ......
      .....


      Crear un archivo en CK35/app.yaml para activar el entorno PHP Flex, indicar la carpeta root publica, el archivo por el que pasan todas las llamas, carpeta estaticos que son publicas. Y variables del sistema que pueden ser leidas por PHP, para configurar la DBs, Debug, etc.. esto ultimo es a gusto.

      runtime: php
      env: flex
      runtime_config:
        document_root: webroot
        front_controller_file: index.php
      
      handlers:
      - url: /css
        static_dir: webroot/css
      - url: /img
        static_dir: webroot/img
      - url: /js
        static_dir: webroot/js
      - url: /favicon\.ico
        static_files: webroot/favicon.ico
        upload: webroot/favicon.ico
      - url: /.*
        script: index.php
      
      env_variables:
        # Uncomment the following to enable debug mode.
        CAKEPHP_DEBUG: '1'
      
        # If connecting via TCP/IP to Google Cloud SQL
        PROD_DB_HOSTNAME: "__PROD_DB_HOSTNAME__"
        PROD_DB_PORT: "__PROD_DB_PORT__"
      
        # If connecting via App Engine to Google Cloud SQL
        PROD_DB_UNIXSOCKET: "__PROD_DB_SOCKET__"
        PROD_DB_USERNAME: "__PROD_DB_USERNAME__"
        PROD_DB_PASSWORD: "__PROD_DB_PASSWORD__"
        PROD_DB_DATABASE: "__PROD_DB_DATABASE__"
      
        # Change below to match your settings for local development.
      
        # If connecting to MySQL using TCP/IP
        DEV_DB_HOSTNAME: "__DEV_DB_HOSTNAME__"
        DEV_DB_PORT: "__DEV_DB_PORT__"
      
        # If connecting to MySQL using sockets.
        DEV_DB_UNIXSOCKET: "__DEV_DB_SOCKET__"
        DEV_DB_USERNAME: "__DEV_DB_USERNAME__"
        DEV_DB_PASSWORD: "__DEV_DB_PASSWORD__"
        DEV_DB_DATABASE: "__DEV_DB_DATABASE__"


      Con esto, ya estamos listo para ejecutar el deploy dentro de la carpeta CK35 donde esta el app.yaml

      CK35/gcloud app deploy


      Le comento que hay que comentar en bootstrap.php la linea que carga los plugins que son instalados por composer para DEV ya que cuando se hace un DEPLOY no van a estar disponible los archivos y va da error que no encuentra los archivos, este error tonto puede hacer buscar el problema por un rato.  Un ejemplo es el Plugin DebugKit que es un requerimiento DEV para composer.

      O manejar de manera correcta la variable de entorno y poder CAKEPHP_DEBUG = '0' para que los plugin que se cargan para DEV no se intenten cargar después de hacer el DEPLOY