lunes, 21 de diciembre de 2015

Script de permisos para Magento

Consideraciones iniciales:


  1. El usuario y grupo de apache son "www-data".
  2. El documentroot es "/var/www/html"

sudo chown -R www-data:www-data /var/www/html
sudo find /var/www/html/ -type d -exec chmod 500 {} \;
sudo find /var/www/html/ -type f -exec chmod 400 {} \;
sudo find /var/www/html/media -type d -exec chmod 700 {} \;
sudo find /var/www/html/var   -type d -exec chmod 700 {} \;
sudo find /var/www/html/media -type f -exec chmod 600 {} \;
sudo find /var/www/html/var   -type f -exec chmod 600 {} \;
sudo chmod 600 /var/www/html/includes/config.php
sudo chmod 700 /var/www/html/includes

jueves, 22 de octubre de 2015

SHELL, FUNCIONES PARA TRABAJAR CON ARCHIVOS EN HTDOCS

Como desarrollador de software en algunas ocasiones, es necesario realizar operaciones constantes sobre archivos lo cual a  más de uno nos a costado tener que reinstalar el kernel.

En está ocasión les presento algunas funciones de mi uso personal, las cuales me han ayudado a mitigar bastante este tipo de errores, antes de presentarlas quiero hacer énfasis en lo siguiente:
"Son funciones de mi uso personal, he decidido hacerlas públicas no como una recomendación, las hago públicas para que cualquiera que las encuentre útiles y quiera usarlas las adopte, ¿y por que no? las mejore".

En Bueno comenzamos, todo el código debe ir dentro del archivo .bashrc

#ESTA VARIABLE ES EL DocumentRoot DE NUESTROS PROYECTOS
HTDOCS=/var/www/html/

#####################################################################################################
# ESTA FUNCIÓN ES USADA PARA GENERAR EL AUTOCOMPLETE DE LAS FUNCIONES SIGUIENTES.
# POR EJEMPLO LA FUNCION cdw LA CUAL SIRVE PARA ACCEDER RÁPIDAMENTE A LAS SUBCARPETAS DE HTDOCS
#####################################################################################################
function _cdw(){
  directory=$HTDOCS
  cur="${COMP_WORDS[COMP_CWORD]}"
  curb=$(echo $cur | sed 's,[^/]*$,,')
  cmd="find $directory$curb -maxdepth 1 -type d -printf %p/\n "
  opts=$($cmd | sed s:$directory:: | sed s://*$:/:)
  COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
  return 0;
}

#####################################################################################################
# SIRVE PARA ACCEDER RÁPIDAMENTE A LAS SUBCARPETAS DE HTDOCS
# AL PRESIONAR <tab> AUTOCOMPLETA CON LAS SUBCARPETAS DE HTDOCS
#####################################################################################################
function cdw(){
    cd $HTDOCS$1
}
complete -o nospace -F _cdw cdw */

#####################################################################################################
# BORRA UNA SUBCARPETA DE HTDOCS
# AL PRESIONAR <tab> AUTOCOMPLETA CON LAS SUBCARPETAS DE HTDOCS
#####################################################################################################
function delete(){
if [ -z "$1" ]
    then
    echo "I CAN'T ERASE $HTDOCS"
else
    rm -rf $HTDOCS$1
fi
}

complete -o nospace -F _cdw delete */

#####################################################################################################
# CAMBIA LOS PERMISOS A UNA SUBCARPETA DE HTDOCS
# AL PRESIONAR <tab> AUTOCOMPLETA CON LAS SUBCARPETAS DE HTDOCS
#####################################################################################################
function shmod(){
    if [ -z "$2" ]
    then
        echo "I CAN'T CHANGE MODE TO $HTDOCS"
    else
        sudo chmod -R $1 $HTDOCS$2
    fi
}

complete -o nospace -F _cdw shmod */

martes, 7 de abril de 2015


LUNUX, FEDORA

Abrir aplicación si no se esta ejecutando , y si esta ejecutandose abrirla

sh -c "if test $(wmctrl -vxa nautilus 2>&1 | wc -l) -eq 1; then nautilus; fi"
sh -c "if test $(wmctrl -vxa chrome 2>&1 | wc -l) -eq 1; then google-chrome; fi"
sh -c "if test $(wmctrl -vxa phpstorm 2>&1 | wc -l) -eq 1; then phpstorm; fi"

viernes, 18 de abril de 2014

MAGENTO: Virtual host de NGINX para MAGENTO

Precondiciones:
  1. Tener instalado y funcionando NGINX y php-fpm
Variables:
  • {serverRoot}
    • Ruta donde se encuentra nuestra tienda.
  • {serverName}
    • Nombre de nuestro servidor.
  • {codigoTienda}
    • Código en MAGENTO de la tienda.
Consideraciones:
En instalaciones multitienda y por cuestiones de rendimiento se aconseja crear un virtualhost por cada tienda.


Proceso:
En el directorio de sites_enabled de NGINX crear el archivo {serverName}, con el siguiente contenido:

server {
    listen   80;
    root {serverRoot};
    index index.php;

    server_name {serverName};

    location ~* ^.+.(jpg|jpeg|gif|css|png|js|ico)$ {
        access_log        off;
        expires           30d;
        add_header Cache-Control "public";
    }

    location ^~ /app/                { deny all; }
    location ^~ /includes/           { deny all; }
    location ^~ /lib/                { deny all; }
    location ^~ /media/downloadable/ { deny all; }
    location ^~ /pkginfo/            { deny all; }
    location ^~ /report/config.xml   { deny all; }
    location ^~ /var/                { deny all; }

     location / {
         if ($uri ~ "^(.+.php)(/.+)") {
                set $path_info $1;
        }

        if (!-e $request_filename) {
            rewrite ^(.+)$ /index.php;
        }
    }

    fastcgi_param PATH_INFO $path_info;

    location ~ \.php$ {

        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;

        expires        off; ## Do not cache dynamic content
        fastcgi_buffer_size 256k;
        fastcgi_buffers 4 256k;
        fastcgi_busy_buffers_size 256k;
        fastcgi_read_timeout 120;

        fastcgi_param  MAGE_RUN_CODE {codigoTienda};

    }

    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    location ~ /\.ht {
        deny all;
    }

}

Recargarmos la configuración de NGINX y listo :D

sudo service nginx reload


MAGENTO: En subdirectorio de NGINX

Precondiciones:
  1. Tener funcionando NGINX con PHP
  2. Tener instalado MAGENTO como subdirectorio en el root de NGINX
Variables:
  • {miTienda}
    • Nombre del subdirectorio donde se encuentra Magento.
  • {admin}
    • Identificador del backend de nuestra tienda.
Proceso:

En el archivo de configuración de sitio de nginx, en mi caso

/etc/nginx/sites-enabled/default

Agregamos los siguientes location:

  location /{miTienda} {
        index index.php;
        try_files $uri $uri/ @handler;
        expires 30d;
        if ($uri ~ "^/index.php/{admin}.*$"){
            rewrite ^/index.php/
{admin}(.*) /{admin}$1 redirect;
        }
    }

    location ~ ^/{miTienda}/(app|includes|var|lib|media/downloadable|pkginfo|report/config.xml|var)/  {
       deny all;
    }

    location @handler { 
        rewrite / /{miTienda}/index.php; 
    }

UBUNTU: Migrar de APACHE a NGINX


Precondiciones:
  1. Tener apache funcionando
  2. Tener php5 funcionando en apache
Paso 1:
Remover apache, así sin más, sin miedo:


sudo apt-get remove apache2*


Paso 2:

Instalar php5-fpm con sus dependencias, este paso podría disparar algunos mensajes sobre algunos paquetes ya instalados:

sudo apt-get install php5-common php5-cli php5-fpm


Paso 3:
Instalamos nginx

sudo apt-get install nginx

Paso 4:
Comienzan las configuraciones :D, primero php-fpm

En el archivo:


    /etc/php5/fpm/pool.d/www.conf

 
Buscar la variable listen, que por default viene como:


    listen = 127.0.0.1:9000


La modificamos a:


    listen = /var/run/php5-fpm.sock


Tomen en cuenta el valor que asignen a listen, por que ese valor mas el prefijo "unix:" deben coincidir con la variable fastcgi_pass de nginx pues ese sera el socket por el que se comunicaran php y nginx.

 
Ahora nginx, en el arcivo:


    /etc/nginx/sites-enabled/default

Vamos primero a modificar la variable root, para no tener que mover nuestros proyectos actuales


root /var/www;

Luego de ello, buscamos el location que nos propone nginx para manejar las peticiones de php, y descomentamos las lineas necesarias para que quede algo así:


    location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
        # With php5-cgi alone:
        #fastcgi_pass 127.0.0.1:9000;
        # With php5-fpm:
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
    }

  
Noten que la variable fastcgi_pass tiene el prefijo "unix:" y el valor que le dimos a la variable listen de php-fpm, si dicha condición no se cumple la configuración no funcionara.

También sugiero agregar el siguiente location, para mejorar la descarga de imágenes y contenido estático
:

    location ~* ^.+.(jpg|jpeg|gif|css|png|js|ico)$ {
            access_log        off;
            expires           30d;
            add_header Cache-Control "public";
    }


Por ultimo agregamos el siguiente location, el cual impedirá el acceso a los archivos .htaccess de apache


    location ~ /\.ht {
        deny all;
    }


Bueno, al llegar a este punto solo nos queda una cosa por hacer


sudo service nginx restart

Y si todo salío como debe, visiten http://localhost y bienvendios a NGINX, y si no, como dice Kick Butowsky "Live Till It Hurts"