Monday, January 13, 2020

Cambiar el puerto de Apache Raspbian

#ejecutas este comando en la consola
sudo nano /etc/apache2/ports.conf

#donde dice
Listen 80
#cambiar por el puerto que deseas

Thursday, January 9, 2020

NetCore 3.1 Raspbian

#actualiza tu raspbian
sudo apt-get update
sudo apt-get upgrade -y

#baja el runtime y el SDK de dotnet core 3.1 
wget https://download.visualstudio.microsoft.com/download/pr/67766a96-eb8c-4cd2-bca4-ea63d2cc115c/7bf13840aa2ed88793b7315d5e0d74e6/dotnet-sdk-3.1.100-linux-arm.tar.gz

wget https://download.visualstudio.microsoft.com/download/pr/60d21925-7f8f-4004-9afe-aebd041d2d4a/0db2946738642d7f88f71f7800522e8c/dotnet-runtime-3.1.0-linux-arm.tar.gz

#creamos la carpeta donde quedará alojado el NetCore
mkdir dotnet-arm32
tar zxf dotnet-sdk-3.1.100-linux-arm.tar.gz -C $HOME/dotnet-arm32
tar zxf dotnet-runtime-3.1.0-linux-arm.tar.gz -C $HOME/dotnet-arm32

#solo puede ejecutar comandos .NET Core dentro de la carpeta dotnet-arm32. Para hacer que el comando "dotnet" se pueda ejecutar en todas partes, debe hacer algo como variables de entorno, que vincularán la carpeta dotnet-arm32 al nivel del sistema.

export DOTNET_ROOT=$HOME/dotnet-arm32
export PATH=$PATH:$HOME/dotnet-arm32

#Crea una app por consola para validar que funciono la instalacion
mkdir hello-netcore3.1
cd hello-netcore3.1/
dotnet new console
#para ejecutar el hola Mundo
dotnet run 
#Creamos la carpeta web
mkdir AspnetApp
cd AspnetApp/

#ahora podemos crear una app web con VS2019 , puede ser cualquiera solo debemos tener cuidado al publicar, ya que debe ser usando Framework-Dependent (FDD) y Portable. ya que esto se ejecutará nativamente en la Raspberry Pi

#en mi caso mi app se llama aspnetapp y para llamarla es colocando:

dotnet aspnetapp.dll 


# si ahora queremos que se auto ejecute 

sudo nano .profile 

# y agregamos esto al final del archivo.

export DOTNET_ROOT=$HOME/dotnet-arm32
export PATH=$PATH:$HOME/dotnet-arm32

# para validar que corre en todas las IPs de la máquina.
dotnet aspnetapp --urls "http://*:8080"

#finalmente hosteamos con nginx.
sudo apt-get install nginx -y
sudo /etc/init.d/nginx start

# respaldamos el archivo, siempre es bueno respaldar.
mv /etc/nginx/sites-available/default /etc/nginx/sites-available/default.bak

#creamos el nuevo archivo
sudo nano /etc/nginx/sites-available/default

server {
    listen        80 default_server;
    server_name   _;
    location / {
        proxy_pass         http://localhost:5000;
        proxy_http_version 1.1;
        proxy_set_header   Upgrade $http_upgrade;
        proxy_set_header   Connection keep-alive;
        proxy_set_header   Host $host;
        proxy_cache_bypass $http_upgrade;
        proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header   X-Forwarded-Proto $scheme;
    }
}

Host by Nginx with auto-restart capability
First, install and start Nginx:

sudo nginx -t
sudo nginx -s reload


sudo nano /etc/systemd/system/kestrel-aspnetapp.service

[Unit]
Description=ASP.NET Core 3.1 App - AspNet

[Service]
WorkingDirectory=/home/pi/aspnetApp
ExecStart=/home/pi/dotnet-arm32/dotnet /home/pi/aspnetApp/aspnetapp.dll
Restart=always
# Restart service after 10 seconds if the dotnet service crashes:
RestartSec=10
KillSignal=SIGINT
SyslogIdentifier=dotnet-AspnetApp
User=pi
Environment=ASPNETCORE_ENVIRONMENT=Production
Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false

[Install]
WantedBy=multi-user.target


sudo systemctl enable kestrel-aspnetapp.service
sudo systemctl start kestrel-aspnetapp.service
sudo systemctl status kestrel-aspnetapp.service

basado en https://edi.wang/post/2019/9/29/setup-net-core-30-runtime-and-sdk-on-raspberry-pi-4

editado por nuevo script bash de instalacion 
https://dotnet.microsoft.com/download/dotnet/scripts/v1/dotnet-install.sh

Wednesday, January 1, 2020

Respaldar la MicroSD con Raspbian buster 10 y el comando dd

#creamos el archivo de respaldo
sudo nano respaldo.sh

# podemos crear el archivo sin compromir
DAY=$(date +%A)
sudo dd if=/dev/mmcblk0 of=/home/pi/usb/Files/RPI4_backup-$DAY.img bs=4M status=progress

# podemos crear el archivo o asignando compresion con gzip
DAY=$(date +%A)
sudo dd if=/dev/mmcblk0 conv=sync,noerror bs=4M status=progress  | gzip -c  > /home/pi/usb/Files/RPI4_backup-$DAY.img.gz

#le cambiamos los permisos con chmod
chmod 777 respaldo.sh

#y si ahora quedemos calendarizar el proceso todos los dias a X hora podemos usar crontab
crontab -e

#en este caso el respaldo se ejecuta todos los dias a las 2 am
0 2 * * * /home/pi/./respaldo_rpi.sh

si deseamos truncar la unidad podemos obtener el tamaño maximo con fdisk -l

Device         Boot  Start      End  Sectors  Size Id Type
/dev/mmcblk0p1        8192   532479   524288  256M  c W95 FAT32 (LBA)
/dev/mmcblk0p2      532480 15892479 15360000  7.3G 83 Linux

y aparecerá el tamaño del sector en mi caso 512 bytes.
Disk /dev/mmcblk0: 29.7 GiB, 31914983424 bytes, 62333952 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x027fc595

#para hacer el respaldo 
sudo dd if=/dev/mmcblk0 of=/usb/Files/RPI4_backup.img bs=4M status=progress

#ejemplo de como truncar 
#truncate --size=$[(valor_de_End + 1)*512] imagen.img
truncate --size=$[(15360000 + 1)*512] /usb/Files/RPI4_backup.img

respaldo en otra unidad 
#sudo dd if=/dev/mmcblk0 of=/usb/Files/RPI4_backup.img bs=4M status=progress
path1=/1tb_usb/Files/RPI4_backup.img #asignaNombre
sudo dd if=/dev/mmcblk0 of=$path1 bs=4M status=progress #generaRespaldoFull
sudo truncate --size=$[(15360000 + 1)*512] $path1 #truncaElRespaldo

Instalar Samba Server en Raspbian buster 10

#instalamos samba server
sudo apt-get install samba samba-common-bin

#editamos el archivo de configuracion
sudo nano /etc/samba/smb.conf

#smb signing not required solution raspberry pi 4
[RPI4]
min protocol = SMB2_10
max protocol = SMB3_11
path = /usb/Files
writeable=Yes
create mask=0777
directory mask=0777
public=no

#agregamos usuario windows 
sudo adduser usuariowindows
sudo smbpasswd -a usuariowindows

#agregamos clave al usuario windows en este caso usuariowindowsde SMB
sudo smbpasswd -a usuariowindows

#reiniciamos el servicio
sudo systemctl restart smbd 

#por ultimo si queremos que se monte la unidad al inicio 
sudo nano /etc/rc.local 
#o
crontab -e
@reboot sudo mount /dev/sda5 /usb/

#para ver que disco levantar fdisk -l y revisar donde dice NTFS

# y agregamos el comando
sudo mount /dev/sda5 /usb/

#ver listado de usuariso Samba 
 sudo pdbedit -Lw

Instalar LAMP (Linux apache mysql php) en Raspbian buster 10


#actualizamos la raspberry
sudo apt update && sudo apt -y upgrade

#Ahora debemos instalar los paquetes php, php7.3-mysqli y mariadb-server:
sudo apt -y install php php-mysql mariadb-server

#posterior a la instalacion de mariadb es recomendable cambiar la clave del usuario root del Mysql

sudo mysql -u root 

USE mysql
update mysql.user set authentication_string=password('TuClave') where user='root' and Host ='localhost';
update user set plugin="mysql_native_password";
flush privileges;
quit

#reinicamos el servicio
service mysql start
service mysql stop
service mysql restart

#iniciamos nuevamente y ahora te solicitara la clave
mysql -u root -p

#con exit puedes salir de mysql en consola
#para validar que el php quedo instalado correctamente crearemos el script, llamdo info.php, en la ruta /var/www/html/:

sudo nano /var/www/html/info.php
#agregamos
<?php
// Show all information, defaults to INFO_ALL
phpinfo();
?>

#posterior a esto quise instalar PrestaShop y acá todos los paquetes faltantes

sudo apt-get install php-zip
sudo apt -y install libapache2-mod-php
sudo apt-get install php-xml
sudo apt install libapache2-mod-php php-curl
sudo apt-get install php7.3-intl
sudo a2enmod rewrite
#sudo nano /etc/php/7.3/apache2/php.ini # por  ultimo si deseas editar el php.ini
sudo service apache2 restart

how to overclock Rasbperry 4 - rpi4

#editamos el archivo de configuracion de inicio
sudo nano /boot/config.txt

#agregamos la nueva velocidad
arm_freq=1650

# si tiene un espacio o lo que sea no funcionará