anúncios

quarta-feira, 16 de dezembro de 2020

Conhecendo o xrandr

O que é xrandr?

O xrandr é uma ferramenta de linha de comando para configuração de resoluções do monitor com base da placa de vídeo que tiver instalado no computador com Linux (Debian/Ubuntu).

Uso do xrandr

Para listar as resoluções permitidas que a placa de vídeo suporta

$ xrandr

Para poder utilizar uma resolução que não está listada no resultado do comando anterior. Antes precisa informar ao xrandr que é necessário calcular as coordenadas da tela e passar mais informações para criar o novo modo.

$ cvt 1920 1080 60

Aqui foi informado que pretende as informações para a resulão de 1280 horizontal, 800 vertical a 60hz.

1920x1080 59.96 Hz (CVT 2.07M9) hsync: 67.16 kHz; pclk: 173.00 MHz
Modeline "1920x1080_60.00" 173.00 1920 2048 2248 2576 1080 1083 1088 1120 -hsync +vsync

Para habilitar automaticamente

$ xrandr --auto

Para adicionar uma resolução com base do cvt

Após adicionar a resolução não listada no cvt, pode-se adicionar esse modo de resolução ao xrandr. A parte que interessa para o xrandr é a que vem após o "Modeline".

$ xrandr --newmode "1280x800_60.00" 173.00 1920 2048 2248 2576 1080 1083 1088 1120 -hsync +vsync

Não deve retornar nenhuma mensagem no terminal, caso esteja correto. Se retornar, reveja os procedimentos anteriores.

Para adicionar uma resolução

$ xrandr --addmode LVDS-1 1920x1080_60.00

Para alterar uma resolução

$ xrand --mode 1280x768

$ xrandr --output LVDS-1 --mode 1920x1080_60.00

Feito!

sexta-feira, 11 de dezembro de 2020

Conhecendo o Inxi

O que é Inxi?

Inxi é uma ferramenta que mostra informações de hardware,incluindo fornecedor, configuração de drivers, etc do computador com sistema operacional Linux.

Instalação do Inxi

Debian/Ubuntu

$ sudo apt install inxi

Algumas opções do inxi

  • -A: informações sobre áudio.
  • -b: informações básicas sobre o sistema.
  • -d: exibe lista dos drives ópticos (leitor e gravador de CD, DVD por exemplo).
  • -D: exibe informações sobre detalhes do HD, como modelo e capacidade.
  • -F: informações mais detalhadas sobre o sistema.
  • -G: informações sobre vídeo.
  • -n: informações sobre as interfaces de rede.
  • -p: informações sobre as partições do HD.

Com o inxi instalado, utilize uma das opções mencionadas.

$ inxi -F

Feito!

Transformando o CentOS em Oracle Linux

Em 8 de dezembro de 2020, foi anunciado o cronograma para o patrocínio do CentOS Linux e do CentOS Stream pela Red Hat:

  • Não haverá CentOS Linux 9.
  • As atualizações para a distribuição CentOS Linux 8 continuam até 31 de dezembro de 2021.
  • As atualizações para a distribuição CentOS Linux 7 continuam como antes até 30 de junho de 2024.
  • As atualizações para a distribuição CentOS Linux 6 terminaram em 30 de novembro de 2020.
  • O CentOS Stream 9 será lançado no segundo trimestre de 2021 como parte do processo de desenvolvimento do RHEL 9.
  • As atualizações para a distribuição do CentOS Stream 8 continuam durante toda a fase de suporte RHEL.

Uma opção seria transformar o CentOS que tem no servidor em Oracle Linux, para isso, execute como root os procedimentos abaixo:

# curl -O https://linux.oracle.com/switch/centos2ol.sh

# sh centos2ol.sh

# yum distro-sync

Pronto, o CentOS, agora é Oracle Linux.

Referências:

https://www.redhat.com/en/blog/faq-centos-stream-updates

https://www.zdnet.com/google-amp/article/red-hat-resets-centos-linux-and-users-are-angry/

Feito!

sábado, 5 de dezembro de 2020

Configurando o ambiente PHP 8 do jeito certo no Windows

PHP 8 do jeito certo no Windows 10

É comum no Windows usar ferramenta Wampp, Xampp, conhecidos como "amps" que inclui o Apache, PHP, MySQL e phpmyadmin, de início parece ser bom, mas devemos tomar cuidado para que não fiquemos presos nessas ferramentas de modo que não saibamos a trabalhar em outro ambiente. Principalmente para quem é iniciante ou está aprendendo, é importante saber trabalhar de modo desapegado, tanto para ter flexibilidade, quanto para entender como as coisas funcionam.

O desenvolvedor PHP no Windows precisa no mínimo saber usar o PHP instalado do zero, até mesmo porque a partir da versão 5.4, o PHP vem com servidor embutido que nos permite executar uma aplicação rapidamente usando o terminal.

Acesse https://php.net/downloads.php e faça o download do PHP para Windows. Recomendo o download da versão mais recente do PHP. Até a data de publicação deste post, a versão atual do PHP é 8.0.0.

Extrair, renomear para php-8.0.0 e copiar para C:\

Acessar C:\php-8.0.0 e renomear o arquivo php-development.ini para php.ini

session.save_path = "c:\Windows\Temp"
file_uploads = On
upload_max_filesize = 10M
max_file_uploads = 10M

Extensões

diretório das extensões

extension_dir="ext"

Habilitar as extensões. Por padrão vem comentadas, basta retirar o (ponto-e-vírgula ;) na frente.

extension=curl
extension=gd
extension=mbstring
extension=mysqli
extension=openssl
extension=pdo_mysql
extension=pdo_pgsql
extension=sockets

Habilitar os erros

error_reporting = E_ALL & ~E_NOTICE & ~E_STRICT
display_erros = On

Habilitar o JIT

opcache.enable=1
opcache.jit_buffer_size=100M
opcache.jit=1255

Adicionar no PATH do SO

Botão direito em "Meu Computador", Propriedades, Configurações avançadas do sistema, Variáveis de Ambiente, PATH, Novo e coloca o caminho "C:\php-8.0.0". Clique em OK. Feche todas as janelas restantes clicando em OK.

Abre o PowerShell e digite: php --version

PHP 8.0.0 (cli) (built: Nov 25 2020 22:02:58) (NTS Visual C++ 2019 x64)
Copyright (c) The PHP Group
Zend Engine v4.0.0-dev, Copyright (c) Zend Technologies

Crie um diretório www no lugar desejado e crie um arquivo info.php

<?php
phpinfo();

No diretório www, execute: php -S 127.0.0.0:8000

No browser, acesse http://localhost:8000

Feito!

domingo, 29 de novembro de 2020

Crie e gerencie shortlinks com Kutt

O que é Kutt?

Kutt é um sistema opensource com objetivo de encurtar URL com suporte para domínios personalizados. Encurte URLs, gerencie seus links e visualize as estatísticas de taxa de cliques.

De forma geral, o Kutt é uma alternativa ao Bittly , com a diferença que o Kutt permite alocar em servidor próprio.

O objetivo deste post, é explicar os procedimentos de instalação do Kutt em um ambiente Docker, caso ainda não tenha o Docker instalado, então verifica o howto de instalação do Docker e Docker-compose no Linux (Debian/Ubuntu/CentOS/Fedora)

Instalação do Kutt no Docker

Crie um diretório para o ambiente Kutt e nesse diretório copie o arquivo docker-compose.yml

Copie o arquivo wait-for-it.sh

Copie o arquivo .env-example e salve como .env no diretório que criou para o ambiente Kutt.

A estrutura deve estar algo assim:

ambiente-kutt
 docker-compose.yml
 wait-for-it.sh
 .env

Coloque as credencias do SGBD PostgreSQL definidas no docker-compose.yml e do e-mail transacional responsável para envio de configuração no cadastro da conta de acesso no arquivo .env

No diretório do ambiente Kutt, execute: docker-compose up -d

Nota: Não altere as tabulações do arquivo docker-compose.yml para o correto funcionamento.

Verifique outras parametrizações no arquivo .env

No browser http://localhost:3000

Feito!

segunda-feira, 23 de novembro de 2020

Retirar a solicitação de autenticação na impressora compartilhada no Linux

Caso tenha uma máquina Linux (Ubuntu, Mint) na estação que é solicitado autenticação do usuário local para imprimir qualquer documento em uma impressora compartilhada. Então, o objetivo deste post é retirar essa solicitação de autenticação para imprimir no Linux.

Segue os procedimentos:

Considerando que já tenha o CUPS instalado.

Parar o serviço CUPS


$ sudo service cups stop

Editar o arquivo printers.conf


$ sudo vim /etc/cups/printers.conf

Procure por: AuthInfoRequired username,password

Adicione o # na frente, que comenta a linha

# AuthInfoRequired username,password

Salve e saia do editor vim

ESC + :x

Inicie o serviço CUPS


$ sudo service cups start

Feito!

terça-feira, 17 de novembro de 2020

Aumentar o tamanho máximo do POST no upload de arquivos

Se já deparou com a mensagem "POST Content-Length of X bytes exceeds the limit of Y".

Mas você diz, que já alterou o upload_max_filesize para outro valor máximo permitido. OK, porém faltou alterar também o valor máximo do POST, no caso é post_max_size.

Então, edite o php.ini

De
post_max_size=40M

Para
post_max_size=256M ou 512M ou 1G

De
upload_max_filesize=40M

Para
upload_max_filesize=256M ou 512M ou 1G

Reinicie o servidor Apache ou Nginx

Segurança de limite requisição, adicionar no arquivo de Vhost o parâmetro LimitRequestBody com o tamanho máximo, colocar o valor em bytes.

Feito!

domingo, 15 de novembro de 2020

Conhecendo o Linphone

O que é Linphone?

Linphone é um cliente VoIP de código aberto que permite aos usuários realizar chamadas de voz, vídeo e mensagens instantâneas de texto com amigos e outros usuários.

Linphone foi lançado em 2001. Ele foi o primeiro aplicativo de código aberto usando o software SIP no Linux.

Com Linphone você pode se comunicar livremente com pessoas através da internet, utilizando o Protocolo de Iniciação de Sessão (Session Initiation Protocol – SIP).

Para quem não conhece, esse é um padrão aberto para telefonia via Internet que utiliza o modelo requisição/resposta", similar ao HTTP, para iniciar sessões de comunicação interativa entre usuários.

Esse protocolo é um padrão da Internet Engineering Task Force (IETF), estabelecido na RFC 2543.

Instalando o Linphone no Ubuntu/Mint


$ sudo add-apt-repository ppa:linphone/release
$ sudo apt update
$ sudo apt install linphone

Desisntalando o Linphone no Ubuntu/Mint


$ sudo add-apt-repository ppa:linphone/release --remove
$ sudo apt remove linphone
$ sudo apt autoremove

Feito!

sábado, 24 de outubro de 2020

Instalando Browser Edge for Linux

A Microsoft disponibiliza o browser Edge para Linux e os disponibiliza por meio de repositórios de pacotes APT e YUM, que corresponde as distros Debian e RHEL/CentOS, com suas derivações das distros mencionadas.

O objetivo deste post é de descrever os procedimentos de instalação do browser Edge por meio do repositório oficial para instalar com gerenciador de pacotes APT ou YUM.

RHEL, CentOS, Fedora

Enterprise Linux 6 (EL6)

$ sudo rpm -Uvh https://packages.microsoft.com/config/rhel/6/packages-microsoft-prod.rpm

Enterprise Linux 7 (EL7)

$ sudo rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm

Enterprise Linux 8 (EL8)

$ sudo rpm -Uvh https://packages.microsoft.com/config/rhel/8/packages-microsoft-prod.rpm

Ubuntu

Ubuntu 16.04 (Xenial)

$ curl -sSL https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
$ sudo apt-add-repository https://packages.microsoft.com/ubuntu/16.04/prod
$ sudo apt-get update

Ubuntu 18.04 (Bionic)

$ curl -sSL https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
$ sudo apt-add-repository https://packages.microsoft.com/ubuntu/18.04/prod
$ sudo apt-get update

Ubuntu 20.04 (Focal)
$ curl -sSL https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
$ sudo apt-add-repository https://packages.microsoft.com/ubuntu/20.04/prod
$ sudo apt-get update

Referências

Linux Software Repository for Microsoft Products

Feito!

sexta-feira, 16 de outubro de 2020

Resolvendo o CentOS (minimal) sem rede após instalado

Após instalar o CentOS (minimal), fica sem rede e internet por default.

O objetivo deste post é explicar os procedimentos para tornar o CentOS (minimal) acessível na rede e com internet no boot do sistema.

Use o TAB após digitar ifcfg- para autocompletar a interface de rede, pois isso varia, no meu caso foi enp3s0.

# vim /etc/sysconfig/network-scripts/ifcfg-enp3s0

Altere o "ONBOOT=no" para "ONBOOT=yes".

Salve e feche o editor vim com ESC + :x.

Reinicie o servidor ee agora a rede irá funcionar.

# reboot

Feito!

quinta-feira, 15 de outubro de 2020

Restaurando um HD de uma imagem

No post Criando uma imagem de um HD com Clonezilla foi explicado os procedimentos de criar uma imagem do HD com Clonezilla.

O objetivo deste post é descrever os procedimentos de restauração do HD de uma imagem, que foi feito na postagem anterior. Então, o pré-requisito está aqui

Uma vez tendo o pendrive bootável do Clonezilla.

Execute o pendrive bootável do Clonezilla.

A tela inicial do Clonezilla fornece opções de resolução de tela e uma variade de modos de execução. Selecione a opção "Clonezilla live (Default settings, VGA 800X600).

Na tela seguinte, seleciona o idioma de sua preferência e, em "Configuring console-data", escolha a opção "Don't touch keymap". Isso evita que o mapeamento do teclado seja apagado.

No próximo menu, selecione "start Clonezilla" e tecle enter.

Escolha a primeira opção "device-image work with disks or partitions using images" e confirme a seleção, depois marque a opção "local_dev use local device" ou outra opção dependendo do seu caso e valide as escolhas.

Selecione o HD que foi salvo a imagem.

Selecione o diretório para a imagem. No caso, "/ Diretório_raiz_no_dispositivo_local"

No próximo menu, selecione o "Beginner Mode". Selecione a opção "restoredisk" e confirme.

Irá localizar a imagem que foi salva no HD. Confirme com OK.

Selecionar o HD que irá restaurar a imagem.

Na fase que surgir diversas perguntas para respondermos "sim (y)" ou "não (n)", normalmente colocamos "y" em todas.

Após responder as perguntas, aguarde alguns minutos para fazer a restauração da imagem salva no HD, seja realizada. O tempo depende do tamanho do disco rígido.

Após concluir a restauração da imagem no HD, desligue o computador, retire o pendrive bootável do Clonezilla, ligue o computador e voi-la, restaurado o HD por meio de uma imagem.

Feito!

quarta-feira, 14 de outubro de 2020

Criando uma imagem de um disco rígido com Clonezilla

No post Clonando o disco rígido com o Clonezilla, foi explicado os procedimentos para realizar o clone de um HD origem para o HD destino de um computador.

O objetivo deste post é descrever os procedimentos para criar uma imagem a partir de um disco rígido de um computador com o Sistema Operacional (Windows ou Linux) instalado, usando o Clonezilla.

Precisa plugar um HD externo formatado ou pode mapear um diretório da rede para salvar a imagem gerada a partir do HD no computador.

Com o pendrive bootável do Clonezilla já pronto.

Execute o pendrive bootável do Clonezilla.

A tela inicial do Clonezilla fornece opções de resolução de tela e uma variade de modos de execução. Selecione a opção "Clonezilla live (Default settings, VGA 800X600).

Na tela seguinte, seleciona o idioma de sua preferência e, em "Configuring console-data", escolha a opção "Don't touch keymap". Isso evita que o mapeamento do teclado seja apagado.

No próximo menu, selecione "start Clonezilla" e tecle enter.

Escolha a primeira opção "device-image work with disks or partitions using images" e confirme a seleção, depois marque a opção "local_dev use local device" e valide as escolhas.

Na fase que surgir diversas perguntas para respondermos "sim (y)" ou "não (n)", normalmente colocamos "y" em todas.

Selecione o HD externo ou diretório mapeado da rede que será salvo a imagem clonada.

Selecione o diretório para a imagem. No caso, "/ Diretório_raiz_no_dispositivo_local"

No próximo menu, selecione o "Beginner Mode". Irá aparecer o menu com as opções "savedisk", "saveparts" e "exit", selecione "savedisk" e confirme.

Dê um nome para a imagem. Por padrão vem com a data do dia, mas pode colocar o nome que preferir.

Selecione o disco rígido de origem que será convertido em imagem.

Selecione "Skip cheking/repairing source file system".

Selecione a opção para verificar a imagem depois de salva para ter a certeza que funciona.

Na fase que surgir diversas perguntas para respondermos "sim (y)" ou "não (n)", normalmente colocamos "y" em todas.

Após responder as perguntas, aguarde alguns minutos para que a clonagem do HD em imagem seja realizada. O tempo depende do tamanho do disco rígido.

Após concluir a clonagem do disco rígido em imagem, pode ser utilizado a restauração dessa imagem gerada sem precisar instalar o sistema operacional, softwares e etc novamente.

Feito!

terça-feira, 13 de outubro de 2020

Clonando o disco rígido com o Clonezilla

O que é Clonezilla?

Clonezilla é um distro Linux derivada do Debian, com foco de clonagem de discos rígidos e partições. Está disponível nas versões Live e o Server, especialmente projetado para servidores.

As funcionalidades são semelhantes aos populares Norton Ghost e True Image, duas soluções amplamente utilizadas no Windows, com o objetivo de fazer a cópia da partição ou o HD completo, que pode ser usado para restaurar o sistema após um desastre que implique perda de dados.

Preparação do pendrive bootável para o Clonezilla

Para usar o Clonezilla, basta fazer o download Clonezilla Live. Recomendo utilizar a versão stable com base Debian. Após o download do Clonezilla Live, fazer a gravação da imagem ISO no pendrive pelo Rufus se estiver no Windows 10 ou Etcher se estiver no Linux (qualquer distro). Ambos fazem a gravação da ISO tornando o pendrive bootável.

O pendrive deve ser formato em FAT16, FAT32 ou NTFS.

Clonar o Sistema Operacional já instalado em uma máquina

Execute o pendrive bootável que preparou na seção anterior.

A tela inicial do Clonezilla fornece opções de resolução de tela e uma variade de modos de execução. Selecione a opção "Clonezilla live (Default settings, VGA 800X600).

Na tela seguinte, seleciona o idioma de sua preferência e, em "Configuring console-data", escolha a opção "Don't touch keymap". Isso evita que o mapeamento do teclado seja apagado.

No próximo menu, selecione "start Clonezilla" e tecle enter. A diferença nas opções: device-image e device-device. No device-image converte do HD em imagem e o device-device clona o HD para outro HD.

Escolha a opção "device-device work with disks or partitions using images" e confirme a seleção, depois marque a opção "local_dev use local device" e valide as escolhas.

No próximo menu, selecione o "Beginner Mode". Irá aparecer o menu "Select Mode", selecione "disk_local_disk local disk to local disk clone" e confirme.

Selecione o disco de origem que será clonado e confirme.

Selecione o disco de destino, o clone, e confirme.

Selecione "Skip cheking/repairing source file system", caso os discos rígidos origem e destino estejam OK.

Na fase que surgir diversas perguntas para respondermos "sim (y)" ou "não (n)", normalmente colocamos "y" em todas.

Após responder as perguntas, aguarde alguns minutos para que a clonagem seja realizada. O tempo depende do tamanho do disco rígido.

Após concluir a clonagem do disco rígido, pode ser utilizado a restauração desse clone do HD em outra máquina, sem precisar instalar o sistema operacional, softwares e etc novamente.

Feito!

segunda-feira, 12 de outubro de 2020

Instalando e Configurando o Novo SGA no Debian

O que é Novo SGA?

É um Sistema de Gerenciamento de Atendimento adaptável para grandes e pequenas organizações, desenvolvido em PHP com framework Symfony, criado em Dezembro de 2012 por Rogério Alencar Lino Filho.

O Novo SGA dispõe de funcionalidades para controlar a ordem da fila de atendimento e os tempos para atender, além de fornecer gráficos e estatísticas para aprimorar o atendimento ao cliente.

O objetivo deste post é descrever os procedimentos de instalação e configuração do Novo SGA no Debian.

Pré-requisitos:

Ter Apache, PHP, SGBD MySQL, o composer e o Git instalado.

módulos PHP essenciais: php-xml, php-curl, php-mbstring, php-zip

$ sudo apt install php-xml php-curl php-mbstring php-zip

Instalação e configuração do SGA


$ git clone https://github.com/novosga/novosga.git novosga2
$ sudo cp -r novosga2 /var/www/html
$ sudo rm -rf novosga2

Criar o banco de dados

$ sudo mysql -u root
mysql> CREATE DATABASE novosgadb;

Criar o usuário para o SGA

mysql> CREATE USER 'novosga'@'127.0.0.1' IDENTIFIED BY 'secret';

Aplicar o GRANT nas permissões

mysql> GRANT ALL PRIVILEGES ON novosga.* TO 'novosga'@'127.0.0.1' IDENTIFIED BY 'secret';
mysql> FLUSH PRIVILEGES;

Configuração de dependências do projeto


$ cd /var/www/html/novosga2
$ sudo composer install
$ sudo bin/console novosga:install
$ sudo bin/console cache:clear --no-debug --no-warmup --env=prod
$ sudo bin/console cache:warmup --env=prod

Adicionar as configurações do banco de dados no .env

LANGUAGE=pt_BR \
DATABASE_URL="mysql://novosga:secret@127.0.0.1:3306/novosgadb"


Definir permissão do grupo Apache

$ sudo chown www-data:www-data -R /var/www/html/novosga

Configuração do Vhost


$ vim vim /etc/apache2/sites-available/novosga.conf
< VirtualHost *:80 >
ServerName novosga.dominio.com.br
DocumentRoot "/var/www/html/novosga/public"
ErrorLog ${APACHE_LOG_DIR}/novosga.error.log
CustomLog ${APACHE_LOG_DIR}/novosga.access.log combined
< Directory "/var/www/html/novosga/public" >
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
< /Directory >
< /VirtualHost >

Habilitar o Vhost


$ sudo a2ensite novosga.conf
$ sudo systemctl reload apache2

Caso esteja em um ambiente local e tiver um servidor DNS, adicione novosga.dominio.com.br, caso contrário pode adicionar no arquivo /etc/hosts.

$ sudo vim /etc/hosts
  novosga.dominio.com.br IP
  

Caso esteja na VPS Linux (Debian), adicione a entrada novosga.dominio.com.br, obviamente substituir pelo seu domínio registrado na hospedagem ou registro.br.

No browser, acesse http://novosga.dominio.com.br

Feito!

segunda-feira, 21 de setembro de 2020

Instalando e Configurando o Nginx e PHP 8 beta4 no Ubuntu

O objetivo deste post é descrever os procedimentos de instalação e configuração do Nginx e PHP 8 beta4 que foi lançado em 17 de Setembro de 2020.

Ressaltando que por ser versão beta, não é recomendado utilizar em ambiente de produção, apenas em ambiente local, ok?

Instalação do servidor web Nginx

$ sudo apt install nginx

Instalação das dependências necessárias

$ sudo apt install -y wget gcc pkg-config libxml2-dev sqlite3 libsqlite3-dev zlib1g libz-dev

Download do PHP 8.0 beta4

$ wget -c https://downloads.php.net/~pollita/php-8.0.0beta4.tar.xz -o-

Extração do PHP 8.0 beta4 que foi feito o download

$ tar -Jxxvf php-8.0.0beta4.tar.xz && mv php-8.0.0beta4.tar.xz php-8

Acessar o diretório extraído

$ cd php-8

Habilitaro FPM e PDO MySQL no PHP

$ ./configure --enable-fpm --with-pdo-mysql

Compilação e instalação

$ make && sudo make install

Renomear o arquivo php.ini-development para php.ini

$ sudo cp php.ini-development /usr/local/php/php.ini

$ sudo vim /usr/local/php/php.ini

/cgi.fix

retira o ; na linha correspondente cgi.fix_pathinfo e deixe conforme abaixo

cgi.fix_pathinfo=0

ESC +:x (salvar e sair do editor vim)

$ sudo /usr/local/etc/php-fpm.d/www.conf.default /usr/local/etc/php-fmp.d/www.conf
$ sudo cp sapi/fpm/php-fpm /usr/local/bin
$ sudo cp sapi/fpm/php-fpm.conf /usr/local/etc/php-fpm.conf
$ sudo vim /usr/local/etc/php-fmp.d/www.conf

Alterar o usuário e grupo nas linhas correspondentes a user e group para www-data que é o usuário e grupo do servidor na distro Debian e derivados.
ESC +:x

$ sudo vim /usr/local/etc/php-fpm.conf

Adicionar no final do arquivo

include=/usr/local/etc/php-fpm.d/*.conf

Reload das configurações feitas

$ sudo /usr/local/bin/php-fpm
$ sudo vim /etc/nginx/sites-available/default

Adicionar index.php antes de index.html em index

Ajustar também as configurações feitas anteriormente no PHP FPM

location ~\.php$ {
include fastcgi_params;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_pass 127.0.0.1:9000;
}

ESC + :x (salvar e sair do editor vim)

$ sudo service nginx restart

Como o ambiente PHP 8 beta4 está em ambiente local e para ter permissão de escrita no DocumentRoot default do servidor web Nginx, então pode atribuir permissão ao seu usuário regular no /var/www/html

$ sudo chown -R $USER:USER /var/www/html $ sudo vim /var/www/html/info.php
    <?php 
      phpinfo();
  

Salva o arquivo e acessa no browser http://localhost/info.php

Feito!

sexta-feira, 18 de setembro de 2020

Configurando NAT no roteador

Você tem um servidor web de um projeto que está funcional na máquina virtual dentro de sua rede intranet e deseja disponibilizar o acesso externo, então, esse é o objetivo desse howto.

O presente howto explica os procedimentos utilizado no roteador TP-LINK, mas nos demais roteadores também deve funcionar, pois o conceito é o mesmo, apenas adequar a localização as configurações de NAT no seu roteador.

Pré-requisitos:

Saber o IP e credenciais do roteador

  1. No browser, acesse o IP do roteador com usuário e password
  2. No menu Forwarding e Virtual Server
  3. Adicione um novo redirecionamento em Add New
  4. Informe os campos: Interface, Service Port, IP Address, Internal Port, Protocol, Status e Common Service Port, após preencher, clicar no botão Save

Service Port: Especificar a porta utilizada no serviço no acesso externo.
PS: As portas 80, 21, 22 geralmente são bloqueadas no link residencial. No entanto, precisa escolher porta alta.

IP Address: Informar o IP da rede local que irá responder as requisições.

Internal Port: Especificar a porta utilizada no serviço interno. Por exemplo, a requisição pode chegar na porta 8080 no externo e na porta 80 no interno. O usual é bom utilizar a mesma porta no externo e interno.

Protocol: Qual protocolo irá redirecionar?

  • ALL: significa protocolo TCP e UDP serão redirecionados.
  • TCP: apenas o protocolo TCP irá ser redirecionado.
  • UDP: apenas o protocolo UDP irá ser redirecionado.

Status: Para habilitar a regra, selecione Enable.

Common Service Port: Selecione os serviços pré-configurados defaults. Por exemplo, caso o objetivo for configurar NAT para servidor web, selecione HTTP e o IP Address, finalize clicando no botão Save.

Observações

O redirecionamento não funciona na rede intranet. Para testar o redirecionamento é necessário estar fora da rede intranet, faça o teste no smartphone conectado no 3G, 4G ou peça para algum conhecido acessar de fora.

Esteja ciente que abrir as portas no roteador, qualquer pessoa conectada a Internet irá ter acesso, então alinhe com a segurança do servidor que liberou acesso externo.

Feito!

segunda-feira, 14 de setembro de 2020

Conhecendo o TeamViewer

O que é TeamViewer?

O TeamViewer é um software proprietário para acesso remoto, compartilhamento de área de trabalho, conferência online e transferência de arquivos entre computadores. O software opera dentro dos sistemas operacionais: Microsoft Windows, macOS, Linux, Android, iOS. Também é possível conectar a uma máquina com o TeamViewer via browser.

Enquanto o foco principal da aplicação é o acesso remoto a computadores, também estão incluídos recursos de colaboração e de apresentação.

Procedimentos de instalação do TeamViewer

Acesse a versão do TeamViewer e faça o download conforme a versão da máquina que irá conectar que deve ser a mesma.

Debian e derivados (Ubuntu, Mint)


TeamViewer v14.7.250049

$ wget -c https://download.teamviewer.com/download/linux/version_14x/teamviewer_amd64.deb

OU TeamViewer v13.2.256470

$ wget -c https://download.teamviewer.com/download/linux/version_13x/teamviewer_amd64.deb

OU TeamViewer v12.0.250640

$ wget -c https://download.teamviewer.com/download/version_12x/teamviewer_amd64.deb

OU TeamViewer v11.0.256402

$ wget -c https://download.teamviewer.com/download/version_11x/teamviewer_amd64.deb

OU TeamViewer v10.0.254577

$ wget -c https://download.teamviewer.com/download/version_10x/teamviewer_amd64.deb

Execução do TeamViewer para instalar o pacote que foi feito o download de uma das versões mencionadas via DPKG

$ sudo dpkg -i teamviewer_amd64.deb

CentOS e derivados (Fedora)


TeamViewer v14.7.250049

$ wget -c https://download.teamviewer.com/download/linux/version_14x/teamviewer.x86_64.rpm

OU TeamViewer v13.2.256470

$ wget -c https://download.teamviewer.com/download/linux/version_13x/teamviewer.x86_64.rpm

OU TeamViewer v12.0.250640

$ wget -c https://download.teamviewer.com/download/version_12x/teamviewer.i686.rpm

OU TeamViewer v11.0.256402

$ wget -c https://download.teamviewer.com/download/version_11x/teamviewer.i686.rpm

OU TeamViewer v10.0.254577

$ wget -c https://download.teamviewer.com/download/version_10x/teamviewer.i686.rpm

Para versões TeamViewer 14 e 13

$ sudo rpm -i teamviewer.x86_64.rpm

Para versões TeamViewer 12, 11 e 10

$ sudo rpm -i teamviewer.i686.rpm

Feito!

domingo, 13 de setembro de 2020

Conhecendo o Remmina

O que é Remmina?

Remmina é um cliente de ambiente de trabalho remoto para sistemas operacionais baseados em POSIX. Ele possui suporte aos protocolos Remote Desktop Protocol, VNC, NX, XDMCP, SPICE e SSH.

É utilizado para acessar máquinas Windows a partir do Linux de forma remota.

O Remmina é software livre sob licença GNU GPL, escrito em C e GTK+.

Características do Remmina

  • Permite manter uma lista de perfis de conexão, organizados por grupos;
  • Permite fazer conexões colocando diretamente o endereço do servidor;
  • Os desktops remotos com resoluções mais elevadas são roláveis/escaláveis na janela e no modo de tela cheia;
  • Modo de tela cheia View-port: a área de trabalho remota ajusta automaticamente quando o mouse se move sobre a borda da tela;
  • Barra de ferramentas flutuante no modo de tela cheia, permite alternar entre os modos, ativar o teclado, minimizar, etc;
  • Interface com guias, opcionalmente gerenciada por grupos;
  • Ícone da bandeja, permite acessar rapidamente perfis de conexão configurados.

Instalação do Remmina no Ubuntu/Mint via APT

Adicionar o repositório do Remmina

$ sudo add-apt-repository ppa:remmina-ppa-team/remmina-next

Atualizar o gerenciador de pacotes

$ sudo apt update

Instalar o pacote e os plugins do Remmina

$ sudo apt install remmina remmina-plugin-rdp remmina-plugin-secret

Instalação do Remmina no Fedora

Adicionar o repositório do Remmina

$ dnf copr enable hubbitus/remmina-next

Instalação do pacote Remmina

$ dnf upgrade --refresh 'remmina*' 'freerdp*'

Raspberry Pi

$ sudo apt install dirmngr
$ sudo apt-key adv --fetch-keys https://www.remmina.org/raspbian/remmina_raspbian.asc
$ sudo bash -c 'echo "deb https://www.remmina.org/raspbian/ buster main" > /etc/apt/sources.list.d/$ remmina_raspbian.list'
$ sudo apt update
$ sudo apt install remmina
$ sudo apt install gnome-keyring

Referências

https://remmina.org/how-to-install-remmina/

Feito!

sábado, 12 de setembro de 2020

Habilitando o Instant Client Oracle no PHP com CentOS

Ambiente PHP com MariaDB e OCI8 habilitado no CentOS

# yum update
# yum install epel-release -y
# yum install php php-cli php-pdo php-curl php-gd php-xml php-mbstring systemtap-sdt-devel php-pear php-devel mariadb-server make curl

Configuração de segurança do MySQL/MariaDB

# mysql_secure_installation

Logar no usuário administrador do MariaDB

# mysql -u root

Criar o banco de dados, usuário e permissão do usuário no MariaDB

MariaDB [(none)]> CREATE DATABASE ;
MariaDB [(none)]> CREATE USER 'usuario'@'127.0.0.1' IDENTIFIED BY 'secret';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON nomedb.* TO user@127.0.0.1;
MariaDB [(none)]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.001 sec)

Download do Instant Client Oracle.

Se a versão do Oracle for 10g ou 11g, faça o download da versão 11.2.x do Instant Client Oracle. Nesse post, foi instalado a versão 11.2.0.4.0-1.

Como essa versão não é atual, então precisará criar uma conta no site do Oracle para poder fazer o download pelo link mencionado.

Após de ter feito o download Instant Client Oracle (basic, devel, sqlplus), segue o procedimento para instalação.

# rpm -Uvh oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.rpm
# rpm -Uvh oracle-instantclient11.2-devel-11.2.0.4.0-1.x86_64.rpm
# rpm -Uvh oracle-instantclient11.2-sqlplus-11.2.0.4.0-1.x86_64.rpm

# dnf install libnsl

Definição de variáveis de ambiente e adicionar no PATH

export LD_LIBRARY_PATH="/usr/lib/oracle/11.2/client64/lib/"
export ORACLE="/usr/lib/oracle/11.2/client64/"
export PHP_DTRACE=yes
export PATH=$PATH:$LD_LIBRARY:$ORACLE:$PHP_DTRACE

Download OCI8

Acesse https://pecl.php.net/package/oci8 e faça o download do OCI8 e segue os procedimentos.

$ tar xzvf oci8-2.2.0.tgz
$ cd oci8-2.2.0/
$ phpize
$ ./configure --with-oci8=instantclient,/usr/lib/oracle/11.2/client64/lib/
$ make
# make install

Installing shared extensions: /usr/lib64/php/modules/

Criar o arquivo oci8.ini no /etc/php.d

# vim /etc/php.d/oci8.ini

Adicionar a linha abaixo

extension=oci8.so
# systemctl reload httpd

Verificar se o OCI8 foi habilitado no PHP

# php -i | grep oci8
/etc/php.d/oci8.ini
oci8
oci8.connection_class => no value => no value
oci8.default_prefetch => 100 => 100
oci8.events => Off => Off
oci8.max_persistent => -1 => -1
oci8.old_oci_close_semantics => Off => Off
oci8.persistent_timeout => -1 => -1
oci8.ping_interval => 60 => 60
oci8.privileged_connect => Off => Off
oci8.statement_cache_size => 20 => 20

Inicialização dos serviços Apache (httpd), MariaDB (fork do MySQL)

# systemctl stop httpd
# systemctl start httpd
# systemctl enable httpd
# systemctl start mariadb
# systemctl enable mariadb

Liberar a porta 80 no firewall para o acesso no INPUT e FORWARD

# firewall-cmd --add-port=80/tcp --permanent

Teste básico

Testar com a função phpinfo() no info.php se a extensão OCI8 foi habilitada corretamente.

# vim /var/www/html/info.php
    <?php 
       phpinfo();

Confere o screenshot abaixo

Caso não exibir o OCI8 habilitado no phpinfo() e tenha feito a configuração conforme os procedimentos descritos de forma correta, então reinicie no comando
# reboot

Feito!

sexta-feira, 11 de setembro de 2020

Conhecendo o ZoneMinder

Foram publicados dois howtos de procedimentos de Instalação e Configuração do ZoneMinder no CentOS e Instalação e Configuração do ZoneMinder no Debian

O objetivo deste post é apresentar as principais funcionalidades de uso do ZoneMinder

O idioma default do ZoneMinder é em inglês, então os procedimentos são explicados nesse idioma.

Com o ZoneMinder instalado e configurado no Debian ou CentOS, conforme os howtos dos links mencionados, acesse no browser http://IPSERVIDOR/zm

O ZoneMinder considera as câmeras como dispositivos monitorados, que é indicado pelo Monitor, assim para adicionar uma câmera, clicarr no botão "Add New Monitor".

Cadastro de câmera IP ou DVR

Para adicionar as câmeras IP ou DVR, segue as etapas abaixo:

Na aba General

Informa o nome da câmera, para facilitar, coloque o nome do local onde a câmera está localizada.

Source Type, selecione FFmpeg

Function, inclui as funções, Monitor, Modetec, Record, Mirecord.

Monitor - apenas visualização

Modetec - detecção de movimento

Record - gravação em tempo real a cada minuto que a câmera é renderizada

Mirecord - idem ao Record e Modetec simultâneos

Clicar no botão Save

Na aba Source

Source Path, informar a URL RTSP no padrão para câmera IP rtsp://username:password@ipaddress:port/live1.sdp ou
DVR rtsp://username:password@ipaddress:portRTSP/Streaming/Channels/number_cam01

Informe a resolução da câmera nos campos Capture With (pixels) e Capture Height (pixels).

Clicar no botão Save

Acessar as câmeras IP ou DVR cadastrados

Após cadastrar a câmera IP ou DVR, na página principal, clique no link correspondente ao nome definido no cadastro para acessar a câmera IP ou DVR, que irá redirecionar e visualizará conforme a resolução definida.

Alterar idioma no ZoneMinder

Esse post foi definido a alteração do idioma para o português do Brasil

Acesse o menu

<Options>System e no campo LANG_DEFAULT selecione pt_br

Autenticação de usuário e criar novos usuários no ZoneMinder

Por default o ZoneMinder acessa sem autenticação, mas pode habilitar e criar novos usuários com permissionamento.

Acesse o menu Options>Users

Clica no link do nome de usuário, o primeiro usuário é admin e define uma senha e salva, a partir deste ponto ao acessar o ZoneMinder, irá pedir usuário e senha.

Para criar novo usuário com permissionamento, vai em Options>Users e clicar no botão ADD USER/ADICIONAR USUÁRIO, informe o nome de usuário, password e os módulos que o usuário irá ter acesso.

Storage do ZoneMinder

Acesse o menu Options>Storage

O diretório default é /var/cache/zoneminder, onde tem os diretórios events, images correspondentes a câmera IP e DVR.

Pode integrar com o S3 da AWS ou criar uma partição LVM de pelo menos 1TB se for utilizar o recurso de gravação de imagens das câmeras IP ou DVR.

Feito!

quinta-feira, 10 de setembro de 2020

Instalando e Configurando o ZoneMinder no Debian

O que é ZoneMinder?

É um sistema com licença GPL, código aberto, de CFTV/IP que possui as principais funções de visualização, gravação, detecção de movimento, possui suporte a câmeras USB, IP e DVR.

O objetivo deste post é explicar os procedimentos de instalação e configuração do ZoneMinder no Debian 10

Instalação dos pacotes necessários

# apt install apache2 mariadb-server php php-mysql libapache2-mod-php

Adicionar o repositório no sources.list

# vim /etc/apt/sources.list
deb https://zmrepo.zoneminder.com/debian/release-1.34 buster/

Salvar e sair do editor vim
ESC +:x

Importação da chave do Zoneminder

# apt install apt-transport-https gnupg
$ wget -O - https://zmrepo.zoneminder.com/debian/archive-keyring.gpg | sudo apt-key add -

Atualização do repositório

# apt update
# apt install zoneminder

Configuração de segurança do MySQL/MariaDB

# mysql_secure_installation
# mysql -u root

MariaDB [(none)]> CREATE DATABASE zm;
MariaDB [(none)]> CREATE USER 'zmuser'@'127.0.0.1' IDENTIFIED BY 'secret';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON zm.* to 'zmuser'@'127.0.0.1';
MariaDB [(none)]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.001 sec)


Habilitar e inicializar o serviço do MySQL/MariaDB


# systemctl enable mariadb
# systemctl start mariadb


Importação do banco de dados criado

# mysql -uroot -p < /usr/share/zoneminder/db/zm_create.sql

Adicionar as credenciais do banco de dados no arquivo de configuração

# vim /etc/zm/zm.conf
ZM_DB_HOST=127.0.0.1
ZM_DB_NAME=zm
ZM_DB_USER=zmuser
ZM_DB_PASS=secret

Inicializar o serviço

# systemmctl enable httpd
# systemctl enable zoneminder
# systemctl start zoneminder


Criar o link símbolico

# ln -s /etc/zm/apache.conf /etc/apache2/conf.d/zoneminder.conf

Reiniciar o Apache

# systemctl restart apache2

No browser acesse http://IPSERVIDOR/zm

Feito!

quarta-feira, 9 de setembro de 2020

Instalando e Configurando o ZoneMinder no CentOS

O que é ZoneMinder?

É um sistema com licença GPL, código aberto, de CFTV/IP que possui as principais funções de visualização, gravação, detecção de movimento, possui suporte a câmeras USB, IP e DVR.

O objetivo deste post é explicar os procedimentos de instalação e configuração do ZoneMinder no CentOS 8

Instalação dos pacotes necessários

# yum -y install httpd mariadb mariadb-server mod_ssl php-mbstring php php-mysql wget
# yum -y install epel-release

# dnf install --nogpgcheck https://download1.rpmfusion.org/free/el/rpmfusion-free-release-8.noarch.rpm
# dnf install zoneminder

Desabilitar o SELINUX

# setenforce 0
# sed -i --follow-symlinks 's/^SELINUX=.*/SELINUX=disabled/g' /etc/sysconfig/selinux


Habilitar e inicializar o serviço do MySQL/MariaDB


# systemctl enable mariadb
# systemctl start mariadb


Configuração de segurança do MySQL/MariaDB

# mysql_secure_installation
# mysql -u root

MariaDB [(none)]> CREATE DATABASE zm;
MariaDB [(none)]> CREATE USER 'zmuser'@'127.0.0.1' IDENTIFIED BY 'secret';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON zm.* 'zmuser'@'127.0.0.1';
MariaDB [(none)]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.001 sec)


Importação do banco de dados criado

# mysql -uroot -p < /usr/share/zoneminder/db/zm_create.sql

Adicionar as credenciais do banco de dados no arquivo de configuração

# vim /etc/zm/zm.conf
ZM_DB_HOST=127.0.0.1
ZM_DB_NAME=zm
ZM_DB_USER=zmuser
ZM_DB_PASS=secret

Inicializar o serviço

# systemmctl enable httpd
# systemctl enable zoneminder
# systemctl start zoneminder


Criar o link símbolico

# ln -s /etc/zm/www/zoneminder.httpd.conf /etc/httpd/conf.d/zoneminder.conf

Reiniciar o Apache

# systemctl restart httpd

O CentOS tem firewall com regras restritivas por padrão, então precisa liberar as portas necessárias, se caso for utilizar certificado SSL, deve ser liberado a porta 443.

# firewall-cmd --zone=public --add-port=80/tcp --permanent
# firewall-cmd --zone=public --add-port=443/tcp --permanent
# firewall-cmd --reload


No browser acesse http://IPSERVIDOR/zm

Feito!

sexta-feira, 4 de setembro de 2020

Atualizar Ubuntu Server 14-04 para 20-04 LTS

LTS é uma abreviatura de "Long Term Support". Uma nova versão do LTS é lançada a cada dois anos e recebe cinco anos de suporte e patches de cinco anos.

A versão mais recente do Ubuntu até a data de publicação deste post é 20.04 LTS, e codinome como Focal Fossa. Ubuntu 20.04 lançado em 23 de Abril de 2020.

O objetivo deste post é atualizar a versão existente do Ubuntu Server Linux 14.04 LTS para o Ubuntu Server 20.04 LTS.

root@perolanegra:~# lsb_release -a

No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 14.04.6 LTS
Release:        14.04
Codename:       trusty

Na primeira vez, atualiza para 16.04

Na segunda vez, atualiza para 18.04

Na terceira vez, atualiza para 20.04

Detalhe foi definido a chave LTS no arquivo /etc/update-manager/release-upgrades

Atualização dos pacotes instalados na versão existente

$ sudo apt update
$ sudo apt upgrade
$ sudo apt dist-upgrade

Remover o kernel antigo

$ sudo apt-get --purge autoremove

Instalar a ferramenta update-manager-core

$ sudo apt install update-manager-core

$ sudo vim /etc/update-manager/release-upgrades

Deve estar como abaixo


Prompt=lts

Instalar a versão da próxima release

$ sudo do-release-upgrade

Reinicie o sistema

$ sudo reboot

Feito!

terça-feira, 25 de agosto de 2020

Aniversário do Linux

O Linux é o kernel que inclui nas diversas distribuições (distros) existentes, as principais distros são: Slackware, Debian, CentOS, RHEL, Arch, Ubuntu, Fedora, Manjaro, openSUSE, Gentoo, Mint, Pop!_OS.


O Linux foi criado por Linus Torvalds em 1991, em Helsinki. O nome Linux surgiu da mistura de Linus com Unix, que é o sistema operacional dos anos 70 da AT&T Bell Laboratories.

O lançamento do Linux é no dia 25 de Agosto de 1991, que o Linus anunciou o Linux em um post no newsgroup "comp.os.minix" da Usenet.

Hello everybody out there using minix

I'm doing a (free) operating system (just a hobby, won't be big and professional like gnu) for 386(486) AT clones. This has been brewing since april, and is starting to get ready. I'd like any feedback on things people like/dislike in minix, as my OS resembles it somewhat (same physical layout of the file-system (due to practical reasons) among other things).

I've currently ported bash(1.08) and gcc(1.40), and things seem to work. This implies that I'll get something practical within a few months, and I'd like to know what features most people would want. Any suggestions are welcome, but I won't promise I'll implement them :-)

Linus (torvalds@kruuna.helsinki.fi)

PS. Yes - it's free of any minix code, and it has a multi-threaded fs. It is NOT portable (uses 386 task switching etc), and it probably never will support anything other than AT-harddisks, as that's all I have :-(.

— Linus Torvalds

Conheça melhor a história do Linux e software livre

Para saber mais sobre o surgimento do movimento software livre e Linux, assista o documentário Revolution OS, pesquise no Youtube que tem esse documentário.

Feito!

sexta-feira, 21 de agosto de 2020

9 anos de blog

O blog está completando hoje, 21 de Agosto de 2020, 9 anos!


Gostaria de agradecer a todos pelo prestígio e a paciência de ler os posts que são publicados. Espero continuar compartilhando conhecimentos no blog para nossos leitores. Continuem prestigiando e divulgando o blog Mundo da Computação Integral, assim aumentamos nossa comunidade.

quarta-feira, 12 de agosto de 2020

Instalando e Configurando a stack LEMP no CentOS

O que é LEMP?

O termo LEMP é a junção do sistema operacional Linux, servidor web Nginx, SGBD MySQL e a linguagem PHP, formando o ambiente PHP completo.

Atualize o repositório

# yum update
# yum install epel-release

Instalação dos pacotes LEMP


# yum install nginx mariadb-server mariadb php php-mysql php-pdo php-cli php-curl php-fpm php-mbstring php-xml

Ajuste de configuração do MySQL


# mysql_secure_installation

Pressione Y e ENTER para aceitar as configuração padrão para todas as perguntas. Isso irá remover alguns usuários anônimos e o banco de dados teste, desativará os logins remotos ao root, e carregará essas novas regras do MySQL/MariaDB.

Inicializar os serviços e habilitar no boot do Nginx e MySQL


Nginx

# systemctl start nginx
# systemctl enable nginx

MySQL/MariaDB

# systemctl start mariadb
# systemctl enable mariadb

O CentOS vem com firewall habilitado e precisa liberar a porta 80 para acessar o servidor

# firewall-cmd --permanent --add-port=80/tcp
# firewall-cmd --reload

Edite o arquivo /etc/php-fpm.d/www.conf, substituir em user e group de apache por nginx, conforme abaixo:

; RPM: apache user chosen to provide access to the same directories as httpd
user = nginx
; RPM: Keep a group allowed to write in log dir.
group = nginx

Por padrão, php-fpm irá escutar em um host e porta específicos sobre TCP. Queremos alterar essa configuração para que ela ouça um arquivo de socket local, pois isso melhora o desempenho geral do servidor.

Altere a linha que contém a diretiva de escuta no arquivo /etc/php-fpm.d/www.conf para o seguinte:

listen = /var/run/php-fpm/php-fpm.sock;

Por fim, no mesmo arquivo, altere a configuração do dono e grupo no socket definido na diretiva listen. Pesquise as diretivas listen.owner, listen.group e listen.mode. Por padrão essas linhas estão comentadas. Descomente, removendo o ; dessas linhas e altere para nginx, conforme abaixo:

listen.owner = nginx listen.group = nginx listen.mode = 0660

Habilitar o PHP-FPM


# systemctl start php-fpm

Configuração do Nginx para o processo PHP


# vim /etc/nginx/conf.d/default.conf

server {
    listen       80;
    server_name  server_domain_or_IP;

    root   /var/www/html
    index index.php index.html index.htm;

    location / {
        try_files $uri $uri/ =404;
    }
    error_page 404 /404.html;
    error_page 500 502 503 504 /50x.html;

    location = /50x.html {
        root /var/www/html;
    }

    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

Reinicie o serviço Nginx


# systemctl restart nginx

Criar o arquivo info.php para testar a execução do PHP

# vim /var/www/html/info.php

 <?php 
  phpinfo();

ESC+x (salva e sai do editor Vim)

No browser acesse http://IPSERVIDOR/info.php

Feito!

terça-feira, 11 de agosto de 2020

Instalando e Configurando a stack LAMP no CentOS

O que é LAMP?

O termo LAMP é a junção do sistema operacional Linux, servidor web Apache, SGBD MySQL e a linguagem PHP, formando o ambiente PHP completo.

Atualize o repositório

# yum update

Instalação dos pacotes LAMP


# apt install httpd mariadb-server mariadb php php-mysql php-pdo php-cli php-curl php-apcu php-gd php-mbstring php-xml

Ajuste de configuração do MySQL


# mysql_secure_installation

Pressione Y e ENTER para aceitar as configuração padrão para todas as perguntas. Isso irá remover alguns usuários anônimos e o banco de dados teste, desativará os logins remotos ao root, e carregará essas novas regras do MySQL/MariaDB.

Inicializar os serviços e habilitar no boot do Apache e MySQL

Apache

# systemctl start httpd
# systemctl enable httpd

MySQL/MariaDB

# systemctl start mariadb
# systemctl enable mariadb

O CentOS vem com firewall habilitado e precisa liberar a porta 80 para acessar o servidor

# firewall-cmd --permanent --add-port=80/tcp
# firewall-cmd --reload

Criar o arquivo info.php para testar a execução do PHP

O diretório padrão do DocumentRoot no Apache é /var/www/html

# vim /var/www/html/info.php
< ?php phpinfo();

ESC+x (salva e sai do editor Vim)

Permissão para o usuário e grupo no /var/www/html no CentOS é apache:apache

# chown apache:apache -R /var/www/html

No browser acesse http://IPSERVIDOR/info.php

Feito!

segunda-feira, 10 de agosto de 2020

Instalando e Configurando a stack LEMP no Debian

O que é LEMP?

O termo LEMP é a junção do sistema operacional Linux, servidor web Nginx, SGBD MySQL e a linguagem PHP, formando o ambiente PHP completo.

Atualize o repositório

# apt update

Instalação dos pacotes LEMP


# apt install nginx mariadb-server php php-mysql php-pdo php-cli php-xml php-mbstring php-fpm

Ajuste de configuração do MySQL


# mysql_secure_installation

Pressione Y e ENTER para aceitar as configuração padrão para todas as perguntas. Isso irá remover alguns usuários anônimos e o banco de dados teste, desativará os logins remotos ao root, e carregará essas novas regras do MySQL/MariaDB.

Alterar a ordem dos arquivos que o servidor web Apache entenda primeiro.

# vim /etc/nginx/sites-available/default

Adicione index.php, conforme abaixo:

index index.php index.html index.htm index.nginx-debian.html;

Em seguida, na sessão locations ~.php$, deixe conforme abaixo, substituindo o X pela versão do PHP que foi instalado.

Para verificar a versão do PHP, no terminal digite: php --version

location ~ \.php$ {
include snippets/fastcgi-php.conf;
# With php-fpm (or other unix sockets):
fastcgi_pass unix:/var/run/php/php7.X-fpm.sock;
# With php-cgi (or other tcp sockets):
fastcgi_pass 127.0.0.1:9000;
}

ESC+x (salva e sai do editor Vim)

Modifique o valor para o parâmetro cgi.fix_pathinfo do arquivo /etc/php/php-X/fpm/php.ini

# vim /etc/php/7.X/fpm/php.ini
cfgi.fix_pathinfo=0

ESC+x (salva e sai do editor Vim)

Reload no Nginx e PHP FPM

# systemctl reload nginx # systemct reload php7.X-fpm

Criar o arquivo info.php para testar a execução do PHP

O diretório padrão do DocumentRoot no Apache é /var/www/html

# vim /var/www/html/info.php < ?php
phpinfo();

ESC+x (salva e sai do editor Vim)

Permissão para o usuário e grupo no /var/www/html no Debian é www-data:www-data

# chown www-data:www-data -R /var/www/html

No browser acesse http://IPSERVIDOR/info.php

Feito!

domingo, 9 de agosto de 2020

Instalando e Configurando a stack LAMP no Debian

O que é LAMP?

O termo LAMP é a junção do sistema operacional Linux, servidor web Apache, SGBD MySQL e a linguagem PHP, formando o ambiente PHP completo.

Atualize o repositório

# apt update

Instalação dos pacotes LAMP


# apt install apache2 mariadb-server php libapapache2-mod-php php-mysql php-pdo php-cli

Ajuste de configuração do MySQL


# mysql_secure_installation

Pressione Y e ENTER para aceitar as configuração padrão para todas as perguntas. Isso irá remover alguns usuários anônimos e o banco de dados teste, desativará os logins remotos ao root, e carregará essas novas regras do MySQL/MariaDB.

Alterar a ordem dos arquivos que o servidor web Apache entenda primeiro

# vim /etc/apache2/mods-enabled/dir.conf

Padrão

< IfModule mod_dir.c> DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm < /IfModule>

Coloque o index.php no primeiro, conforme abaixo:

< IfModule mod_dir.c> DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm < /IfModule>

ESC+x (salva e sai do editor Vim)

Reload no Apache


# systemctl restart apache2

Criar o arquivo info.php para testar a execução do PHP

O diretório padrão do DocumentRoot no Apache é /var/www/html

# vim /var/www/html/info.php

< ?php
phpinfo();

ESC+x (salva e sai do editor Vim)

Permissão para o usuário e grupo no /var/www/html no Debian é www-data:www-data

# chown www-data:www-data -R /var/www/html

No browser acesse http://IPSERVIDOR/info.php

Feito!

segunda-feira, 3 de agosto de 2020

Conhecendo o Wappalyzer

O que é Wappalyzer?


O Wappalyzer é uma extensão para o Google Chrome, Mozilla Firefox, que exibe para o usuário quais tecnologias são utilizadas nos sites e sistemas web. WordPress, Apache, Google Analytics, phpMyAdmin e YouTube são apenas alguns exemplos de ferramentas detectadas pelo complemento e que são amplamente empregadas na construção de portais, blogs e sites.

Para instalar a extensão Wappalyzer, basta acessar no navegador que o utiliza: Google Chrome Mozilla Firefox e no Microsoft Edge

O Wappalyzer é um projeto de código aberto com licença MIT, disponível no repositório no GitHub , caso tiver curiosidade como foi implementado e queira contribuir para o projeto.

No modo geral, só adicionar a extensão no navegador nos links mencionados e no site e/ou sistemas web que tiver curiosidade em saber quais tecnologias foram utilizadas, basta clicar na extensão no canto superior direito no navegador, que irá abrir um pop-up das tecnologias utilizadas do site e/ou sistema web.

Feito!

terça-feira, 14 de julho de 2020

Conhecendo o Express do Node.js

O que é Express?

É um framework do Node.js, minimalista, flexível e contém um robusto conjunto de recursos para desenvolver aplicações web, como um sistema de Views, um robusto sistema de roteamento.

O Express oferece as seguintes soluções:

  • Gerenciar requisições de diferentes verbos HTTP em diferentes URLs;
  • Integrar "view engines" para inserir dados nos templates;
  • Definir as configurações comuns da aplicação web, como a porta a ser usada para conexão e a localização dos modelos que são usados para renderizar a resposta;
  • Adicionar novos processos de requisição por meio de "middleware" em qualquer ponto da fila de requisições.

Instalação do Express

Considerando que já tenha o o Node.js instalado, caso contrário verifique no howto Instalação do Node.js . Tendo o projeto Node.js iniciado, acesse o diretório e execute para adicionar o Express como dependência do projeto.

$ npm install express --save

Criando a primeira aplicação Node.js com Express

app.js
const express = require('express');
const app = express();

app.get('/', (req, res) => {
res.send('Hello World!');
});

app.listen(3000, 'http://127.0.0.1') {
console.log('app listening on port 3000!');
});

Executando a aplicação

Execute no terminal: $ node app.js OU se tiver o Nodemon instalado, pode executar a aplicação da seguinte maneira $ nodemon app.js

No browser acesse http://localhost:3000

Irá ver escrito Hello World na página. Adicione novas rotas, tendo como base a primeira e teste o acesso das rotas criadas no browser.

Feito!

segunda-feira, 13 de julho de 2020

Gerenciando aplicações Node.js com PM2

Na postagem Nodemon do Node.js foi explicado como monitorar e reiniciar automaticamente aplicação Node.js com o Nodemon, mas isso é útil em ambiente de desenvolvimento, porém em ambiente de produção é utilizado o PM2, que é objetivo desta postagem.

O que é PM2?

É o gerenciador de processos para aplicações Node.js em linha de comando, que também faz o monitora e reinicia aplicações Node.js automaticamente, mas de forma mais eficaz consumindo menos em comparação com o Nodemon, por isso que é utilizado em ambiente de produção em aplicação Node.js.

O PM2 é uma ferramenta opensource completa para o gerenciamento e deploy de aplicações Node.js em ambientes de produção. Dentro os principais recursos disponíveis podemos citar:

  • Monitoramento das aplicações;
  • Integração com containers;
  • Hot reload das aplicações;
  • Fácil integração com serviços de deploy contínuo;
  • Logs das aplicações;
  • Facilidade em escalar as aplicações (modo cluster ou fork).

Instalação do PM2

$ npm install pm2 -g

Iniciar aplicação Node.js

Acesse o diretório do projeto Node.js e execute:

$ pm2 start app.js --name "app1"

Listar aplicações Node.js execução


$ pm2 list

Ver informações do processo. Note que foi usado o nome definido da aplicação na inicialização.

$ pm2 info app1

Parar um aplicação Node.js

$ pm2 stop app1

Reiniciar uma aplicação Node.js

$ pm2 restart app1

Excluir uma aplicação Node.js

$ pm2 delete app1

Referências

[1] https://pm2.keymetrics.io/docs/usage/quick-start/

Feito!

domingo, 12 de julho de 2020

Monitorar e reiniciar automaticamente aplicação Node.js

Na postagem Criação do servidor Node.js e para iniciar o servidor é no terminal node app.js, mas para cada alteração no arquivo JavaScript é necessário parar e iniciar novamente o servidor Node.js. Então, deve se perguntar se existe alguma forma de não precisar reiniciar a aplicação. Sim, existe, esse é o objetivo desse howto.

O que é Nodemon ?

O Nodemon é um utilitário que monitora todas as alterações nos arquivos da aplicação e reinicia automaticamente o servidor quando for necessário.

Instalação e uitlização do Nodemon

No terminal, digite: $ npm install nodemon -g

Para executar a aplicação, execute no terminal: $ nodemon app.js

Agora, altere os arquivos da aplicação e atualiza a página, verá que não foi preciso reiniciar o servidor Node.js com o uso Nodemon.

Para obter mais opções do Nodemon, digite no terminal: nodemon -h

Feito!

sábado, 11 de julho de 2020

Primeiros passos com Node.js

Antes de seguir esse howto de criação do servidor web do Node.js, é pré requisito seguir o howto de Instalação do Node.js no Linux , caso não tenha instalado.

O objetivo desse post é criar o servidor web e o famoso Hello World em Node.js.

Crie um arquivo app.js no diretório de sua escolha com o seguinte conteúdo:

const http = require('http');

const hostname = '127.0.0.1';
const port = 3000;
const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('Hello World');
});

server.listen(port, hostname, () => {
console.log(`Server running at http://${hostname}:${port}/`);
});

Agora, execute o servidor web no terminal, digite: node app.js

Acesse no browser http://localhost:3000 e você irá ver a mensagem "Hello World".

Feito!

segunda-feira, 6 de julho de 2020

Instalando o Node.js no Linux

O que é Node.js?

O Node.js pode ser definido como um ambiente de execução Javascript Server-side.

Isso significa que com o Node.js é possível criar aplicações Javascript para executar como uma aplicação standalone em uma máquina, não dependendo de um browser, como estamos acostumados.

Instalação do Node.js no Linux

Pré requisitos

Se ainda não tiver o curl instalado no Debian, Ubuntu

$ sudo apt install curl

Se ainda não tiver o curl instalado no CentOS, Fedora

$ yum install curl

A partir daqui se aplica em qualquer distribuição Linux a instalação do Node.js

$ curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.35.3/install.sh | bash

O número da versão que está em negrito pode mudar com o tempo, então recomendo você acessar a página do projeto no GitHub e procurar pela nova versão.

O Node.js será instalado no diretório oculto do seu usuário.

$ source ~/.bashrc

Para listar as versões disponíveis do Node.js

$ nvm ls-remote

Irá exibir as versões do Node.js e assim podemos ver se o NVM está funcionando corretamente.

Até a data de publicação deste howto, a versão atual do Node.js é 12.18.2

$ nvm install v12.18.2

Caso tenha instalado mais de uma versão e tenha necessidade de alternar entre elas, então segue:

$ nvm use < num-versao >

Verifique a versão do Node.js

$ node -v

Já ganha de bônus o NPM na instalação do Node.js. Para atualizar-lo o NPM, basta executar:

$ npm install npm -g

Feito!

terça-feira, 23 de junho de 2020

Guia de sobrevivência do GIT e Git Flow

GIT

Primeiro é necessário ressaltar a diferença entre GIT e Github, Bitbucket, Gitlab.

O GIT é o sistema de controle de versão e o Github, Bitbucket, Gitlab, são plataformas para hospedar projetos de desenvolvimento por meio de repositório público ou privado, que usa o GIT como base.

Escolhendo a plataforma que irá hospedar o seu projeto no repositório remoto, crie uma conta, se ainda não tiver, gera o par de chaves privada e pública, adicione a chave pública no seu perfil da plataforma escolhida, crie um repositório e por fim o primeiro commit. Calma, que irei explicar cada item passo a passo.

Nesse artigo é explicado no Github por ser mais popular na comunidade opensource.

1. Acesse https://github.com , crie uma conta se ainda não tiver.

2. Gere um par de chaves privada e pública com SSH.

No Windows 10, com o GitBash que emula o terminal Bash do Linux, pode gerar o par de chaves privada e pública, usando o mesmo comando utilizado no Linux (qualquer distro).

$ ssh-keygen

Responda as perguntas que é solicitado, no final são gerados par de chaves privada e pública no arquivo oculto do seu usuário.

chave pública: ~/.ssh/id_rsa.pub
chave privada: ~/.ssh/id_rsa

3. Copiar o conteúdo do arquivo ~/.ssh/id_rsa.pub na configuração do perfil na plataforma escolhida, no caso do Github é https://github.com/settings/keys

$ cat ~/.ssh/id_rsa.pub

4. Colar o conteúdo no campo Key e defina um nome no campo Title, como por exemplo: máquina-casa, máquina-empresa.

Ao salvar, confirma com sua senha da conta.

5. Crie um repositório ao clicar em "+" > "New Repository"

6. Define um nome para o repositório em "Repository name"

7. Marque "Public" ou "Private" conforme a sua escolha do repositório de domínio público ou privado.

8. Clique no botão "Create repository"

9. Agora na sua máquina, crie um diretório para o projeto se não existir ou pode utilizar o diretório existente do seu projeto, adicione o repositório remoto.

10. Acesse o diretório do projeto e segue:

Apenas na primeira vez, execute o comando git init para inicializar o repositório local do Git. O próximo passo é adicionar o repositório remoto correspondente a alguma plataforma Github, Bitbucket, Gitlab ou outro servidor no modo Git Bare . Nesse artigo é utilizado o Github.

11. Adicionando o repositório remoto

É possível adicionar o repositório remoto de duas formas: protocolo https ou ssh. A diferença é que usando o protocolo ssh e com a chave pública adicionada no perfil do Github/Bitbucket/Gitlab ao fazer o push não é solicitado a senha, porém conforme foi gerado o par de chaves privada e pública, uma das perguntas é uma senha secreta corresponde a chave, isso é opcional, o default é sem, mas se caso criou, será solicitado essa senha secreta, ok?

$ git remote add origin git@github.com:< SEU-USERNAME >/< SEU-REPOSITORIO >.git

Inicializa o repositório local no diretório do projeto.

$ git init

12. Adicionando informações nome, e-mail, coloque com suas informações

$ git config --global user.name "Nome completo"
$ git config --global user.email nome.sobrenome@dominio.com

13. Adicionar os arquivos na fila de commit

$ git add .

14. Commit com comentário, se for o primeiro commit, é tradicional colocar "first commit", mas pode colocar qualquer comentário, nos demais commits é interessante colocar comentário relevantes sobre o que foi feito

$ git commit -m "first commit"

15. Enviar os arquivos para o repositório remoto

$ git push origin master

Git Flow

Manter as branches master e develop como principais no repositório do projeto, a branch master é de produção e a branch develop é que estar em desenvolvimento.

As features novas do projeto são issues publicadas no repositório, então cria-se uma branch com o id da issue a partir da branch develop sempre atualizada.

Na prática, fica assim:

Fluxo de Git-Flow

$ git checkout develop
$ git pull origin develop
$ git checkout -b < id-issue >

Faz a codificação na branch da issue e ao terminar, faz o commit e push nessa branch. Em seguida, faz o Pull Request da branch da issue para branch develop e outro desenvolvedor faz o Code Review do que foi feito e estando OK, faz o merge para develop.

git add .
git commit -m "comentário resumido do que foi feito na issue"
git push origin

No final da Sprint que geralmente é de uma ou duas semanas e após testado e OK na develop, faz o merge da branch develop para master.

Segue o fluxo na próxima issue.

Pronto, por meio deste artigo foi possível aprender sobre o Git, plataformas Github, Bitbucket, Gitlab e o fluxo de desenvolvimento utilizando o Git Flow.

Feito!

segunda-feira, 22 de junho de 2020

Conhecendo P5JS

O p5.js é uma biblioteca JavaScript para codificação criativa, com foco em tornar a codificação acessível e inclusiva para artistas, designers, educadores, iniciantes e qualquer outra pessoa. O p5.js é gratuito e de código aberto, porque acreditamos que o software e as ferramentas para aprendê-lo devem estar acessíveis a todos.

Usando a metáfora de um esboço, o p5.js possui um conjunto completo de funcionalidades de desenho. No entanto, você não está limitado à sua tela de desenho. Você pode pensar em toda a página do navegador como seu esboço, incluindo objetos HTML5 para texto, entrada, vídeo, webcam e som.

Para saber mais verifique a documentação

domingo, 21 de junho de 2020

Instalando o Docker com WSL2 no Windows 10

Em 2016, a Microsoft anunciou a possibilidade de rodar o Linux dentro do Windows 10 como um subsistema e o nome a isto foi dado de WSL ou Windows Subsystem for Linux.

O acesso ao sistema de arquivos no Windows 10 pelo Linux era simples e rápido, porém não tinhamos uma execução completa do kernel do Linux e outros artefatos nativos e isto impossibilitava a execução de várias tarefas no Linux, uma delas é o Docker.

Em 2019, a Microsoft anunciou o WSL2, com uma dinâmica aprimorada em relação a 1ª versão:

  • Execução do kernel completo do Linux
  • Melhor desempenho para acesso aos arquivos dentro do Linux
  • Compatibilidade completa de chamada do sistema

O WSL2 já estava disponível na versão Insider do Windows, mas na última semana de maio de 2020 passou a estar disponível em final release na atualização 20.04 do Windows 10.

Assim, o WSL2 permitiu que executemos Docker no Linux usando o Windows 10.

Compare as versões: https://docs.microsoft.com/pt-br/windows/wsl/compare-versions

Vamos entender como usar o Docker com o WSL 2.

Antes de começarmos o que você precisa ter para rodar o WSL:

  • Windows 10 Home ou Professional
  • Uma máquina compatível com virtualização
  • Pelo menos 4GB de memória RAM
  1. Verifique a versão do seu Windows, se já for a versão 20.04 ótimo, estamos prontos, senão precisamos instalar a atualização para instalar a 20.04.
    https://www.microsoft.com/pt-br/software-download/windows10
    O software da atualização verificará se sua máquina é compatível com a atualização. A atualização poderá levar muito tempo, pra mim levou mais de 1 hora para atualizar.
  2. Instale a última atualização do kernel do WSL 2:
    https://docs.microsoft.com/pt-br/windows/wsl/wsl2-kernel
    Basta instalar, não precisa de mais nada
    Recomendar este tutorial e colocar no Youtube Install Windows Subsystem for Linux (WSL) on Windows 10
  3. Habilite o recurso do WSL no Windows
    Digite no PowerShell em modo administrador:
    dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
    dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

    Reinicie sua máquina somente por segurança.
  4. Atribua a versão default do WSL para a versão 2
    wsl --set-default-version 2
  5. Escolha sua distribuição Linux no Windows Store
    Ao iniciar a versão, você deverá criar um usuário que poderá ser o mesmo da sua máquina e uma senha, este será o usuário root da sua instância WSL.
  6. Alterar a versão do WSL de uma distribuição
    wsl --set-version
  7. Dicas:
    • Atalho no menu iniciar Ou executando C:\Windows\System32\wsl.exe
    • O sistema de arquivos do Windows é acessível em /mnt
    • É possível acessar o sistema de arquivos do Linux pela rede do Windows digite \\wsl$
    • É possível acessar uma pasta digitando explorer.exe
    • É possível abrir uma pasta com o VSCode digitando code .
    • É possível acessar executáveis do Windows no terminal do Linux.
  8. Instale o Docker Desktop versão maior ou igual 2.3
  9. Habilite o WSL no Docker Desktop
    Vá em Resources/WSL Integration
  10. Teste o seu Docker
    Execute o comando docker run ou docker-compose up
  11. Por padrão o WSL2 pode utilizar “recursos de forma ilimitada” na sua máquina
    Se você quiser limitar os recursos, crie um arquivo .wsconfig na pasta do seu usuário
    https://docs.microsoft.com/pt-br/windows/wsl/wsl-config#configure-global-options-with-wslconfig
    Depois de configurar execute no power shell:
    wsl --shutdown
    (vai reiniciar o Docker também e vai aparecer uma mensagem se você quer iniciar o Docker
  12. As duas distribuições WSL do docker
    https://www.docker.com/blog/new-docker-desktop-wsl2-backend/
  13. Liberar memória no host
    https://linux-mm.org/Drop_Caches
    echo 1 | sudo tee /proc/sys/vm/drop_caches
    echo 3 | sudo tee /proc/sys/vm/drop_caches
  14. Use BuildKit and multi-stage builds
    Acrescente export DOCKER_BUILDKIT=1 no .profile do seu usuário

Referências:

Guia rápido de instalação do WSL2

Feito!

quarta-feira, 10 de junho de 2020

Executando primeira aplicação Electron

O que é Electron?

Electron é um framework de código aberto criado por Cheng Zhao, e agora desenvolvido pelo GitHub. Permite desenvolver aplicações para desktop com interface gráfica usando componentes frontend e backend originalmente criados para aplicações web: Node.js para o backend e Chromium para o frontend.

Estrutura de uma aplicação Electron

Um aplicativo Electron básico consiste em três arquivos: package.json (metadata), main.js (código) e index.html (ambiente gráfico com frontend) e o framework é fornecido pelo arquivo executável (electron.exe no Windows, electron.app no macOS e electron no Linux).

Se desejar adicionar ícones customizados podem renomear ou editar o arquivo executável.

O arquivo mais importante é o package.json. Nele mantém as informações sobre os pacotes. As informações mais comuns são:

  • "name", nome da aplicação;
  • "version", versão da aplicação;
  • "main", nome do script principal da aplicação;

package.json é um arquivo npm.

Aplicações que usam Electron

Um número significativo de aplicativos desktop é construído com o Electron, dentre os quais:

  • Atom
  • GitHub Desktop
  • Visual Studio Code
  • Discord
  • Entre outros

Criando primeira aplicação com Electron

Ps: Necessário instalar antes o Nodejs

Crie um diretório para a aplicação Electron, acesse esse diretório e execute npm init

$ mkdir -p electron/first-app
$ cd electron/first-app
$ npm init

O NPM guiará o arquivo package.json com base das perguntas solicitadas. O script especificado por main é onde inicializa o aplicativo.

package.json

{
  "name": "first-app",
  "version": "1.0.0",
  "description": "",
  "main": "main.js",
  "scripts": {
    "start": "electron ."
  },
  "author": "Reginaldo",
  "license": "MIT"
}

Instalar o Electron de forma global

$ sudo npm install -g electron

main.js

const { app, BrowserWindow } = require('electron')

function createWindow () {
// Create the browser window.
const win = new BrowserWindow({
width: 800,
height: 600,
webPreferences: { nodeIntegration: true
}
})

// and load the index.html of the app.
win.loadFile('index.html')

// Open the DevTools.
//win.webContents.openDevTools()
}

// This method will be called when Electron has finished
// initialization and is ready to create browser windows.
// Some APIs can only be used after this event occurs.
app.whenReady().then(createWindow)

// Quit when all windows are closed.
app.on('window-all-closed', () => {
// On macOS it is common for applications and their menu bar
// to stay active until the user quits explicitly with Cmd + Q
if (process.platform !== 'darwin') {
app.quit()
}
})

app.on('activate', () => {
// On macOS it's common to re-create a window in the app when the
// dock icon is clicked and there are no other windows open.
if (BrowserWindow.getAllWindows().length === 0) {
createWindow()
}
})

// In this file you can include the rest of your app's specific main process
// code. You can also put them in separate files and require them here.


Finalmente o arquivo index.html de exemplo

< !DOCTYPE html>
< html>
< head>
< meta charset="UTF-8">
< title>Hello World!

< meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-inline';" />
< /head>
< body>

Hello World!


We are using node , Chrome , and Electron .
< /body>
< /html>

Executar a aplicação Electron

$ npm start

Feito!

terça-feira, 9 de junho de 2020

Conhecendo o Google Colab

O que é Google Colab?

O Google Colab (Colaborativo) é um serviço de nuvem gratuito hospedado pelo Google para incentivar a pesquisa de Aprendizado de Máquina e Inteligência Artificial, onde muitas vezes a barreira para o aprendizado e o sucesso é a exigência de um tremendo poder computacional.

Para quem pretende explorar o Machine Learning em simulações com enorme conjunto de dados, o Google Colab é uma solução ideal para você.

Benefícios do Colab

  • Suporte para Python 2.7 e Python 3.6;
  • Aceleração de GPU gratuito;
  • Bibliotecas pré-instaladas: Todas as principais bibliotecas Python, como o TensorFlow, o Scikit-learn, o Matplotib, entre muitas outras, estão pré-instaladas e prontas para serem importadas;
  • Construído com base no Jupyter Notebook;
  • Recurso de colaboração (funcionna como o Google Docs): o Google Colab permite que os desenvolvedores usem e compartilhem o Jupyter Notebook entre si sem precisar fazer download, instalação ou executar qualquer coisa que não seja um navegador;
  • Suporta comandos bash;
  • Os Notebooks do Google Colab são armazenados no GDrive.

Criando um Notebook com o Colab

  1. Acessar com uma conta logada do Google o Google Colab
  2. Clique em "novo notebook" e selecione Notebook Python 2 ou Notebook Python 3

OU

  1. Acessar com uma conta logada do Google o Google Drive;
  2. Crie um novo diretório para o projeto;
  3. Clique em Novo > Mais > Colaboratório

Configurando o acelerador de GPU

O hardware padrão do Google Colab é a CPU ou pode ser GPU.

Clique em Editar > Configuraçoes do Notebook > Acelerador de hardware > GPU

OU
Clique em Runtime > Hardware Accelerator > GPU

Executando uma célula

Certifique-se de que o runtime esteja conectado. O bloco de anotações mostra uma marca verde e "Conectado" no canto superior direito;

Existem várias opções de tempo de execução em "Runtime".

OU
Para executar a célula atual, pressione SHIFT + ENTER.

Agora, pode simular um conjunto de dados e aplicar técnicas de Machine Learning no Google Colab.

Referências



Python Data Sciense Handbook

Feito!

domingo, 7 de junho de 2020

Calculando sub-rede IPv4 e IPv6 com sipcalc

O que é sipcalc?

O sipcalc é um projeto de código aberto com licença GNU/GPL, que pode ser instalado em sistemas UNIX like, assim como nas distros Linux.

Qual a função do sipcalc?

É uma calculadora de sub-rede (VLSM) no ipv4 e ipv6.

O aplicativo sipcalc recebe como parâmetro um endereço IP e uma másca de rede (netmask) e exibe as informações sobre a rede.

Instalação do sipcalc nas principais distros Linux


Debian, Ubuntu e afins

$ sudo apt install sipcalc

Fedora

$ sudo dnf install sipcalc

Arch, Manjaro

$ sudo pacman -S sipcalc

Utilização do sipcalc

$ sipcalc 192.168.1.2/23 192.168.1.50

Também é possível exibir informações da rede de um domínio, como no exemplo abaixo:

$ sipcalc -d www.google.com.br

E no IPv6?

Visualizando uma classe IPv6

$ sipcalc 2001:0DB8::/32

Dividindo uma classe IPv6

$ sipcalc -S /33 2001:0DB8::/32

Com a opção -S podemos subdividir nossa classe /32 em quantas classes forem necessárias, vejamos o exemplo abaixo:

$ sipcalc -S /64 2001:0DB8::/32

Nesse caso teremos mais de 65 mil classes possíveis contendo mais de 4 Bilhoẽs de endereços ao todo, ou seja, um IPv4 completo.

Com os resultados obtidos conseguimos visualizar onde a rede inicia e termina, lembrando que no IPv6 não existe porção de rede e porção de host.

Podemos também gerar endereços para DNS reverso, conforme segue no exemplo abaixo:

$ sipcalc -r 2001:0DB8:/32

Referência

https://github.com/sii/sipcalc

Feito!

sábado, 6 de junho de 2020

Crie seu próprio Dropbox com o Nextcloud

O que é Nextcloud?


Nextcloud tem funcionalidade muito semelhante ao Dropbox, com a diferença de ser código aberto, e assim permitir que qualquer pessoa instalar e operá-lo sem custo em um servidor privado. Nextcloud é um fork do projeto ownCloud.

O objetivo deste post é de apresentar a forma de usar o Nextcloud no Docker, pela imagem oficial disponível no Docker Hub . No entanto, se ainda não tiver o Docker instalado, verifica o howto de instalação do Docker e Docker-compose no Linux .

Instalação do Nextcloud no Docker

$ docker container run -d -p 8080:80 -v $HOME/nextcloud:/var/www/html nextcloud

Unable to find image 'nextcloud:latest' locally
latest: Pulling from library/nextcloud
afb6ec6fdc1c: Pull complete
3d895574014b: Pull complete
c309fdad6410: Pull complete
c201f6a5d6f9: Pull complete
e87f853892aa: Pull complete
998b2113b400: Pull complete
b3c0b4710d3b: Pull complete
c79fb2b38801: Pull complete
30aa6f0dd423: Pull complete
8af9a337c36d: Pull complete
64ec85e06910: Pull complete
606f88b4f608: Pull complete
845e768a44c5: Pull complete
232824f4bf64: Pull complete
e62b2704afd5: Pull complete
3fb461b8f323: Pull complete
5a8c7e728bd1: Pull complete
840cc11060b3: Pull complete
26156e8cea36: Pull complete
2413ad1c2967: Pull complete
56e02c3217ca: Pull complete
Digest: sha256:b1bf8942e85c76aa86362a9ec7eef7ac12ac3c0f3106dd6a0ee89871186dff73
Status: Downloaded newer image for nextcloud:latest
92d2a3be6ec67012df6441d8350a9010ab772662a2970834e3c914e09b8c4e86


$ docker container ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
92d2a3be6ec6 nextcloud "/entrypoint.sh apac…" 14 minutes ago Up 14 minutes 0.0.0.0:8080->80/tcp suspicious_mendel

No browser acessar http://localhost:8080

Na primeira vez é feito o cadastro com usuário e senha, nas próximas vezes só acessar com as credenciais que forem cadastradas.

Confira o volume no diretório definido mapeando entre a máquina x container nextcloud.

Feito!

segunda-feira, 1 de junho de 2020

Conhecendo o Brave

O que é Brave?

Brave é um browser, software livre e de código aberto [4], desenvolvido pela Brave Software Inc., e baseado no browser Chromium, focado em privacidade e segurança online, que bloqueia por default anúncios e rastreamento virtual. Também pode navegar na rede TOR com um simples atalho.

Desde 2018, o Brave suporta: Windows, Linux, macOS, Android e iOS.

O Brave permite que os usuários suportem os sites que visitam usando BAT (Basic Attention Token) [1]. Os usuários podem ganhar BAT assistindo anúncios ou acrescentando fundos á sua carteira recebem 70% da receita gerada. Os 30% restantes são divididos entre a Brave e o publicador do anúncio [2].

A plataforma de troca de anúncios Basic Attention Token da Brave Software recebeu investimento da Danhua Capital, Digital Currency Group, Foundation Capital, Founders Fund, Huiyin Blockchain Venture Pantera Capital e Propel Venture Partners [3].

Instalação do Brave Browser nas principais distros Linux

Debian e derivados


sudo apt install apt-transport-https curl
curl -s https://brave-browser-apt-release.s3.brave.com/brave-core.asc | sudo apt-key --keyring /etc/apt/trusted.gpg.d/brave-browser-release.gpg add -
echo "deb [arch=amd64] https://brave-browser-apt-release.s3.brave.com/ stable main" | sudo tee /etc/apt/sources.list.d/brave-browser-release.list
sudo apt update
sudo apt install brave-browser

RHEL/CentOS, Fedora


sudo dnf install dnf-plugins-core
sudo dnf config-manager --add-repo https://brave-browser-rpm-release.s3.brave.com/x86_64/
sudo rpm --import https://brave-browser-rpm-release.s3.brave.com/brave-core.asc
sudo dnf install brave-browser

openSUSE


sudo zypper install curl
sudo rpm --import https://brave-browser-rpm-release.s3.brave.com/brave-core.asc
sudo zypper addrepo https://brave-browser-rpm-release.s3.brave.com/x86_64/ brave-browser
sudo zypper install brave-browser

Atalho para abrir o Browser Brave no modo TOR

Para abrir o Browser Brave no modo TOR, basta usar a combinação de teclas: Alt+Shift+N


Referências


[1] Keck, Catie. Brave Wants to Destroy the Ad Business by Paying You to Watch Ads in its Web Browser

[2] Brave Ads History Collection Privacy Policy

[3] Basic Attention Token

[4] Repositório brave-browser no Github

[5] https://brave.com

Feito!