Descobrindo um arquivo de configuração de um serviço no MacOS

Para descobrir, por exemplo, onde o arquivo de configuração usado pelo MySQL está armazenado, em um terminal digite:

mysql --verbose --help | grep my.cnf

Em outro terminal, reinicie o serviço:

brew services restart mysql@5.7

Retorne ao primeiro terminal e observe o output com os dados usados pelo serviço.

* Essa dica provavelmente funciona em sistemas *nix trocando o comando de restart do serviço pelo específico da plataforma.

Configurando Apache/PHP no Scoop para CodeIgniter

O Scoop é um sistema de gerenciamento de pacotes para Windows similar ao APT para Linux e BREW para MacOS onde a manutenção do processo de instalação/remoção de aplicativos é feito diretamente no prompt de comando com poucos ou apenas um único comando.

CodeIgniter é um framework PHP para desenvolvimento de aplicativos WEB.

Com o scoop é possível instalar o Apache Web Server junto com uma versão específica do PHP para configurar um ambiente de desenvolvimento.

A instalação do Scoop pode ser feita seguindo essa documentação: https://scoop-docs.vercel.app/

Importante habilitar os buckets php, extras e versions no scoop:

  • scoop bucket add extras
  • scoop bucket add php
  • scoop bucket add versions

Após a instalação os seguintes comandos são utilizados para instalar Apache/PHP:

  • scoop install apache php7.4
  • scoop install sudo
  • iex (new-object net.webclient).downloadstring('https://gist.githubusercontent.com/nilkesede/c98a275b80b6d373131df82eaba96c63/raw/apache-php-init.ps1')
  • sudo httpd -k install -n Apache2.4
  • sudo net start apache

A configuração do PHP através do arquivo php.ini deve ser feita dentro da pasta persist\php7.4 do scoop para que as modificações permaneçam inalteradas após atualizações do PHP.

Por padrão, o apache não  configurou o caminho do php.ini para a pasta persist, então, troque a linha

PHPIniDir "D:\Aplicativos\Scoop\apps\php7.4\current"

por

PHPIniDir "D:\Aplicativos\Scoop\persist\php7.4"

no httpd.conf de acordo com o caminho na sua máquina.

Dicas:

  1. é necessário reiniciar o Windows para receber as alterações  feitas no PATH do sistema durante o processo
  2. qualquer alteração em  httpd.conf ou php.ini, o serviço do apache deve ser reiniciado
  3. para ver algum erro de configuração no php, use o phpinfo e também o comando php -v no prompt
  4. inclua o caminho do php corrente no path do sistema (necessário para a carga das extensões). ex: D:\Aplicativos\Scoop\apps\php7.4\current
  5. carregue a extensão intl (necessária para o CodeIgniter)

Apache

Em httpd.conf da pasta persist, habilite o módulo rewrite e remove o comentário da linha

Include conf/extra/httpd-vhosts.conf

para habilitar a leitura dos hosts virtuais em httpd-hosts.conf da pasta persist.

Adicionar a linha abaixo no http.conf dentro de <IfModule dir_module>

 DirectoryIndex index.php

Exemplo de vhost para um projeto:

<VirtualHost *:80>
ServerAdmin rdconsolo@gmail.com

ErrorLog "D:\Projetos\logs\error_log"
CustomLog "D:\Projetos\logs\access_log" common

Alias "/project-root" "D:\Projetos\project-root\public"
<Directory "D:\Projetos\project-root">
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Require all granted

RewriteEngine On
RewriteBase /project-root/index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
</Directory>
</VirtualHost>

Scoop Installer

O Scoop Installer é um gerenciador de aplicativos para Windows nos moldes de um apt do Linux ou um brew do MacOS.

Esses gerenciadores permitem instalar, remover e atualizar aplicativos do sistema operacional pelo prompt de comando. Isso pode parecer “defasado” mas na verdade os benefícios sobre os instaladores tradicionais em modo gráfico são superiores como, por exemplo:

  • instalação sem passos
  • escolha de uma versão específica do aplicativo
  • velocidade de resposta
  • administração centralizada

Para saber como instalar e usar esse aplicativo, veja os docs em https://scoop-docs.vercel.app/docs

Alguns comando úteis:

  • scoop update
  • scoop update –all
  • scoop search <aplicativo>
  • scoop install <aplicativo>
  • scoop install <aplicativo>@<versão>
  • scoop list
  • scoop status
  • scoop bucket add <bucket>
  • scoop uninstall <aplicativo>

Buckets úteis:

  • extras
  • versions
  • php
  • nerd-fonts

O Scoop não remove automaticamente as versões anteriores dos aplicativos atualizados. Para fazer isso, execute o comando “scoop cleanup *”.

Para trocar a versão de um pacote quando mantiver mais de uma instalada, use o comando scoop reset <app>@<version>.

Prevenindo o kernel de atualizar no Ubuntu 20.04

Atualizações de kernel são bem-vindas por trazerem correções, melhorias e maior segurança mas, dependendo do hardware podem ocorrer incompatibilidades causando consequências indesejáveis.

Para manter uma versão de kernel que comprovadamente funciona no seu hardware, é possível travar o sistema de atualização para determinado pacote:

sudo apt-mark hold <linux-image>

Onde linux-image é o nome completo da imagem a ser mantida.

Para desmarcar e permitir a atualização, trocamos o comando para:

sudo apt-mark unhold <linux-image>

Para saber quais pacotes estão marcados um hold:

sudo apt-mark showhold

Permissões para pastas e arquivos do WordPress

Após uma instalação manual do WordPress onde baixamos o pacote e criamos um banco de dados vazio para o instalador gerar os dados, os comandos abaixo deixarão os direitos de acesso às pastas e arquivos da melhor forma possível considerando funcionalidade e segurança.

chown -R www-data:www-data .
find . -type f -exec chmod 644 {} +
find . -type d -exec chmod 755 {} +
mv wp-config-sample.php wp-config.php
chmod 640 wp-config.php

Após esses comandos podemos prosseguir com a instalação do WordPress alterando os dados de acesso ao banco de dados no arquivo wp-config.php.

Let`s Encrypt no Ubuntu 20.04 com Apache

Com o domínio registrado no DNS e configurado no Apache na porta 80, segue:

apt install certbot python3-certbot-apache
certbot --apache -d your_domain -d www.your_domain

Responda as perguntas do script com atenção!

Particularmente, prefiro deixar o redirecionamento automático de http para https.

Os certificados deverão ser salvos dentro da pasta /etc/letsencrypt/live/ automaticamente.

O script criará um novo vhost para o domínio dentro do apache se você respondeu para redirecionar para https.

Esse script também gera um cron job em /etc/cron.d para renovar o certificado automaticamente e pode ser testado com o comando abaixo:

certbot renew --dry-run

Docker Básico com Ubuntu Server

Seguem informações de referência úteis para criar e executar uma imagem docker para um servidor Ubuntu com finalidade de uso no desenvolvimento de software para web.

Primeiro, o básico. Criamos um contêiner a partir de uma imagem. Essa imagem pode ser baixada do Docker Hub.

docker pull ubuntu:bionic

Estou usando a tag bionic para me referir a uma versão específica igual a mesma utilizada no servidor de produção.

Esse comando acima vai baixar a imagem para nossa máquina que já possui o serviço do doker rodando.

Uma vez que a imagem está baixada, vamos criar um contêiner a partir dela e expor as portas que serão utilizadas com o comando abaixo.

docker run --name bionic -p 8089:80 -p 5439:5432 -it -i ubuntu:bionic

Essas portas correspondem aos seguintes serviços respectivamente:

  • apache2 web server
  • postgresql database server

Esse comando (docker run … -it) vai te enviar para uma sessão dentro do contêiner.

É aconselhável executar uma atualização de pacotes antes de qualquer outro comando.

Volumes

Por padrão um contêiner descarta os dados gravados quando terminado. Para persistir os dados usamos os Volumes.

O comando abaixo cria um volume com o nome de bionic-vol.

docker volume create bionic-vol

Para usar esse volume, montamos o mesmo no comando run do contêiner.

docker run \
--name bionic \
-p 8089:80 -p 5439:5432 \
--mount source=bionic-vol,target=/app \
-it -i ubuntu:bionic

Dessa forma, uma pasta /app poderá ser usada para armazenar de forma persistente qualquer arquivo ou estrutura de pastas (ex: local onde o servidor de banco de dados guarda seus arquivos).

Agora vamos aprimorar esse comando para atender a necessidade de um desenvolvedor web com persistência de dados e apontamento da pasta do projeto no host pelo web server do contêiner.

docker run \
--name bionic \
-p 8089:80 -p 5439:5432 \
-v $HOME/Projetos:/var/www/html \
-v $HOME/docker/volumes/postgres:/var/lib/postgresql/data \
-it -i ubuntu:bionic

Comandos

Comandos para utilizar para manutenção do contêiner:

  • docker ps – lista contêineres em execução
  • docker attach bionic – conecta o terminal do container
  • docker volume ls – lista volumes instalados

Documentação oficial em https://docs.docker.com/.

Instalar PDI 9 no MacOS

Após baixar o arquivo do Pentaho Data Integration, descompacte o conteúdo em uma pasta da sua escolha.

Minha escolha foi ~/MyApps/PDI91. Nunca utilize a pasta de aplicativos nativa do sistema operacional nesses casos.

Estou usando a versão Big Sur do MacOS e a 9.1 do PDI.

No Finder, navegue até a pasta ~/MyApps.PDI91 e abra o arquivo “Data Integration.app”. Provavelmente o sistema vai reclamar dos direitos de acesso. Abra a Privacidade nas Preferências do Sistema e destrave esse aplicativo.

Tente abrir novamente o .app. Caso nada aconteça, execute o comando abaixo no terminal (lembrando de alterar o caminho de acordo com sua escolha) para remover o aplicativo da quarentena:

sudo xattr -dr com.apple.quarantine ~/MyApps/PDI91/Data\ Integration.app

Feito isso o app deve abrir e você poderá fixar o mesmo no Dock depois de executado.

Boas transformações!

Upgrade de SSD no MacBook PRO 13″ 2017 (A1708)

MacBook PRO 2017 com 128GB de armazenamento em 2020. Sem chance de continuar instalando atualizações do S.O. e armazenar aplicativos para desenvolvimento de software nessa capacidade de armazenamento.

A busca por um upgrade para um de 512GB bateu forte no bolso. Mais de 2.000,00 em conversão do dólar de hoje por esse aqui:

Procurando uma alternativa, cheguei nesse pacote composto por um adaptador e uma SSD de 512GB, além das ferramentas necessárias para a substituição:

Onde atentar nesse processo:

  • o kit vem com duas chaves, uma exclusiva para o SSD e outra para os demais parafusos
  • a remoção dos parafusos da tampa deve ser memorizada porque são três tamanhos diferentes nesse modelo
  • a remoção da tampa deve ser feita com o auxílio da ventosa e palheta (veja vídeos no youtube sobre esse procedimento), ela é de alumínio e forçar pode vincar a peça de forma irreparável
  • desligar a bateria é um procedimento delicado que envolve o desligamento de um cabo flat e a desconexão de outra peça (eu prefiro deixar a bateria descarregar por completo do que mexer nessas peças)
  • após instalar o no SSD, entrar na recuperação do sistema e preparar o SSD com o Utilitário de Disco

Se for comprar as peças separadas, o SSD tem que ter suporte à NVME, do contrário o MacOS não vai reconhecer.

Boa sorte!