martes, 14 de febrero de 2017

Cómo montar un servidor LAMP (Linux Apache MySQL PHP7.0) Linux Mint




"La guía definitiva (o casi) para montar LAMP en tu computadora y no morir en el intento"

Prólogo:

Terminando el año 2016 tuve que reinstalar mi SO por problemas en el hardware, lamentablemente tuve que formatear dos discos duros, finalmente y a pesar de usar las herramientas de reparación habían daños físicos irreparables, opté por comprar un SSD y hacer una instalación en limpio, para dejar viejos y malos hábitos decidí escribir esta guía definitiva o casi, como ayuda de memoria para mi mismo al momento de tener que volver a instalar todo y para ayudar a otros colegas que necesiten tener una guía a mano, esta guía paso a paso es una recopilación de investigaciones que realicé por varios foros en inglés y en español y pretende ser una ayuda para evitar tener que realizar búsquedas en Google con resultados apócrifos.
https://www.linuxmint.com/


La configuración LAMP se realizó con éxito en un entorno Linux Mint 18.1 64 bits, no obstante para los derivados de Debian el procedimiento es similar.

Nivel de complejidad: Medio, Se prevé que el usuario esta familiarizado con los comandos básicos GNU/Linux y el uso de su terminal.

Nota: Se pudo haber realizado un script Bash para automatizar la instalación, pero por un tema didáctico y para evitar algunos errores en la programación para cada distribución, decidí documentar el procedimiento paso a paso, esta en cada uno encontrar los atajos posibles en base a este artículo. Esta publicación esta sujeta a cambios sin previo aviso, si considero alguna mejora u omisión se hará fe de erratas.

En varias ocasiones hago mención del editor Xed, pero esto depende de cada versión de distro que tengas instalada, puede ser que tengas Gedit, Pluma, etc.

Objetivo:

Instalar y poner en marcha un servidor de desarrollo para probar nuestras aplicaciones localmente andando en http://localhost

Escenario:

Un cliente nos pide realizar un sitio web, optamos por desarrollarlo con el CMS WordPress, para nuestras pruebas vamos a necesitar un web server que funcione en nuestra computadora en forma local sin necesidad de subir archivos a un hosting.

Resumen paso a paso:

1) Vamos a instalar AMP (Apache MySQL y PHP) en una distro derivada de Debian (por convención AMP ya que se supone que tenemos instalado GNU/Linux), phpMyAdmin, cURL para PHP7.0, sSMTP para el envío de e-mails desde nuestros programa.
2) Configurar el directorio www para alojar nuestras páginas.
3) Por último haremos unas pruebas.

PASO 1: 

Instalamos Apache2, MySQL Server, PHP 7.0, phpMyAdmin, cURL, php7.0-gd y sSMTP

sudo apt-get update
sudo apt-get install apache2 mysql-server libapache2-mod-php7.0 php7.0 php7.0-fpm php7.0-mysql -y phpmyadmin php7.0-curl php7.0-gd ssmtp
sudo /etc/init.d/apache2 restart

Durante la instalación de todas las aplicaciones nos van a aparecer unas pantallas de configuración
en el caso de la Configuración de mysql-server tenemos que inventar una clave y le damos a Aceptar


Durante la configuración de phpMyAdmin dejamos marcada la opción apache2 como esta en la captura y le damos Aceptar


En la siguiente captura de la configuración de phpMyAdmin nos pide configurar la base de datos le damos <Si> como esta en la imagen


En este punto también tenemos que inventar una clave para phpMyAdmin, si dejamos este campo en blanco se nos va a generar un password aleatorio, (sugiero poner una clave que recordemos)


si vamos a nuestro navegador y apuntamos a http://localhost veremos esta pantalla lo que significa que Apache esta corriendo y trabaja perfectamente


Para poder acceder a PhpMyAdmin tenemos que hacer una última configuración manual sobre el archivo apache2.conf

Configurar PhpMyAdmin

sudo xed /etc/apache2/apache2.conf

agregar al final del archivo la sig. linea:

Include /etc/phpmyadmin/apache.conf


Reiniciamos Apache para que los cambios surtan efecto
sudo /etc/init.d/apache2 restart

y vamos a http://localhost/phpmyadmin

deberíamos ver la pantalla de inicio de sesión como se muestra en la imagen de abajo


PASO 2: 

Configurar el directorio de publicación fuera del directorio que viene por defecto :

Nota: apache2 nos coloca por default el directorio de publicación en var/www/html

acá lo voy a poner en www dentro del root
abrimos apache2.conf desde la terminal

sudo xed /etc/apache2/apache2.conf
localizamos el siguiente nodo y lo comentamos con #
#<Directory /var/www/>
#    Options Indexes FollowSymLinks
#    AllowOverride None
#    Require all granted
#</Directory>

creamos nuestro propio directorio de publicación
<Directory /home/miusuario/www/>
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>

Ya casi terminamos con la configuración del directorio www que es el directorio o carpeta donde vamos a colocar nuestras páginas web en .html o .php osea todo el contenido web

desde la terminal tipeamos:
sudo xed /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/default-ssl.conf

se nos va a abrir el editor con dos (2) archivos que tenemos que editar buscando y reemplazando.
Localizamos la cadena #DocumentRoot con Ctrl+F cuando se nos abre el y una vez que estamos sobre la linea la cambiamos por la ruta donde queremos nuestro directorio www

#DocumentRoot /var/www/html

 cambiamos la ruta por la nuestra

 DocumentRoot /home/miusuario/www

 

 

Habilitar la sobreescritura de Apache2 (mod_rewrite)

sudo a2enmod rewrite

sudo /etc/init.d/apache2 restart

sudo nano /etc/apache2/sites-available/000-default.conf

<VirtualHost *:80>
  <Directory /var/www/html>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Require all granted
    </Directory>

    . . .
</VirtualHost>

PASO 3:

Pruebas:

dentro de la carpeta /home/miusuario/www creamos un archivo index.php y le agregamos esta linea:

<?php phpinfo(); ?>
y lo guardamos

Reiniciamos Apache,
vamos al navegador y escribimos http://localhost
si todo va bien tendríamos que ver una página con toda la información de PHP

cURL para PHP 7.0

Probamos que cURL este funcionando
vamos a nuestro directorio de publicación, supongamos que esta en /home/miusuario/www/example_homepage.txt a este archivo le damos permisos de lectura/escritura para todos osea chmod 0777 , lo que hace este pequeño script es capturar la url con cURL y enviarla al archivo .txt por eso necesitamos que sea un archivo que pueda escribirse.

<?php 
$ch = curl_init("http://taller-de-scripts.pw");
$fp = fopen("example_homepage.txt", "w");

curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_HEADER, 0);

curl_exec($ch);
curl_close($ch);
fclose($fp);
?> 

Por último vamos a configurar el programa sSMTP para poder enviar correos desde nuestras aplicaciones:

entramos como superuser al archivo de configuración de sSMTP
sudo xed  /etc/ssmtp/ssmtp.conf
el archivo de configuración tiene que quedar así
#
# Config file for sSMTP sendmail
#
# The person who gets all mail for userids < 1000
# Make this empty to disable rewriting.
root=a c a t u email@gmail.com

# The place where the mail goes. The actual machine name is required no 
# MX records are consulted. Commonly mailhosts are named mail.domain.com
mailhub=smtp.gmail.com:587

# Where will the mail seem to come from?
#rewriteDomain=

# The full hostname
hostname=localhost

# Are users allowed to set their own From: address?
# YES - Allow the user to specify their own From: address
# NO - Use the system generated From: address
FromLineOverride=YES

# Credenciales de la cuenta gmail que se vaya a usar
AuthUser=a c a t u e mail@gmail.com
AuthPass=tupass
UseSTARTTLS=YES
UseTLS=YES

Finalmente hacemos una prueba enviándonos un email a nosotros mismos usando la función mail() de PHP
dentro del directorio www creamos el archivo mail.php y le agregamos lo sig. y lo guardamos

<?php
$para = "alguncorreo@algundominio.com";
$from = "micorreo@gmail.com";
$asunto = "Mensaje de Prueba";
$mensaje = "Prueba de email sSMTP";
if(mail($para, $asunto, $mensaje,
"From: MiServidor <$from>\nReply-To: Nadie <$from>\nX-Mailer: PHP\nErrors-To: Nadie <$from>")) {echo "Mensaje enviado";} 
?>

abrimos el navegador y vamos a http://localhost/mail.php le damos Enter y si todo va bien nos tiene que aparecer un mensaje "Mensaje enviado", revisamos nuestro email.

Activando XMLRPC (no es necesario)

esto es necesario en aplicaciones como WordPress que usan este protocolo. Para habilitar la publicación remota lo instalamos
sudo apt-get install php7.0-xmlrpc
sudo apt-get install php-xmlrpc
y reiniciamos
service apache2 restart

Manejando errores

Por último cabe señalar que es muy importante cuando estamos en la fase de desarrollo y depuración poder tener un resumen de errores si nuestros scripts fallan, puede pasar que no este seteado por defecto el reporte de errores, entonces tenemos que abrir como administrador el archivo php.ini ubicado en (mi distro Linux Mint)  /etc/php/7.0/apache2/php.ini

ubicamos el trozo de código:
display_errors = Off
y lo seteamos a On así:
display_errors = On
reiniciamos apache y listo
service apache2 restart

con esto damos por instalado completamente nuestro entorno LAMP para poder trabajar en modo desarrollador.

Tips adicionales: 

A lo largo de los pasos de instalación tuvimos que reiniciar Apache para que los cambios surtan efecto, eso es algo habitual cada vez que cambiamos el comportamiento de Apache o MySQL, es bueno tener estos comandos a mano, para las funciones de inicio, reinicio y apagado. (los comandos están auto-explicados no necesitan mucha aclaración).

Apache (Debian / Ubuntu / Linux Mint):
sudo /etc/init.d/apache2 start
sudo /etc/init.d/apache2 restart
sudo /etc/init.d/apache2 stop
también se puede:
service apache2 start
service apache2 restart
service apache2 stop 
 
MySQL (Debian / Ubuntu / Linux Mint):
/etc/init.d/mysql start
/etc/init.d/mysql restart
/etc/init.d/mysql stop

Extra (descargar manuales):
Manual de referencia Apache (online)
Manual PHP
Manual MySQL


Ayuda (Links adicionales)
Estamos en Facebook!  
https://facebook.com/tallerdescripts
https://www.facebook.com/groups/4325sdyrty/?fref=ts



Hemos llegado al FIN!
Podes, copiar y re-publicar el contenido citando la fuente original apuntando un link hacia este blog y esta entrada, y agregando un link a nuestra página oficial en Facebook https://facebook.com/tallerdescripts.

miércoles, 25 de enero de 2017

Trabajar en Internet

Les presento una buena forma de ganar dinero en Internet, ya llevo años con esta empresa y siempre pagaron en tiempo y forma por eso se las recomiendo:

Cobro asegurado, pagos por PayPal, Payza, NETELLER, Skrill, ganacia mirando publicidad que podés dejar en modo pasivo mientras haces otras cosas, beneficios: ganancias por clics, por referidos, diferentes publicidades diarias, pago mínimo para los que se registren ahora es de 2 U$S, luego en los siguientes cobros es de 10 U$S que se llega con facilidad casi sin hacer nada.

Empieza a ganar dinero ya! registrate tocando el banner

martes, 24 de enero de 2017

Nokia 6

Hoy vamos a hablar de Nokia 6, un clásico de clásicos, cuando hablamos de Nokia o lo que fue Nokia antes de que la firma finlandesa fuera adquirida por Microsoft, eran teléfonos nobles, resistentes, de esos que se te caían al piso de canto de frente de costado o del lado que se te cayera y siempre resistía a golpes , arañazos  y todo tipo de maltratos.

En fin, si bien algo muy reclamado por el publico en general era un sistema operativo acorde a la tradición de esta marca, parece que la firma se hizo eco de las peticiones del publico y ahora fabricaron la versión 6 que incorpora finalmente Android 7 para hacer el deleite de grandes y chicos
las especificaciones técnicas son:

Diseño

  • Alto 154 mm
  • Ancho 75.8 mm
  • Grosor 7.85 mm
  • Peso No definido
El Nokia 6 pesa - g y tiene un grosor de 7.85 mm, mientras que mide 154 mm de alto y 75.8 mm de ancho.

Pantalla

  • Tamaño 5.5 pulgadas
  • Tipo IPS
  • Resolución 1920x1080
  • Densidad de píxeles 401 ppp
  • Tipo de protección Corning Gorilla Glass
El Nokia 6 cuenta con una pantalla IPS de 5.5 pulgadas, con resolución 1920x1080. Alcanza una densidad de píxeles de 401 ppp. Además, cuenta con protección Corning Gorilla Glass contra arañazos y golpes.

Hardware y rendimiento

  • Procesador Qualcomm Snapdragon 430
  • CPU Cortex A53
  • Núcleos 8
  • Velocidad 1.4 GHz
  • GPU Adreno 505
  • Memoria RAM 4 GB
  • Memoria Interna 64 GB
  • Ampliación por MicroSD
  • Hasta 128 GB
En cuanto a características técnicas, el procesador del Nokia 6 es un Cortex A53 de 8 núcleos y con una velocidad de reloj de 1.4 GHz. En el apartado de memoria, contamos con 4 GB de memoria RAM, y 64 GB de memoria interna o de almacenamiento. La memoria de almacenamiento se puede ampliar vía microSD.

Software

  • Sistema operativo Android
  • Versión SO 7.0
El Nokia 6 cuenta con Android como sistema operativo, y en su lanzamiento corre la versión 7.0.

Cámara

Cámara principal

  • Resolución 16 megapíxeles
  • Flash Flash LED
  • Vídeo No definido
  • Características Apertura f/2.0
La cámara trasera del 6 tiene una resolución de 16 megapíxeles. Cuenta con Flash LED. El 6 también cuenta con cámara frontal, de 8 megapíxeles.

Cámara frontal

  • Resolución 8 megapíxeles
  • Flash No definido
  • Características Apertura f/2.0

Batería

  • Capacidad 3000 mAh

Conectividad

  • NFC NO
  • Bluetooth 4.0
  • WiFi 802.11 b/g/n
  • Tipo de tarjeta SIM No definido
  • Dual Sim
  • Compatible 3G en España No definido
  • Compatible 4G en España No definido
Es además Dual SIM, por lo que puedes utilizar dos tarjetas al mismo tiempo. (datos gentileza computer hoy)



Se incendió Don Web (ex Dattatec)

Muchos usuarios que reniegan por el servicio de soporte de esta empresa ahora tienen un motivo más para renegar ya que los servicios a sus webs se vieron comprometidos por un incendio según nos relata el diario online rosarioplus.com



Un incendio en la empresa de datacenter Don Web, ubicada en Córdoba
al 3700, despertó este martes por la madrugada a los vecinos de barrio
Echesortu. El fuego fue controlado rápidamente por los bomberos
voluntarios y solo se registraron pérdidas materiales.

Según le informaron desde la Asociación de Bomberos Voluntarios de Rosario a Rosarioplus.com,
el foco ígneo fue controlado gracias al trabajo de dos dotaciones, lo
que aportó celeridad. Por el hecho, no hubo heridos, sólo pérdidas
materiales y un gran susto para los vecinos.


 Por su parte, la empresa de web hosting Don Web comunicó que en la
madrugada de este martes han "sufrido un incidente en uno de los
generadores de respaldo". "Ante la situación procedimos a la
inhabilitación del datacenter afectado, para evitar la propagación del
incidente, quedando sin servicios una parte importante de nuestros
clientes, llevando la tranquilidad que la información de los planes esta
intacta", explicó la compañía, a través de un comunicado.
Este verano de Enero de 2017 trajo mucho calor, las altas temperaturas quizá puedan ser la causa de estos males, el sobrecalentamiento en equipos es algo común por eso los servers y dattacenters deben estar debidamente refrigerados.


viernes, 15 de julio de 2016

Trucos para Gmail con tareas programadas

Estos son algunos "macros" o rutinas para hacer las tareas recurrentes en Gmail utilizando Google Apps Script

Empecemos:

Borrar emails por rango de fechas:
Que hace este script? Rta. Borra todos los correos por el rango de fechas especificado en la variable threads con los filtros after y before, debe especificarse el rango de fechas en formato Americano USA

function limpiarInbox() {

     var threads = GmailApp.search("after:2015/7/1 before:2016/1/1");
     for (var i = 0; i < threads.length; i++) {
         threads[i].moveToTrash();
         Logger.log("Ok");
     }

 }

Borrar todo el spam en la bandeja spam:

function limpiarSpam() {
var threads = GmailApp.search("is:Spam"); 
  for (var i = 0; i < threads.length; i++) {
   Logger.log("Asunto: "+threads[i].getFirstMessageSubject());     
    threads[i].moveToTrash();
    Logger.log("Ok");
 }
} 

Enviar a la papelera todos los correos de un remitente determinado

function limpiarFrom(){
var threads = GmailApp.search("from:apps-scripts-notifications@google.com"); 
  for (var i = 0; i < threads.length; i++) {     
    threads[i].moveToTrash();
    Logger.log("Ok");
 }
} 

Newsletter simple:
envia un email con el asunto y fecha actual y con formato HTML a todos los contactos con copia oculta como se describe en el parámetro bcc . Hay que señalar que el limite de envíos es de 100 correos diarios. (ver quotas https://developers.google.com/apps-script/guides/services/quotas)

function Newsletter() {
  var htmlBody = "Mensaje para la lista"; 

MailApp.sendEmail({
     to: "alguncorreo@mail.com",
     bcc: "info@mail.com, otro@mail.com, otromas@mail.com",
     subject: 'Boletin de noticias - ' + new Date(),
     htmlBody: htmlBody
  });
}




Esto es todo por el momento, estoy desarrollando funciones más complejas para diferentes tareas recurrentes,
si queres conocer más sobre GAS (Google Apps Script) podes remitirte a la página oficial donde hay guías y ejemplos para todo tipo de requerimientos

https://developers.google.com/apps-script/

Y no dudes en usar estos scripts, si te han sido de utilidad podes ayudarme con un enlace a mi blog o compartirlos citando la fuente. Un abrazo!.

martes, 3 de mayo de 2016

Migrar base de datos WordPress de servidor local a sitio web y visceversa

Algo muy frecuente es usar nuestra web de desarrollo en localhost para hacer todas las pruebas y experimentos antes de pasar el sitio a producción o nuestro espacio web definitivo, para migrar la base de datos lo que hacemos habitualmente es reemplazar todas las cadenas que contengan la palabra localhost a nuestrodominio.com, esta herramienta muy veloz realizada en Java nos permite de un soplo reemplazar cualquier archivo de texto a la cadena que deseemos. El vídeo muestra el programa en acción,

Uso,

se abre la linea de comandos o CMD en Windows
se pasan los tres parámetros al programa de la sig. manera:

Para pruebas en localhost:
java -jar rp.jar base.sql tuweb.com localhost


Para subir al servidor web de producción:
java -jar rp.jar base.sql localhost tuweb.com

esto nos generará un archivo modificado_archivo.sql


Programa

jueves, 31 de diciembre de 2015

Renombrar archivos en lote y con número de serie usando Linux - Bash

En una entrada anterior, que ya tiene unos años, había escrito un script para realizar esto con pocas lineas, pero dicho script tenia el problema que cuando empezaba a iterar los archivos con ls si encontraba archivos con el mismo nombre se sobrescribían y se borraban los archivos, este script permite hacer esta tarea de una forma más segura, igualmente úsenlo bajo su responsabilidad, no me hago cargo de pérdidas de información, lo he probado y funciona bien.


#!/bin/bash
########################################################
# Renombra archivos en lote y coloca nro. de serie
# Creado por Daniel Martín [ jue 31 dic 2015 ]
# licencia GNU GPL 2.0
# versión 1.0.0
# http://taller-de-scripts.pw
########################################################

let ARCH=0
IFS=$(echo -en "\n\b");
for directorio in $(ls *.png)
do
 let ARCH=ARCH+1 
 fich="arch-$ARCH.png"
if [ -f $fich ];
then
 echo "$fich No puede ser renombrado ya que siempre existe"
else
 mv $directorio $fich
fi
done