anúncios

quarta-feira, 10 de março de 2021

Configurando ambiente de transferência de arquivos seguro com Blymp-io

O que é Blymp-io?

Blymp-io é uma ferramenta de transferência de arquivos de um dispositivo para outro, informando o código.

Procedimentos de instalação e configuração do Blymp-io em servidor próprio

Pré-requisitos: Ter o Node.js e NPM instalado, se caso não tiver, Instalando o Node.js no Linux (qualquer distro)

Clonar o repositório do projeto

git clone https://github.com/vantezzen/blymp-io

Acessar o diretório do projeto clonado

cd blymp-io

Executar as dependências via NPM

npm install

Executar o servidor no ambiente de desenvolvimento

npm run dev

Para o build no ambiente de produção, execute:

npm run start

Ambiente de produção: http://IPSERVIDOR:8080

Ambiente de desenvolvimento: http://localhost:3000

Configuração no ambiente de produção com servidor web Apache

Habilitar o módulo Rewrite no Apache

$ sudo a2enmod rewrite

Adicione no arquivo /etc/apache2/sites-available/000-default.conf

<IfModule mod_alias.c>
   Redirect 301 / http://IPSERVIDOR:8080
</IfModule>

Reinicie o Apache

$ sudo systemctl restart apache2

Agora após executar npm run start irá liberar o serviço na porta 8080 que será redirecionado automaticamente ao acessar http://seudominio.com.br

Feito!

segunda-feira, 8 de março de 2021

Configurando o Jetstream Laravel no Docker

O que é Jetstram Laravel?

O Jetstream fornece o ponto de partida para seu próximo projeto incluindo login, registro, verificação de e-mail, autenticação de dois fatores, gerenciamento de sessão, suporte de API via Laravel Sanctum e gerenciamento de usuários

O objetivo deste post é explicar os procedimentos de configuração do Jetstream a partir do ambiente PHP 8 com Apache e SGBD MySQL no Docker

Após criar o ambiente PHP 8 com Apache e SGBD MySQL no Docker , segue os procedimentos abaixo:

Primeiro acessar o diretório do ambiente e subir o ambiente PHP 8 com Apache e SGBD MySQL, conforme segue:

$ docker-compose up -d

Se utilizou o mesmo ambiente PHP 8 com Apache e SGBD MySQL no Docker , tem o Adminer, que é uma ferramenta web de administração de diversos SGBDs, nesse caso o SGBD MySQL.

Acessar o Adminer no browser http://localhost:8080 e crie o banco de dados com o nome que preferir

Após criar o banco de dados, acessar o container php8-apache para instalar o Laravel

$ docker exec -it php8-apache bash

Instalar o Laravel via composer, definir o nome como app, mas geralmente é colocado o nome do projeto

$ composer create-project --prefer-dist laravel/laravel app

Após concluir a instalação do Laravel, saia do container php8-apache, digite exit

No diretório do ambiente PHP 8 que configurou, dentro deste diretório deve ter um diretório src, que é o volume mapeado entre HOST e CONTAINER.

$ cd ambiente-php8-apache-mysql-docker/src

Aqui deve ter o diretório definido na instalação do Laravel, nesse caso app, mas antes é necessário alterar o owner do diretório para o seu usuário.

$ sudo chown -R ambiente-php8-apache-mysql-docker/ seu-usuario:seu-usuario

Renomear o .env.example para .env no editor de sua preferência

DB_HOST=db #nome do serviço container MySQL
D_PORT=3306 # porta default do MySQL
DB_DATABASE=nome-banco-de-dados #mesmo nome do banco de dados criado na ferramenta Adminer
DB_USERNAME=root #nome de usuário do banco de dados definido no docker-compose do ambiente PHP 8
DB_PASSWORD=secret #password do usuário do banco de dados definido no docker-compsoe do ambiente PHP 8

Acessar o container php8-apache novamente

$ docker exec -it php8-apache bash

Dentro do container, acessar o diretório app e execute os procedimentos

$ cd app

Gerar a chave para o projeto via artisan do Laravel

php artisan key:generate

Adicionar a biblioteca Jetstream no projeto com Laravel

composer require laravel/jetstream

Adicionar a biblioteca Livewire para complementar o frontend no projeto Laravel com Jetstream

php artisan jetstream:install livewire

Adicione o times do Jetstream com Livewire, que é como organização de usuários.

php artisan jetstream:install livewire --teams

Execute as migrations para criar as tabelas no banco de dados criado anteriormente pela ferramenta Adminer

php artisan migrate

Instalação do Node.js e NPM via NVM (gerenciador de versões do Node.js)

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

source ~/.bashrc && nvm install v14.15.5

npm install && npm run dev

chown -R www-data:www-data storage

Saia do container php8-apache, digite exit

No browser, acesse http://app.intranet:8000 crie um novo usuário no link "register", após criar o usuário irá autenticar e redirecionar no dashboard automaticamente.

Referências


Laravel 8 Jetstream no Docker

Feito!

segunda-feira, 1 de março de 2021

Expondo seu ambiente local com Ngrok

O que é Ngrok?

Ngrok é uma ferramenta de linha de comando que te permite criar um túnel seguro, por meio de NAT e Firewall, que expõem serviços locais para a Internet, tudo isso de forma fácil e segura.

Ao criar uma conexão com tunelamento pode ser útil quando você precisa:

  • Mostrar uma prévia remota da aplicação que está localhost para algum cliente;
  • Desenvolver integrações de Webhook;
  • Testar aplicativos móveis conectado no Backend em execução local;

Instalando o Ngrok

O Ngrok é multiplataforma, assim pode ser instalado nos SOs Windows, Linux, macOS.

O primeiro passo é fazer o download Ngrok conforme o seu SO.

Considerando que salvou o arquivo .zip no diretório Downloads

$ cd $HOME/Downloads
$ sudo unzip ngrok-stable-linux-amd64.zip -d /opt

Agora só digitar no terminal, conforme segue:

$ /opt/ngrok

Para poder executar o ngrok em qualquer diretório, adicione no PATH do SO.

Tendo uma aplicação web no seu localhost na porta 80, execute

$ /opt/ngrok http 80

Irá exibir o log, com um link de domínio randômico para compartilhar para qualquer pessoa acessar, a aplicação está em execução na sua máquina com tunelamento no cloud da Ngrok.

É possível usar o ngrok sem nenhum tipo de conta, mas tem algumas limitações, por exemplo, o tempo máximo que irá limitar as seções após criar o túnel. Recomendo que crie a conta e assine o plano gratuito , com isso ao executar o ngrok na conta vinculada, elimina essa limitação de tempo por seção.

Para vincular o Ngrok na sua conta, precisa do Authtoken que é disponibilizado na configuração de conta, obtendo esse token, execute o comando:

$ /opt/ngrok authtoken [seu-authtoken-aqui]

Coloque sua aplicação localhost exposta na Internet

$ /opt/ngrok http 80

O Ngrok disponibiliza uma interface web para poder analisar em tempo real todos os detalhes das requições e respostas que estão trafegando no seu túnel.

Acesse no browser http://127.0.0.1:4000

Terá acesso todos os detalhes da requisição e da resposta, incluindo:

  • Tempo duração;
  • Headers;
  • Payload;
  • Parâmetros de consulta;
  • Bytes brutos

Outros recursos e configurações

É possível criar um túnel via TCP e expor qualquer serviço que esteja executndo localmente, por exemplo: SSH, SGBDs: MySQL (3306), PostgreSQL (5432).

Liberar acesso externo ao SSH
$ /opt/ngrok tcp 22

Liberar acesso externo ao SGBD MySQL
$ /opt/ngrok tcp 3306

Liberar acesso externo ao SGBD PostgreSQL
$ /opt/ngrok tcp 5432

O Ngrok vem com um file server embutido, assim pode criar um túnel HTTP direcionando para o diretório do seu sistema de arquivo local.

Exemplo para o diretório /srv/share

$ /opt/ngrok tcp --auth="user:password" file:///srv/share

Referências:

https://ngrok.com/docs

Feito!

sábado, 20 de fevereiro de 2021

Resolvendo o error 1018 Can't read dir of '.' (errno: 13) no MySQL

Se ao conectar no SGBD MySQL e tentar selecionar algum banco de dados, exibir a mensagem "ERROR 1018 (HY00): Can't read dir of '.' (errno: 13), então esse é o objetivo dessa postagem de apresentar a solução desse erro no SGBD MySQL.

Primeiro, verifique as permissões no diretório /var/lib/mysql, esse é o diretório default do MySQL, caso tenha instalado o MySQL e optado de escolher outro diretório e não lembra, execute which mysql para exibir o diretório onde foi instalado o MySQL.

$ ls -la /var/lib/mysql OU $ ls -la which mysql

Observe a saída que não está com permissão de usuário e grupo no diretório /var/lib/mysql.

SOLUÇÃO

Alterar o usuário:grupo para mysql no diretório /var/lib/mysql OU which mysql

# chown -R mysql:mysql /var/lib/mysql

Setar a permissão

# chmod -R 755 /var/lib/mysql OU # chmod -R 755 which mysql

Feito!

segunda-feira, 15 de fevereiro de 2021

Configurando o HumHub no ambiente Docker

O que é HumHub ?

HumHub é um sistema de comunicação e colaboração que permite tornar em uma rede social na intranet, gratuito e de código aberto, desenvolvido em PHP com framework Yii.

O objetivo deste post é explicar os procedimentos para subir o ambiente HumHub no Docker com a imagem container oficial disponibilizada no Docker Hub

A premissa é ter Docker e Docker-Compose instalados, caso ainda não tenha, verifique Instalando Docker e Docker-Compose no Linux ou Instalando Docker e Docker-Compose no Windows 10

$ mkdir $HOME/ambiente-humhub-docker && cd $HOME/ambiente-humhub-docker

Crie o arquivo docker-compose.yml, conforme o conteúdo abaixo

docker-compose.yml
version: '3.1'
services:
humhub:
image: mriedmann/humhub:1.6.2
links:
- "db:db"
ports:
- "8080:80"
volumes:
- "config:/var/www/localhost/htdocs/protected/config"
- "uploads:/var/www/localhost/htdocs/uploads"
- "modules:/var/www/localhost/htdocs/protected/modules"
environment:
HUMHUB_DB_USER: user
HUMHUB_DB_PASSWORD: secret

db:
image: mariadb:10.2
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: humhub
MYSQL_USER: user
MYSQL_PASSWORD: secret
volumes:
- "./db:/var/lib/mysql"

Executar o build e execução do ambiente HumHub na raíz do diretório ambiente-humhub-docker

OBS: Antes de executar, verifique se as portas 8080 (Nginx), 9000 (FPM) e 3306 (MySQL) estão disponíveis na sua máquina.

$ docker-compose up -d

Aguarde e após estiver OK, acesse no browser http://localhost:8080 e segue as etapas, selecione o idioma, verifique o status de requisitos necessários, informe o host, usuário, password e nome do banco de dados que foram definidos no arquivo docker-compose em db. Por fim, algumas definições de segurança e criação do usuário administrador e seu password.

Referências


https://github.com/mriedmann/humhub-docker

Feito!

sábado, 6 de fevereiro de 2021

Configurando ambiente de desenvolvimento PHP 8 com Nginx no Docker

O objetivo deste howto é explicar os procedimentos de configuração do ambiente de desenvolvimento PHP 8 com JIT habilitado, composer, Nginx, Adminer e SGBD MySQL 8 no Docker.

A premissa é ter Docker e Docker-Compose instalados, caso ainda não tenha, verifique Instalando Docker e Docker-Compose no Linux ou Instalando Docker e Docker-Compose no Windows 10

$ cd $HOME
$ mkdir -p ambiente-php8-nginx-mysql-docker && cd ambiente-php8-nginx-mysql-docker
$ mkdir -p php8-fpm php8-fpm/config nginx src db

Os diretórios src, db são volumes mapeados entre o HOST e CONTAINER

O diretório ambiente-php8-nginx-mysql-docker/src é onde estará os fontes do projeto no HOST que irá mapear no diretório /var/www/html no CONTAINER

O diretório ambiente-php8-nginx-mysql-docker/db é onde está os arquivos do banco de dados no HOST que irá mapear no diretório /var/lib/mysql no CONTAINER

Se não tiver o volume db ao encerrar, o banco de dados irá para o espaço, pois o container é volátel.

Criar o Dockerfile para o PHP

php8-fpm/Dockerfile

FROM php:8.0.1-fpm-buster
RUN docker-php-ext-install pdo pdo_mysql bcmath opcache
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
EXPOSE 9000
ENTRYPOINT ["php-fpm"]

Criar os arquivos de configuração do PHP

Habilitar o JIT

php8-fpm/config/jit.ini

opcache.enable = 1
opcache.jit_buffer_size = 100M
opcache.jit = 1235
opcache.jit_debug = 0

Configurar o timezone, use conforme o seu fuso horário da sua região

php8-fpm/config/timezone.ini

date.timezone = "America/Sao_Paulo"

Criar o arquivo default.conf do Nginx no diretório ambiente-php8-nginx-mysql-docker/nginx/config

server {
  listen 80;
  index index.php index.html;
  root /var/www/html;
  server_name localhost;

  location ~ \.php$ {
    try_files $uri =404;
    fastcgi_split_path_info ^(.+\.php)(./+)$;
    fastcgi_pass php-fpm:9000;
    fastcgi_index index.php;
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param PATH_INFO $fastcgi_path_info;
  }

  location / {
    try_files $uri $uri/ /index.php?$query_string;
    gzip_static on;
  }
}

Criar o arquivo docker-compose.yml na raiz do diretório ambiente-php8-nginx-mysql-docker

OBS: Esteja atento a indentação do arquivo docker-compose.yml para o correto funcionamento na hora que for executar.

docker-compose.yml

version: '3'
services:
  php-fpm:
    build: ./php8-fpm
    container_name: php8-fpm
    volumes:
      - ./src:/var/www/html
      - ./php8-fpm/config/jit.ini:/usr/local/etc/php/conf.d/jit.ini
      - ./php8-fpm/config/timezone.ini:/usr/local/etc/php/conf.d/timezone.ini
  nginx:
    image: nginx:1.19.6
    restart: always
    ports:
      - "8000:80"
    volumes:
      - "./src:/var/www/html"
      - "./nginx/default:/etc/nginx/conf.d/default.conf"
    depends_on:
      - php-fpm

  db:
    image: mysql:8.0
    command: --default-authentication-plugin=mysql_native_password
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: secret
    volumes:
      - "./db:/var/lib/mysql"

  adminer:
    image: adminer
    restart: always
    ports:
      - 8080:8080


Executar o build e execução do ambiente na raiz do diretório ambiente-php8-nginx-mysql-docker

OBS: Antes de executar, verifique se as portas 8000 (Nginx), 9000 (FPM), 8080 (Adminer) e 3306 (MySQL) estão disponíveis na sua máquina.

$ docker-compose up -d

Aguarde e após estiver OK, crie um arquivo ambiente-php8-nginx-mysql-docker/src/info.php

<?php
  phpinfo();

Acesse no browser http://localhost:8000/info.php e para gerenciar bancos de dados http://localhost:8080

Usos gerais no container no ambiente

Para verificar logs do container php8-fpm

$ docker logs php8-fpm  

Para acessar o container similar o acesso SSH

$ docker exec -it php8-fpm bash

Para instalar alguma lib/framework via composer no container php8-fpm

Acesse o diretório ambiente-php8-nginx-mysql-docker/src e execute para iniciar um novo projeto com framework Laravel

$ docker exec -it php8-fpm composer create-project laravel/laravel

Referências

Ambiente PHP 8 com Nginx no Docker

Feito!

quarta-feira, 3 de fevereiro de 2021

Configurando ambiente de desenvolvimento PHP 8 com Apache no Docker

O objetivo deste howto é explicar os procedimentos de configuração do ambiente de desenvolvimento PHP 8 com JIT habilitado, composer, Apache, Adminer e SGBD MySQL 8 no Docker.

A premissa é ter Docker e Docker-Compose instalados, caso ainda não tenha, verifique Instalando Docker e Docker-Compose no Linux ou Instalando Docker e Docker-Compose no Windows 10

$ cd $HOME
$ mkdir -p ambiente-php8-apache-mysql-docker && cd ambiente-php8-apache-mysql-docker
$ mkdir -p php8-apache php8-apache/config src db

Os diretórios src, db são volumes mapeados entre o HOST e CONTAINER

O diretório ambiente-php8-apache-mysql-docker/src é onde estará os fontes do projeto no HOST que irá mapear no diretório /var/www/html no CONTAINER

O diretório ambiente-php8-apache-mysql-docker/db é onde está os arquivos do banco de dados no HOST que irá mapear no diretório /var/lib/mysql no CONTAINER

Se não tiver o volume db ao encerrar, o banco de dados irá para o espaço, pois o container é volátel.

Criar o Dockerfile para o PHP

php8-apache/Dockerfile

FROM php:8.0.1-apache-buster
RUN docker-php-ext-install pdo pdo_mysql bcmath opcache
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer


Criar os arquivos de configuração do PHP

Habilitar o JIT

php8-apache/config/jit.ini

opcache.enable = 1
opcache.jit_buffer_size = 100M
opcache.jit = 1235
opcache.jit_debug = 0

Configurar o timezone, use conforme o seu fuso horário da sua região

php8-apache/config/timezone.ini

date.timezone = "America/Sao_Paulo"

Criar o arquivo docker-compose.yml na raiz do diretório ambiente-php8-apache-mysql-docker

OBS: Esteja atento a indentação do arquivo docker-compose.yml para o correto funcionamento na hora que for executar.

docker-compose.yml

version: "3"
services:
  php-apache:
    container_name: php8-apache
    build: ./php8-apache
    ports:
      - "8000:80"
    volumes:
      - ./src:/var/www/html
      - ./php8-apache/config/jit.ini:/usr/local/etc/php/conf.d/jit.ini
      - ./php8-apache/config/timezone.ini:/usr/local/etc/php/conf.d/timezone.ini
  db:
    image: mysql:8.0
    command: --default-authentication-plugin=mysql_native_password
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: secret
    volumes:
      - "./db:/var/lib/mysql"
  adminer:
    image: adminer
    restart: always
    ports:
      - 8080:8080

Executar o build e execução do ambiente na raiz do direitório ambiente-php8-apache-mysql

OBS: Antes de executar, verifique se as portas 8000, 8080 e 3306 estão disponíveis na sua máquina.

$ docker-compose up -d

Aguarde e após estiver OK, crie um arquivo ambiente-php8-apache-mysql/src/info.php

<?php
  phpinfo();

Acesse no browser http://localhost:8000/info.php e para gerenciar bancos de dados http://localhost:8080

Usos gerais no container no ambiente

Para verificar logs do container php8-apache

$ docker logs php8-apache  

Para acessar o container similar o acesso SSH

$ docker exec -it php8-apache bash

Para instalar alguma lib/framework via composer no container php8-apache

Acesse o diretório ambiente-php8-apache-mysql-docker/src e execute para iniciar um novo projeto com framework Laravel

$ docker exec -it php8-apache composer create-project laravel/laravel

Referências

Ambiente PHP 8 com Apache no Docker

Feito!