anúncios

terça-feira, 31 de dezembro de 2019

Copiando arquivos via SCP

O que é SCP?

SCP (Secure Copy Protocol) é um protocolo de rede para transferências de arquivos que foi baseado em Berkeley Software Distribution (BSD) Remote Copy Protocol.

Por meio do scp, vocẽ pode transferir arquivos de forma fácil e segura entre uma máquina local para servidor remoto e vice-versa.

Para funcionar o comando scp é necessário que já tenha instalado e configurado a conexão SSH em um servidor remoto.

Para especificar a porta utilizada no SSH, diferente do padrão que é 22, adicione o argumento -p seguido da porta utilizada.

Exemplo de sintaxe do comando SCP no Linux

Copiando um arquivo remoto para máquina local
$ scp user@IP:/dir-remoto/arquivo-remoto.txt /dir-local/arquivo-local.txt

Enviando um arquivo local para um servidor remoto
$ scp /dir-local/arquivo-local.txt user@IP:/dir-remoto/arquivo-remoto.txt

Copiando diretórios e subdiretórios do servidor remoto para máquina local
$ scp -r user@IP:/dir-remoto /dir-local/

Enviando diretórios e subdiretórios da máquina local para o servidor remoto
$ scp -r /dir-local/ user@IP:/dir-remoto/

Feito!

Resolvendo problema de acesso negado ao acessar PHPMyAdmin



Problema comum de quem utiliza ambiente PHP no Windows com XAMPP. Só estou publicando a dica da solução desse problema devido ter ocorrido com um colega do time na empresa. Eu utilizo ambiente PHP no Docker e o DBeaver como cliente SGBD nas plataformas Windows e Linux.

É bom ressaltar que o PHPMyAdmin é uma ferramenta web para gerenciar o SGBD MySQL. Existe outros clientes que suportam diversos SGBDs (MySQL, PostgreSQL, Oracle, MSSQL), como o HeidiSQL e DBeaver.

Por padrão o password de root do MySQL no XAMPP vem em branco, ao definir e tentar acessar o phpmyadmin ocorre a mensagem do screenshot acima.

Segue a solução abaixo:

Solução

Editar o arquivo c:/xampp/phpmyadmin/config.inc.php alterando o password do usuário root que foi definido, conforme abaixo:

/* Authentication type and info */
$cfg['Servers'][$i]['auth_type'] = 'config';
$cfg['Servers'][$i]['user'] = 'root';
$cfg['Servers'][$i]['password'] = 'senha-definida';
$cfg['Servers'][$i]['extension'] = 'mysqli';
$cfg['Servers'][$i]['AllowNoPassword'] = true;
$cfg['Lang'] = '';

Feito!

sábado, 28 de dezembro de 2019

Instalando WPS Office no Linux

O que é WPS Office ?

WPS Office é uma suíte de escritório escrito em C++ que executa em plataformas Windows, Linux, Android e iOS. Desenvolvido pelo desenvolvedor de software chinês em Zhuhai, a Kingsoft. O WPS Office é um conjunto de softwares que é composto de três componentes principais: WPS Writer, WPS Presentation e WPS Spreadsheet.

O objetivo deste post é apresentar a instalação do WPS Office nas distros Debian/Ubuntu e CentOS/Fedora. A versão atual até a data de publicação deste post é 11.1.0.8865.

Instalação

Link de download WPS Office For Linux

Debian/Ubuntu

$ wget -c "http://wdl1.pcfg.cache.wpscdn.com/wpsdl/wpsoffice/download/linux/8865/wps-office_11.1.0.8865_amd64.deb"

$ sudo dpkg -i wps-office_11.1.0.8865_amd64.deb

CentOS/Fedora

$ wget -c "http://wdl1.pcfg.cache.wpscdn.com/wpsdl/wpsoffice/download/linux/8865/wps-office-11.1.0.8865-1.x86_64.rpm"

$ sudo rpm -i wps-office-11.1.0.8865-1.x86_64.rpm

Feito!

domingo, 22 de dezembro de 2019

Resolvendo o problema Cannot connect to the ZCS upstream server Connection is refused no Zimbra

O objetivo deste post é de apresentar o problema ZCS upstream server connection is refused no Zimbra e a respectiva solução.

Ocorreu uma vez a seguinte mensagem de erro no servidor Zimbra.

Problema

"Problem accessing ZCS upstream server. 
Cannot connect to the ZCS upstream server. Connection is refused.
Possible reasons:
upstream server is unreachable
upstream server is currently being upgraded
upstream server is down
Please contact your ZCS administrator to fix the problem.
Powered by Nginx-Zimbra://"
Solução

Geralmente isso ocorre com arquivo de log, necessário limpar, parando todos os serviços do Zimbra e iniciando novamente.

$ su zimbra
$ zmcontrol stop
$ zmcontrol start
$ zmcontrol status


Parando os serviços

zimbra@zimbra-server:~/nginx/logs$ zmcontrol stop  
 Host zimbra-server.saitam.com  
      Stopping vmware-ha...skipped.  
           /opt/zimbra/bin/zmhactl missing or not executable.  
      Stopping zmconfigd...Done.  
      Stopping zimlet webapp...Done.  
      Stopping zimbraAdmin webapp...Done.  
      Stopping zimbra webapp...Done.  
      Stopping service webapp...Done.  
      Stopping stats...Done.  
      Stopping mta...Done.  
      Stopping spell...Done.  
      Stopping snmp...Done.  
      Stopping cbpolicyd...Done.  
      Stopping archiving...Done.  
      Stopping opendkim...Done.  
      Stopping amavis...Done.  
      Stopping antivirus...Done.  
      Stopping antispam...Done.  
      Stopping proxy...Done.  
      Stopping memcached...Done.  
      Stopping mailbox...Done.  
      Stopping logger...Done.  
      Stopping dnscache...Done.  
      Stopping ldap...Done.  

Iniciando os serviços

zimbra@zimbra-server:~/nginx/logs$ zmcontrol start  
 Host zimbra-server.saitam.com  
      Starting ldap...Done.  
      Starting zmconfigd...Done.  
      Starting logger...Done.  
      Starting mailbox...Done.  
      Starting memcached...Done.  
      Starting proxy...Done.  
      Starting amavis...Done.  
      Starting antispam...Done.  
      Starting antivirus...Done.  
      Starting opendkim...Done.  
      Starting snmp...Done.  
      Starting spell...Done.  
      Starting mta...Done.  
      Starting stats...Done.  
      Starting service webapp...Done.  
      Starting zimbra webapp...Done.  
      Starting zimbraAdmin webapp...Done.  
      Starting zimlet webapp...Done.  

Verificando o status dos serviços

 zimbra@Saitam:~/nginx/logs$ zmcontrol status  
 Host zimbra-server.saitam.com  
      amavis         Running  
      antispam        Running  
      antivirus        Running  
      ldap          Running  
      logger         Running  
      mailbox         Running  
      memcached        Running  
      mta           Running  
      opendkim        Running  
      proxy          Running  
      service webapp     Running  
      snmp          Running  
      spell          Running  
      stats          Running  
      zimbra webapp      Running  
      zimbraAdmin webapp   Running  
      zimlet webapp      Running  
      zmconfigd        Running  

Antes




Depois




Feito!

sábado, 21 de dezembro de 2019

Instalando e Configurando o VestaCP

O que é VestaCP?

O painel de controle do Vesta (muitas vezes abreviado como VestaCP) é um painel de controle de hospedagem de código aberto, permitindo ao usuário gerenciar sites, criar contas de email, gerenciar contas de email, gerenciar contas FTP e muito mais.

Requisitos mínimos de hardware

Memória RAM HD CPU
512MB 20GB 1GHz

Instalação

Considerando que tenha o servidor Linux com a distribuição Debian/Ubuntu Server/CentOS instalado no seu Datacenter ou Cloudserver (AWS ou Digital Ocean), conecte ao servidor via SSH e segue os procedimentos abaixo:

$ curl -O http://vestacp.com/pub/vst-install.sh
# bash vst-install.sh

Segue os steps do setup da instalação

Após o término, acesse o VestaCP no browser https://dominio.com.br:8083 com o usuário e password de administrador definido na instalação.

Figura 1: Screenshot do VestaCP


Considerações finais

Parabéns por concluir a instalação do Vesta CP no Debian/Ubuntu Server/CentOS, agora você está pronto para começar a gerenciar sites, contas de email, contas FTP e muito mais.

Feito!

sexta-feira, 20 de dezembro de 2019

Instalando e Configurando servidor CalDAV e CardDAV com Radicale

O que é Radicale?

Radicale é um servidor de calendário e lista de endereços, desenvolvido em Python e implementa os padrões CalDAV e CardDAV.

A configuração recomendada para uso em produção é atender ao Apache em todo o sistema via uWSGI com autenticação baseada em Apache.

Debian/Ubuntu

Instalação

$ sudo apt install radicale apache2-utils python3-bcrypt python3-passlib

Autenticação

Crie um arquivo "users" com todos os nomes de usuário e senhas

$ htpasswd -c -B /etc/radicale/users user
$ htpasswd -B /etc/radicale/users user2

Em seguida, para definir a autenticação como htpasswd com criptografia bcrypt, edite essas instâncias em /etc/radicale/config

[auth]
type = htpasswd
htpasswd_filename = /etc/radicale/users
htpasswd_encryption = bcrypt
O script de inicialização do SysV fornecido deve cuidar disso. Caso contrário, você pode fazê-lo manualmente, conforme abaixo:

$ sudo mkdir -p /var/lib/radicale
$ sudo chown radicale:radicale /var/lib/radicale
$ sudo chmod g-w,o-rwx /var/lib/radicale
$ sudo mkdir -p /var/log/radicale
$ sudo chown radicale:adm /var/log/radicale
$ sudo chmod g-w,o-rwx /var/log/radicale
Arquivo de log

Editar o arquivo /etc/radicale/config conforme abaixo:
$ sudo vim /etc/radicale/config

[logging]
config = /etc/radicale/logging

/etc/radicale/logging
[handlers]
#keys = console
keys = file

[formatters]
#keys = simple
keys = full

[logger_root]
#level = WARNING
#level = INFO
level = DEBUG
#handlers = console
handlers = file
[handler_file]
class = FileHandler
# Note: Debian logrotate handles /var/log/radicale/*.log, but not /var/log/radicale/log
# (the example given on radicale.org, including their own logfile rotation)
args = ('/var/log/radicale/radicale.log',)
formatter = full
[formatter_full]
format = %(asctime)s - [%(thread)x] %(levelname)s: %(message)s
Adicionar o hostname do Radicale

Editar o arquivo /etc/radicale/config

[server]
hosts = 127.0.0.1:5232, hostname.local:5232
ssl = true
Habilitar o serviço Radicale no boot

$ sudo update-rc.d radicale enable
service radicale start
service radicale status
service radicale stop

Configuração do Vhost no Apache para o Radicale

$ sudo apt install apache2 libapache2-mod-wsgi
$ sudo vim etc/apache2/sites-available/radicale.conf

< VirtualHost *:80 >
  ServerName dav.dominio.com.br

WSGIDaemonProcess radicale user=www-data group=www-data threads=1
WSGIScriptAlias / /usr/share/radicale/radicale.wsgi

< Directory /usr/share/radicale>
WSGIProcessGroup radicale
WSGIApplicationGroup %{GLOBAL}
AllowOverride None
Order allow,deny
allow from all
< /Directory >
< /VirtualHost >
Ativar o Vhost

$ sudo a2dissite 000-default.conf
$ sudo a2ensite radicale.conf

Criar arquivo de log com usuário e grupo www-data

$ sudo mkdir -p /var/log/radicale/
$ sudo chown -R www-data /var/log/radicale/
$ sudo mkdir -p /var/lib/radicale
$ sudo chown -R www-data /var/lib/radicale/

Reinicie o serviço do Radicale e Apache

Ao acessar http://dav.dominio.com.br irá redirecionar por debaixo dos panos http://dav.dominio:5232

Agora, utilize o App CardDAV-Sync e adicione o servidor Radicale configurado para sincronizar os contatos.

Referências:

https://wiki.debian.org/Radicale

Feito!

quinta-feira, 19 de dezembro de 2019

Configurar certificado SSL com Let's Encrypt

O que é Let's Encrypt?

Let's Encrypt é uma autoridade certificadora gratuita, automatizada e aberta que se tornou possível graças à organização sem fins lucrativos Internet Security Research Group (ISRG)

O Certbot é o cliente do Let's Encrypt que facilita a emissão do certificado SSL no webserver Apache e Nginx.

O presente post, irá explicar os procedimentos de geração do certificado SSL com Let's Encrypt em paralelo com Certbot em um servidor com Debian.

Instalar o Certbot

No Apache

$ sudo apt-get install python-certbot-apache

No Nginx

$ sudo apt-get install python-certbot-nginx

Realizar a emissão e instalação do certificado SSL
Após instalar o certbot, execute a emissão do certificado de acordo com o webserver Apache ou Nginx que estiver utilizando em seu servidor.

No Apache

$ sudo certbot --apache -d dominio.com.br -d dominio.com.br

No Nginx

$ sudo certbot --nginx -d dominio.com.br -d dominio.com.br

Neste exemplo, estamos emitindo um certificado tanto para o domínio principal quanto para o subdomínio www.

Após a execução do comando, precisa fornecer algumas informações solicitadas no próprio terminal, uma delas é o e-mail que será utilizado para enviar notificações sobre a renovação do certificado e eventuais alertas de segurança. Aceitar os termos de serviço e por fim escolha a opção para redicionar todo tráfego para executar sob o prototocolo HTTPS.

Com isso, o certificado já deverá estar funcionamento plenamente. Para verificar, acesse a URL raiz do seu domínio usando o protocolo seguro (https://seudominio.com.br). É bom verificar o diagnótico completo do certificado, acesse o endereço abaixo substituindo pelo seu domínio.

https://www.ssllabs.com/ssltest/analyze.html?d=saitam.com

Ativar a renovação automática

Todos os certificados emitidos pela Let's Encrypt têm duração de apenas 90 dias. O Certbot já vem programado para configurar a renovação automática do Let's Encrypt antes da data de expiração. Na prática, confere diariamente a data de expiração do certificado. Se for menor do que 30 dias, o certificado é renovado.

$ sudo certbot renew --dry-run

O comando certbot renew é o responsável por realizar a verificação do Let's Encrypt. Nesse caso, a flag --dry-run dispara o script, mas em modo teste. Assim, ele não realiza a renovação em si, apenas uma simulação.

A qualquer momento, se houver algum problema com a renovação do certificado, você receberá um aviso no e-mail que cadastrou no início do processo.

Referências:

https://letsencrypt.org/pt-br/docs/

Feito!

quarta-feira, 18 de dezembro de 2019

Configurar certificado Self-Signed SSL no Nginx

O que é certificado SSL ?

Certificado SSL é uma maneira de criar uma conexão mais segura criptografando as informações transmitidas entre o cliente e o servidor onde o certificado está instalado. Este certificado ainda exibe informações de identificação do servidor diretamente no browser do usuário.

Certificados SSL normalmente são emitidos por empresas chamadas de Certificate Authorities que verifica os detalhes do servidor, mas também é possível emitir Self-signed SSL certificate.

O presente post explica os procedimentos de como criar self-signed certificate e configurar no Nginx com Debian/Ubuntu.

Requisitos:

Ter o Nginx instalado.

Instalação do Nginx

$ sudo apt install nginx
Reiniciar o serviço Nginx

$ sudo systemctl restart nginx

Criar o certificado Self-Signed SSL (não assinado)

$ sudo mkdir /etc/nginx/ssl
$ sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/nginx/ssl/nginx.key -out /etc/nginx/ssl/nginx.crt

O comando acima irá criar dois arquivos nginx.key e nginx.crt necessários para configurar Nginx HTTPS server.
Esse certificado tem validade por 1 ano.
Ao executar o comando acima irá perguntar conforme abaixo:

Country Name (2 letter code) [AU]:BR
State or Province Name (full name) [Some-State]:Nome do Estado
Locality Name (eg, city) []:Nome da Cidade
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Nome da Empresa fictícia
Organizational Unit Name (eg, section) []:Departamento de TI
Common Name (e.g. server FQDN or YOUR name) []: nome definido no ServerName do Vhost
Email Address []:seu_email@dominio.com.br

Configurar o Nginx HTTPS server com certificado SSL no Vhost

$ sudo vim /etc/nginx/sites-available/projeto-ssl.conf

PS: Substituir o destacado em vermelho para o seu cenário de projeto do Vhost
server {
  listen       443 ssl;
  server_name  projeto.local;
  ssl_certificate     /usr/local/nginx/ssl/nginx.crt;
  ssl_certificate_key /usr/local/nginx/ssl/nginx.key;
  ssl_protocols       SSLv3 TLSv1 TLSv1.1 TLSv1.2;
  ssl_ciphers         HIGH:!aNULL:!MD5;

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

  charset utf-8;

  location ~ /(\.ht) {
    deny all;
    return 404;
  }

  location ~ ^(.+\.php)(.*)$ {
    try_files $fastcgi_script_name =404;
    include        /etc/nginx/fastcgi_params;
    fastcgi_split_path_info  ^(.+\.php)(.*)$;
    fastcgi_pass   unix:/var/run/php-fpm/php-fpm.sock;
    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    fastcgi_param  PATH_INFO        $fastcgi_path_info;
  }
}

Reiniciar o Nginx

$ sudo systemctl restart nginx

Adicionar o Vhost no arquivo /etc/hosts

127.0.0.1 projeto.local

No browser acessa https://projeto.local

Feito!

terça-feira, 17 de dezembro de 2019

Configurar certificado Self-Signed SSL no Apache

O que é certificado SSL ?

Certificado SSL é uma maneira de criar uma conexão mais segura criptografando as informações transmitidas entre o cliente e o servidor onde o certificado está instalado. Este certificado ainda exibe informações de identificação do servidor diretamente no browser do usuário.

Certificados SSL normalmente são emitidos por empresas chamadas de Certificate Authorities que verifica os detalhes do servidor, mas também é possível emitir Self-signed SSL certificate.

O presente post explica os procedimentos de como criar self-signed certificate e configurar no Apache com Debian/Ubuntu.

Requisitos:

Ter o Apache instalado e os módulos ssl e mod_rewrite habilitados.

Instalação do Apache e habilitar os módulos ssl e mod_rewrite

$ sudo apt install apache2
$ sudo a2enmod ssl
$ sudo a2enmod rewrite

Reiniciar o serviço Apache

$ sudo systemctl restart apache2

Criar o certificado Self-Signed SSL (não assinado)

$ sudo mkdir /etc/apache2/ssl
$ sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/apache2/ssl/apache.key -out /etc/apache2/ssl/apache.crt
O comando acima irá criar dois arquivos apache.key e apache.crt necessários para configurar Apache HTTPS server.
Esse certificado tem validade por 1 ano.
Ao executar o comando acima irá perguntar conforme abaixo:

Country Name (2 letter code) [AU]:BR
State or Province Name (full name) [Some-State]:Nome do Estado
Locality Name (eg, city) []:Nome da Cidade
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Nome da Empresa fictícia
Organizational Unit Name (eg, section) []:Departamento de TI
Common Name (e.g. server FQDN or YOUR name) []: nome definido no ServerName do Vhost
Email Address []:seu_email@dominio.com.br

Configurar o Apache HTTPS server com certificado SSL no Vhost

$ sudo vim /etc/apache2/sites-available/projeto-ssl.conf

PS: Substituir o destacado em vermelho para o seu cenário de projeto do Vhost
< IfModule mod_ssl.c >
    < VirtualHost _default_:443 >
        ServerAdmin webmaster@localhost

        DocumentRoot /var/www/html/projeto
        ServerName projeto.local

            RewriteEngine On

        < Directory "/var/www/html/projeto" >
            Options None
            Options +FollowSymlinks
            AllowOverride All
        < /Directory >

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

        SSLEngine on

        SSLCertificateFile    /etc/apache2/ssl/apache.crt
        SSLCertificateKeyFile /etc/apache2/ssl/apache.key

        < FilesMatch "\.(cgi|shtml|phtml|php)$" >
                SSLOptions +StdEnvVars
        < /FilesMatch >
        < Directory /usr/lib/cgi-bin >
                SSLOptions +StdEnvVars
        < /Directory >

        BrowserMatch "MSIE [2-6]" \
                nokeepalive ssl-unclean-shutdown \
                downgrade-1.0 force-response-1.0
        BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown

    < /VirtualHost >
< /IfModule >
Ativar o Vhost

$ sudo a2ensite projeto-ssl.conf

Reiniciar o Apache

$ sudo systemctl restart apache2

Adicionar o Vhost no arquivo /etc/hosts

127.0.0.1 projeto.local

No browser acessa https://projeto.local

Feito!

segunda-feira, 16 de dezembro de 2019

Habilitar o sudo no Debian

O que é sudo ?

O sudo é uma aplicação que permite a execução de comandos administrativos de segurança com usuário regular. Na política do Debian, o sudo não vem habilitado por padrão para o usuário regular, devido o fato ser uma distro destinada em servidor, mas se esteja utilizando o Debian em ambiente desktop, então não tem problema habilitar o sudo para o seu usuário regular.

Instalar o sudo
$ apt install sudo

Editar o arquivo /etc/sudoers

# vim /etc/sudoers

Na linha root ALL=(ALL:ALL) ALL substituir o root pelo nome do seu usuário
seu usuário ALL=(ALL:ALL) ALL

Feito!

domingo, 15 de dezembro de 2019

Instalando e Configurando servidor CalDAV e CardDAV com Baïkal

O que é Baïkal?

O Baïkal oferece acesso sincronizado aos seus calendários e catálogos de endereços pelo CalDAV e CardDAV. Assim os contatos e calendários inseridos nos smartphones são sincronizados no Baïkal em servidor próprio de CalDAV e CardDAV.

Pré requisitos do ambiente para o Baïkal

O Baïkal foi desenvolvimento em PHP, então o ambiente precisa ter como servidor web Apache/Nginx, PHP e SGBD MySQL.

Debian/Ubuntu:

$ sudo apt install apache2 libapache2-mod-php7.3 php7.3-dev php7.3-mysql php7.3-mbstring php7.3-gd mariadb-server

Download do Baïkal

$ wget -c "https://github.com/sabre-io/Baikal/releases/download/0.6.1/baikal-0.6.1.zip"
$ sudo unzip baikal-0.6.1.zip -d /var/www/html
$ sudo chown www-data:www-data /var/www/html/baikal/Specific

Criar o banco de dados no SGBD MySQL

$ sudo mysql -u root -p
mysql> create database baikal;
mysql> CREATE USER userbaikal@localhost IDENTIFIED BY 'secret';
mysql> GRANT ALL PRIVILEGES ON baikal.* TO userbaikal@localhost WITH GRANT OPTION;
mysql> quit

Configuração do Vhost
No Apache
Criar o arquivo /etc/apache2/sites-available/baikal.conf
< VirtualHost *:80 >
DocumentRoot /var/www/html/baikal/html
ServerName dav.dominio.com.br

RewriteEngine On
RewriteRule /.well-known/carddav /card.php [R,L]
RewriteRule /.well-known/caldav /cal.php [R,L]

< Directory "/var/www/html/baikal/html" >
Options None
Options +FollowSymlinks
AllowOverride All
< /Directory >
< /VirtualHost >
No Nginx
Criar o arquivo /etc/nginx/sites-available/baikal.conf
server {
  listen       80;
  server_name  dav.dominio.com.br;

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

  rewrite ^/.well-known/caldav /dav.php redirect;
  rewrite ^/.well-known/carddav /dav.php redirect;

  charset utf-8;

  location ~ /(\.ht|Core|Specific) {
    deny all;
    return 404;
  }

  location ~ ^(.+\.php)(.*)$ {
    try_files $fastcgi_script_name =404;
    include        /etc/nginx/fastcgi_params;
    fastcgi_split_path_info  ^(.+\.php)(.*)$;
    fastcgi_pass   unix:/var/run/php-fpm/php-fpm.sock;
    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    fastcgi_param  PATH_INFO        $fastcgi_path_info;
  }
}
Ativar o Vhost e o mod_rewrite
$ sudo a2ensite baikal.conf
$ sudo a2enmod rewrite

Reinicie o Apache ou Nginx
$ sudo systemctl restart apache2
OU
$ sudo systemctl restart nginx

No browser, acessar http://dav.dominio.com.br
STEP 1

Server Time zone: Escolher o seu fuso horário, no meu caso, selecionei America/Sao_Paulo.
Enable CalDAV: Marque a opção para habilitar a funcionalidade CalDAV do Baïkal.
Enable CardDAV: Marque a opção para habilitar a funcionalidade CardDAV do Baïkal.
WebDAV authentication type: Escolha Digest.
Admin password: Definir um password para interface de administração do Baïkal.
Admin password, confirmation: Confirme o password.

STEP 2

MySQL host: localhost
MySQL database name: Coloque o nome do banco de dados que foi definido, no caso foi baikal.
MySQL username: Coloque o nome de usuário do banco de dados, no caso foi userbaikal.
MySQL password: Coloque a senha do usuário do banco de dados que foi definida.

Clique em Start using Baïkal.

Baïkal instalado com sucesso. Clique em Start using Baïkal para a interface administrativa do Baïkal.

Use o Let's Encrypt para o certificado SSL.

Considerações finais

Com o servidor CalDAV e CardDAV instalado e configurado, crie um usuário CardDAV no servidor para sincronizar com os clientes (smartphones) pelo App CardDAV-Sync. Informe o domínio do servidor do Baikal que foi configurado com o usuário e password. Lembrar de marcar SSL e para isso ter ativado o Let's Encrypt no servidor.



No App CardDAV-Sync, adicione o domínio servidor que foi configurado o Baïkal e preencher conforme abaixo:

PS: Substituir o dav.dominio.com.br pelo nome do seu domínio que definiu no ServerName do Vhost com o domínio validado no Registro BR

Server name or URL: dav.dominio.com.br/card.php/addressbooks/usuario/default
Marque Use SSL (utilizar o Let's Encrypt no servidor)
Username: Colocar o nome de usuário que criou na lista de endereços no servidor Baïkal
Password: Colocar a senha definida do username

Feito!

sábado, 14 de dezembro de 2019

Desabilitar o case sensitive do MySQL no Linux

Se desenvolveu uma aplicação no ambiente de desenvolvimento com o SGBD MySQL em plataforma Windows, criou nome das tabelas e colunas do banco de dados em minúscula e na comunicação com a aplicação e banco de dados escreveu em maiúscula, a príncipio no Windows funcionou sem problemas, mas ao fazer o deploy no servidor de produção que é Linux, se deparou com erro, o nome da tabela não encontrou. O que ocorreu nesse caso, foi que no Windows o SGBD MySQL inclui o case sensitive habilitado por padrão e no Linux é case sensitive e obviamente o SGBD MySQL vem desabilitado o case sensitive , isto é, teste é diferente de TESTE.

E agora como resolver? Calma, esse é o objetivo desta postagem, explicar os procedimentos para desabilitar o case sensitive no SGBD MySQL em servidor Linux (Debian/Ubuntu/CentOS).

Segue os procedimentos:
  1. Parar o serviço do MySQL: $ sudo systemctl stop mysql
  2. Editar o arquivo de configuração do MySQL: $ sudo vim /etc/mysql/my.cnf
  3. Na seção [mysqld] adicione a linha lower_case_table_names=1
  4. Iniciar o serviço do MySQL: $ sudo systemctl start mysql
Feito!

sexta-feira, 15 de novembro de 2019

Resolvendo o bug da hora errada no Windows em dual boot com Linux

Se você tem o Windows 10 e Linux (qualquer distro) no seu computador desktop ou notebook, deve ter notado um bug no relógio do Windows com 3 horas adiantado ao iniciar com Windows 10, no Linux (qualquer distro) a hora está correta, conforme o fuso horário. Chega de papo e vamos resolver esse problema.

Observação:
Se a hora já estiver sendo exibida corretamente no seu Windows, realizar esse procedimento poderá ter o efeito contrário ao desejado.

  1. Abrir o regedit, pesquisando por regedit no menu iniciar
  2. Acesse o diretório HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation
  3. Dentro deste diretório, crie uma nova entrada de registro. Clique com botão direito do mouse na área em branco, clique em novo e "Valor QWORD" se o sistema for 64 bits. Caso o sistema seja 32 bits, clique em "Valor DWORD". Renomeia a entrada para RealTimeIsUniversal
  4. Clique com botão direito na entrada que criou no procedimento anterior, em Modificar. Na janela que abrir, no campo "Dados do valor" digite "1". Marque a caixa de seleção "Hexadecimal", e clique em "OK".
  5. Clique com botão direito em cima do relógio, depois "Ajustar data/hora", e deixe as configurações como na Imagem 1:
Imagem 1. Configuração de ajuste data/hora no Windows 10



Agora reinicie o sistema e a hora estará correta.

Referências:

https://wiki.archlinux.org/index.php/System_time#UTC_in_Windows

Feito!

domingo, 10 de novembro de 2019

Instalando Zabbix 4.4 no Debian 10

O que é Zabbix?

Zabbix é um software que monitora diversos parâmetros de uma rede como a integridade e desempenho dos servidores. Oferece excelentes relatórios e visualização de dados de recursos com base nos dados armazenados, e usa um mecanismo de notificação flexível que permite aos usuários configurar e-mail e integrar com Telegram com alertas para qualquer evento, o que permite uma reação rápida para os problemas do servidor.

Corretamente configurado, o Zabbix pode desempenhar um papel importante no controle da infraestrutura de TI. Isto é igualmente verdade para as pequenas organizações com alguns servidores e para grandes empresas com um grande número de servidores.

Observação: Testado na distribuição GNU/Linux Debian 10 e a versão atual do Zabbix é 4.4 até a data de publicação desta postagem.

Download do pacote Zabbix no Debian 10

# wget https://repo.zabbix.com/zabbix/4.4/debian/pool/main/z/zabbix-release/zabbix-release_4.4-1+buster_all.deb
# dpkg -i zabbix-release_4.4-1+buster_all.deb
# apt update


Instalação do Server/proxy/frontend

# apt install zabbix-server-mysql
# apt install zabbix-proxy-mysql
# apt install zabbix-frontend-php zabbix-apache-conf

Caso preferir o Nginx como webserver, substituir 'apache' por 'nginx'

Criação do banco de dados para o Zabbix

O SGBD utilizado nesse howto foi MySQL
PS: A partir do MySQL 5.7 e MariaDB 10.2, a autenticação do root é realizado via Socket TCP e o password é o mesmo do usuário regular do sistema.

shell> mysql -uroot -p
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> grant all privileges on zabbix.* to zabbix@localhost identified by '';
mysql> quit;


Importação do schema e dados no servidor com MySQL

# zcat /usr/share/doc/zabbix-server-mysql/create.sql.gz | mysql -uzabbix -p zabbix

Configuração das credencias para o servidor Zabbix

# vim /etc/zabbix/zabbix_server.conf
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=secret
Configuração do Frontend

Se o webserver for Apache, como utilizado nesse howto, então edite o arquivo /etc/zabbix/apache.conf e ajuste as configurações como segue:
# vim /etc/zabbix/apache.conf
php_value max_execution_time 300
php_value memory_limit 128M
php_value post_max_size 16M
php_value upload_max_filesize 2M
php_value max_input_time 300
php_value max_input_vars 10000
php_value always_populate_raw_post_data -1
php_value date.timezone America/Sao_Paulo
Case o webserver for Nginx, edite o arquivo /etc/zabbix/nginx.conf e descomente as linhas seguintes:
liste 80;
server_name zabbix.local;
Edite também o arquivo /etc/zabbix/php-fpm.conf para ajustar conforme segue:
php_value[max_execution_time] = 300
php_value[memory_limit] = 128M
php_value[post_max_size] = 16M
php_value[upload_max_filesize] = 2M
php_value[max_input_time] = 300
php_value[max_input_vars] = 10000
php_value[date.timezone] = America/Sao_Paulo
Instalação do Agent
# apt install zabbix-agent

Inicialização do Agent
# systemctl start zabbix-agent

Inicialização do servidor Zabbix
# systemctl enable zabbix-server
# systemctl start apache2
# update-rc.d zabbix-server enable


Setup Zabbix
No browser http://IP-SERVIDOR/zabbix
Segue os steps conforme os screenshots seguintes:













O usuário e password default são: Admin/zabbix




Feito!

domingo, 27 de outubro de 2019

Instalando e Configurando ambiente PHP no Fedora

Na postagem Integração do Oracle Client no PHP com Debian/Ubuntu , foi explicado os procedimentos no Debian/Ubuntu. Então, o objeto deste howto é explicar os procedimentos de instalação e configuração do ambiente PHP com as extensões dos SGBDs MySQL, PostgreSQL, OCI8 e módulos PHP usuais na distribuição Fedora 30. A maioria dos procedimentos são os mesmos, mas no Fedora tem algumas particularidades.

Observação: O Fedora 30 já inclui no repositório o PHP 7.3.

1. Instalação dos pacotes Apache, PHP e extensões ao SGBD MySQL, PostgreSQL e posteriormente do OCI8

# dnf install -y httpd php php-cli php-fpm php-mysqlnd php-zip php-devel php-gd php-mcrypt php-mbstring php-curl php-xml php-pear php-bcmath php-json php-curl php-soap php-pgsql

2. Download do pacote Oracle Client
Pacotes oracle-instantclient19.3-basiclite-19.3.0.0.0-1.x86_64.rpm, oracle-instantclient19.3-sqlplus-19.3.0.0.0-1.x86_64.rpm , oracle-instantclient19.3-devel-19.3.0.0.0-1.x86_64.rpm

PS: Até a data de publicação deste howto a versão corrente do Oracle Cient é 19.3, então no geral basta substituir a versão que for a mais recente.

3. Instalação dos pacotes do download
# dnf install oracle-instantclient19.3-basic-19.3.0.0.0-1.x86_64.rpm
# dnf install oracle-instantclient19.3-devel-19.3.0.0.0-1.x86_64.rpm
# dnf install oracle-instantclient19.3-sqlplus-19.3.0.0.0-1.x86_64.rpm


4. Criar o arquivo oracle.conf no diretório /etc/ld.so.conf.d/ e dentro do arquivo adicionar
/usr/lib/oracle/19.3/client64/lib
$ sudo vim /etc/ld.so.conf.d/oracle.conf

5. Atualizar as bibliotecas compartilhadas do sistema $ sudo ldconfig

6. Exportar a variável ORACLE_HOME

$ export ORACLE_HOME=/usr/lib/oracle/19.3/client64/

7. Download do código fonte do oci8 e extrair os arquivos e fazer a compilação.

# pecl download OCI8
# tar zxvf oci8-2.2.0.tgz
# cd oci8-2.2.0/
# phpize
# ./configure --with-oci8=instantclient,/usr/lib/oracle/19.3/client64/lib
# make install


8. Habilitar o oci8.ini no diretório de módulos do PHP
# vim /etc/php.d/oci8.ini
extension=oci8.so
extension=pdo_oci.so
9. Habilitar o PHP no Apache
Adicione o .php no arquivo /etc/httpd/conf/httpd.conf
< IfModule mime_module >
   AddType text/html .php .phps
< /IfModule >
10. Habilitar, iniciar e verificar o status do Apache
# systemctl enable httpd
# systemctl start httpd
# systemctl status httpd


11. Testar com a função phpinfo() no info.php se a extensão Oracle foi habilitada
$ sudo vim /var/www/html/info.php
< ?php
phpinfo();


Confere os screenshots abaixo:





Se exibir como no screenshot, então a extensão Oracle no PHP foi habilitada corretamente.

12. Testar conexão com banco de dados Oracle no PHP
Agora para confirmar, teste a conexão com Oracle no script PHP testeconectaoracle.php
< ?php
try{
$conn = new PDO('oci:dbname=//127.0.0.1:1521/testedb; 'oracleuser','password');
if($conn) {
echo "database conectado";
}
}catch (PDOException $e){
// report error message
echo $e->getMessage();
}


No browser http://localhost/testeconectaoracle.php
Com isso, irá aparecer a mensagem "database conectado" , se as credencias do usuário, password e banco estiverem corretas.

Feito!

sexta-feira, 18 de outubro de 2019

Deploy de aplicação PHP no Heroku

O objeto deste howto é explicar os procedimentos para deploy de uma aplicação web desenvolvida em PHP com Framework Laravel no Heroku.

O que é Heroku?

Heroku é uma solução de Plataforma como Serviço ( Platform as a Service - PaaS), no qual o fornecedor entrega para o cliente um ambiente pronto para receber a aplicação. Diferente do IaaS Infraestrutura como Serviço ( Infrastructure as a Service - IaaS), no qual o cliente contrata máquinas (reais ou virtuais) e é responsável pela instalação de bibliotecas, montagem das estruturas do sistema de arquivos, entre outros recursos, o PaaS é uma solução de alto nível que abstrai este tipo de preocupação.

Como o ambiente é entregue pelo fornecedor, ao cliente basta se concentrar em desenvolver e instalar a aplicação. Normalmente nos serviços PaaS a instalação ou atualização é feita através de commits em repositórios remotos vinculados à aplicação, (e.g. GIT).

Requerimentos
  1. Criar a conta no Heroku, caso ainda não tenha;
  2. Instalar o Heroku CLI conforme o SO que estiver instalado;
  3. Instalar o sistema de versionamento GIT;
Após fizer os requerimentos obrigatórios, podemos seguir os procedimentos seguintes:

Acesse até o diretório onde encontra-se o seu projeto desenvolvido em PHP com Framework Laravel

Inicio do repositório local e adicionando os arquivos para commit
git init
git add .
git commit -m "first commit"


Crie um Procfile. Heroku lança um servidor Apache com PHP para servir o aplicativo a partir do DocumentRoot, que no nosso caso é a diretório /public.
echo "web: vendor/bin/heroku-php-apache2 public/" > Procfile

git add Procfile
git commit -m "Heroku Procfile"


Criar a aplicação no Heroku
heroku create nome-app

Buildpack PHP do Heroku
heroku buildpacks:set heroku/php

Acessar o bash do Heroku
heroku run bash

Gerar a KEY da aplicação
php artisan key:generate --show

Adicionar a KEY no .env
heroku config:set APP_KEY = [ colocar a chave gerada aqui ]

Adicionar credenciais do banco de dados no arquivo .env

heroku config:set DB_HOSTNAME = [ colocar o IP do servidor do banco de dados ]
heorku config:set DB_PORT = [ MySQL colocar 3306 ou PostgreSQL colocar 5432 ]
heroku config:set DB_DATABASE = [ colocar o nome do banco de dados ]
heroku config:set DB_USERNAME = [ colocar o usuário de conexão com banco de dados ]
heorku config:set DB_PASSWORD = [ colocar o password do usuário de conexão com banco de dados ]


Push do projeto no repositório remoto GIT no Heroku
git push heroku master --app nome-app

Executar os migrations e seeds no Heroku
php artisan migrate --app nome-app
php artisan db:seed --app nome-app


Abrir a aplicação no browser que definiu como padrão
heroku open --app nome-app

Feito!

quinta-feira, 17 de outubro de 2019

Configurando Proxy Reverso na aplicação web com Tomcat

O objetivo deste howto é explicar os procedimentos de configuração do Proxy Reverso de uma aplicação web com Tomcat no Debian 10 / Ubuntu Server 19.04, por exemplo, uma aplicação que foi desenvolvida em Java como webserver Tomcat e pretende deixar o webserver Apache na frente que faça o redirecionamento ao Tomcat, então nesse cenário se aplica Proxy Reverso.

Segue os procedimentos:

Instalação do Apache

# apt install apache2

Habilitar os módulos no Apache

# a2enmod proxy
# a2enmod proxy_http
# a2enmod proxy_balancer
# a2enmod proxy_ajp

Configuração Proxy no diretório /etc/apache2/mods-enabled/proxy.conf
# vim /etc/apache2/mods-enabled/proxy.conf
< IfModule mod_proxy.c >
ProxyRequests Off
< Proxy * >
AddDefaultCharset off
Order deny,allow
Allow from all
< /Proxy >
ProxyVia On
ProxyPass /aplicacao http://localhost:8080/aplicacao
ProxyPassReverse /aplicacao http://localhost:8080/aplicacao
< /IfModule >

Faça alteração das informações de ProxyPass e ProxyPassReverse conforme sua aplicação que deseja criar o proxy reverso. Após reiniciar o Apache, as alterações estão ativadas e pode acessar http://localhost/aplicacao que será redirecionado para aplicação na porta 8080 do Tomcat.

# systemctl restart apache2

Feito!

domingo, 13 de outubro de 2019

Instalando driver da NVIDIA no Debian e derivados

O objetivo deste howto é explicar os procedimentos de instalação da placa de vídeo NVIDIA no Debian e derivados.

Se aplica também para quem tem VGA híbridos Intel e NVIDIA.



Segue os procedimentos:

1. Acesse o site NVIDIA Drivers , selecione a versão do driver NVIDIA que tem no seu computador ou notebook. Pesquise pela versão NVIDIA
2. $ apt search nvidia
Verifique por nvidia-drivers-X, onde X é a versão mais próxima do resultado encontrado no item 1.
$ sudo apt install nvidia-driver-X
Onde o X é a versão correspondente mais próxima do resultado encontrado no item 1.
3. Verificar o nouveau esta na backlist
$ cd /etc/modprobe.d

olhar o arquivo gerado nvidia-graphics-drivers.conf que contém os conteúdos
blacklist nouveau
blacklist lim-nouveau
alias nouveau off
alias lbm-nouveau off
Caso não gerou o arquivo nvidia-graphics-drivers.conf, então crie-o e adicione o mesmo conteúdo no arquivo.

4. Gerar o arquivo initrd do Kernel

$ sudo update-initramfs -u

Antes de reiniciar, ao executar

$ sudo lsmod | grep -i nvidia
sem retorno

$ sudo lsmod | grep -i nouveau
com retorno

Após reiniciar, o resultado será ao contrário, com retorno da nvidia e nenhum do nouveau.

$ sudo reboot

Feito!

domingo, 6 de outubro de 2019

Configurando ambiente de desenvolvimento PHP no Docker

O objetivo deste howto é apresentar a configuração do ambiente de desenvolvimento PHP no Docker

Com o Docker e Docker compose instalados, adicione o docker-compose.yml na raiz do diretório onde desejar ter o ambiente PHP que ficará os projetos.

A imagem saitam10/apache2-php7.3 inclui o Apache2, PHP 7.3, os módulos usuais, extensões aos SGBD MySQL, PostgreSQL e OCI8 (Oracle) e gerenciador composer

A estrutura do ambiente PHP é essa
ambiente-docker
 apache2-php7.3
      mysql
       data
      php
        Dockerfile
        vhost.conf
      www
      docker-compose.yml

O volume no HOST é www que é mapeado no container PHP /var/www/html

docker-compose.yml



No diretório php, inclui os arquivos Dockerfile e vhost.conf
Dockerfile



vhost.conf



Build do ambiente
Executar docker-compose up -d no diretório raiz do ambiente PHP

Após o build com sucesso, acessar o container PHP docker exec -it apache2-php7.3 bash e instalar o framework PHP de sua preferência, nesse howto é utilizado o Framework Laravel

composer create-project --prefer-dist laravel/laravel projeto

Por fim, adicione no arquivo hosts, no Linux é /etc/hosts, no Windows é c:\windows\system32\drivers\etc\hosts
127.0.0.1 projeto.local
No browser http://projeto.local

Feito!

sexta-feira, 4 de outubro de 2019

Instalando o Docker no Windows

Na postagem anterior foi apresentado a instalação do Docker e Docker Compose no Linux, mas caso use Windows 10 e seu hardware atenda os requisitos necessários, pode instalar e usar o Docker no Windows 10 também.

Os pré-requisitos são:
  • Windows 10 64 bits. Pro/Enterprise/Education
  • Pelo menos 4GB de RAM
  • Suporte de virtualização habilitado na BIOS
Atendendo os pré-requisitos listados, então habilite o Hyper-V e faça o download Docker for Windows e proceda com Next>Next>Finish.

O instalador inclui o Docker e Docker Compose, os comandos são reconhecidos no PowerShell.

Feito!

quinta-feira, 3 de outubro de 2019

Instalando Docker e Docker Compose no Linux

O objetivo deste howto é de apresentar os procedimentos de instalação do Docker e Docker Compose no Linux (Debian, Ubuntu).

Qualquer distro Linux
Recomendado se quer obter a versão mais recente do Docker. Após a instalação do Docker por esse procedimento, vá para a etapa de instalação do Docker Compose.

$ curl -fsSL https://get.docker.com -o get-docker.sh
$ sudo sh get-docker.sh


Caso prefira instalar o Docker pelo repositório da distro mesmo sendo a versão inferior da atual, então segue os procedimentos seguintes:

$ sudo apt update

Instalação de pacotes para permitir que o APT use HTTPS

$ sudo apt install \
apt-transport-https \
ca-certificates \
curl \
gnupg2 \
software-properties-common


Adiciona a chave GPG
$ curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
$ sudo apt-key fingerprint 0EBFCD88
Debian
$ sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/debian \
$(lsb_release -cs) \
stable"

Ubuntu
$ sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"


Atualize o repositório
$ sudo apt update

Instalação do Docker via APT
$ sudo apt install docker-ce

Testes
Verificar se o serviço Docker esta ativo via SystemD
$ sudo systemctl status docker
Se retornar algo semelhante como abaixo, então está OK.
docker.service - Docker Application Container Engine
   Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: e
   Active: active (running) 
Container Hello World para testar
$ sudo docker run hello-world

Adicionar o usuário logado no grupo docker
Para que possa ser executados comandos Docker com usuário regular, é necessário adicionar no grupo docker.
sudo usermod -aG docker $(whoami)

Instalação do Docker Compose
sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

sudo chmod +x /usr/local/bin/docker-compose

Feito!

terça-feira, 1 de outubro de 2019

Instalando e Configurando o Wordpress no ambiente Docker

O objetivo deste howto é apresentar a instalação e configuração do Wordpress no ambiente Docker. A premissa é ter o Docker e Docker compose instalados.

Adicione o arquivo docker-compose.yml no diretório wordpress com o seguinte conteúdo



Executar no terminal: docker-compose up -d

No Browser acessar http://localhost:8080, escolher o idioma desejado e seguir como ilustra nos screenshots abaixo.




Feito!

quarta-feira, 25 de setembro de 2019

Publicando imagens no Docker Hub

O objetivo deste post é explicar os procedimentos para publicar uma imagem no Docker Hub para que todos posso utilizar.

Docker Hub é o repositório de imagens para containers Docker. Então, o primeiro passo é criar uma conta no Docker Hub

Tendo o ambiente Docker configurado e pretende publicar no Docker Hub, segue os procedimentos abaixo:

Entrar com a conta do Docker Hub
$ docker login

Build da imagem
$ docker build -t <nome-imagem> .

Criar a tag da imagem
$ docker tag <nome-imagem> <user>/<nome-imagem>

Publicar a imagem
$ docker push <user>/<nome-image>

Pronto. Agora uma vez publicado a imagem no Docker Hub, pode ser utilizado de duas formas, a primeira é com docker pull <user>/<nome-imagem> a segunda é adicionar no docker-compose.yml e a terceira seria caso deseja customizar uma imagem existente, no Dockerfile em FROM <user>/<nome-imagem>.

Feito!

segunda-feira, 23 de setembro de 2019

Removendo images e containers Docker

De vez em quanto é necessário fazer uma limpeza no sistema, removendo todos os containers e images Docker. Então, como fazer? Segue os procedimentos. O primeiro apenas lista os containers ativos no sistema.

Caso o seu usuário que está logado não esteja no grupo Docker, então para poder executar os comandos Docker com usuário regular, faça isso
$ sudo usermod -aG docker $(whoami)

Listar os containers ativos

$ docker ps -a

Parar todos os containers, com a opção -q lista apenas os IDs dos containers
$ docker stop $(docker ps -a -q)

Remover todos os containers, com a opção -q lista apenas os IDs dos containers
$ docker rm $(docker ps -a -q)

Após parar todos os containers, pode então remover todas as images utilizando o comando parecido com o que foi utilizado para parar os containers
$ docker rmi $(docker images -q)

Script Shell que automatiza o processo


$ vim remove-containers.sh

#!/bin/bash

echo "Parando os containers...."
docker stop $(docker ps -a -q)

echo "Removendo os containers...."
docker rm $(docker ps -a -q)


echo "Removendo as imagens...."
docker rmi $(docker images -q)


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

$ chmod +x remove-containers.sh
$./remove-containers.sh

Feito!

quarta-feira, 4 de setembro de 2019

Integrando Oracle Client no PHP com Linux

Sabemos que os que desenvolvem em PHP no Linux, geralmente utilizam ambiente local de forma manual, instalar cada pacote separado: Apache, PHP e MySQL, mas precisa incluir a extensão Oracle no PHP, então, o objetivo deste howto é explicar a integração com SGBD Oracle

O presente howto explicará os procedimentos de integração com Oracle Client no PHP em seu ambiente de desenvolvimento local na distribuição Linux Debian e derivados.

Segue os procedimentos:

1. Atualizar o sistema e demais pacotes necessários

# apt update
# apt install apache2 php7.3-cli php7.3-common php7.3-curl php7.3-gd php7.3-json php7.3-mbstring php7.3-mysql php7.3-xml php7.3-fpm php7.3-dev


2. Download do pacote Oracle Client

Pacotes oracle-instantclient19.3-basiclite-19.3.0.0.0-1.x86_64.rpm, oracle-instantclient19.3-sqlplus-19.3.0.0.0-1.x86_64.rpm , oracle-instantclient19.3-devel-19.3.0.0.0-1.x86_64.rpm

PS: Até a data de publicação deste howto a versão corrente do Oracle Cient é 19.3, então no geral basta substituir a versão que for a mais recente.

3. Instalar o pacote alien para converter o .rpm to .deb
$ sudo apt install alien

4. Converter os arquivos .rpm em .deb
$ sudo alien -i oracle-instantclient19.3-basiclite-19.3.0.0.0-1.x86_64.rpm

$ sudo alien -i oracle-instantclient19.3-sqlplus-19.3.0.0.0-1.x86_64.rpm

$ sudo alien -i oracle-instantclient19.3-devel-19.3.0.0.0-1.x86_64.rpm


5. Instalar o pacote libaio1
$ sudo apt install libaio1

6. Criar o arquivo oracle.conf no diretório /etc/ld.so.conf.d/ e dentro do arquivo adicionar
/usr/lib/oracle/19.3/client64/lib
$ sudo vim /etc/ld.so.conf.d/oracle.conf

7. Atualizar as bibliotecas compartilhadas do sistema
$ sudo ldconfig

8. Exportar a variável ORACLE_HOME

$ export ORACLE_HOME=/usr/lib/oracle/19.3/client64/

9. Download do código fonte do oci8 e extrair os arquivos e fazer a compilação.

$ sudo pecl download OCI8
$ tar zxvf oci8-2.1.4.tgz
$ cd oci8-2.1.4/
$ phpize
$ ./configure --with-oci8=instantclient,/usr/lib/oracle/19.3/client64/lib
$ sudo make install


10. Habilitar o oci8.ini no diretório de módulos do PHP /etc/php/7.2/mods-available/ e criar um link simbólico /etc/php/7.2/apache2/conf.d
$ sudo vim /etc/php/7.2/mods-available/oci8.ini

Adicionar no arquivo oci8.ini
extension=oci8.so
extension=pdo_oci.so
$ sudo ln -s /etc/php/7.2/mods-available/oci8.ini /etc/php/7.2/apache2/conf.d/oci8.ini

11. Faça o download em formato ZIP do código fonte conforme a versão do PHP que foi instalado diretamente no Github https://github.com/php/php-src/tree/PHP-7.3 . Esse passo é para conseguimos a versão correta da lib PDO_OCI.

12. Extrair e compilar a lib PDO_OCI

$ unzip php-src-PHP-7.3.zip
$ cd php-src-PHP-7.3 /ext/pdo_oci/
$ phpize
$ ./configure --with-pdo-oci=instantclient,/usr,19.3
$ sudo make install


13. Habilitar a lib pdo_oci gerada no PHP
$ sudo vim /etc/php/7.3/mods-available/pdo_oci.ini
Adicione o conteúdo abaixo
extension=pdo_oci.so
$ cd /etc/php/7.3/apache2/conf.d
$ sudo ln -s /etc/php/7.3/mods-available/pdo_oci.ini pdo_oci.ini


14. Reiniciar o Apache
$ sudo service apache2 restart

15. Testar com a função phpinfo() no info.php se a extensão Oracle foi habilitada
$ sudo vim /var/www/html/info.php
< ?php
phpinfo();


Confere os screenshots abaixo:





Se exibir como no screenshot, então a extensão Oracle no PHP foi habilitada corretamente.

13. Testar conexão com banco de dados Oracle no PHP
Agora para confirmar, teste a conexão com Oracle no script PHP testeconectaoracle.php
< ?php
try{
$conn = new PDO('oci:dbname=//127.0.0.1:1521/testedb; 'oracleuser','password');
if($conn) {
echo "database conectado";
}
}catch (PDOException $e){
// report error message
echo $e->getMessage();
}


No browser http://localhost/testeconectaoracle.php
Com isso, irá aparecer a mensagem "database conectado" , se as credencias do usuário, password e banco estiverem corretas.

Feito!

segunda-feira, 2 de setembro de 2019

Integrando o Oracle no XAMPP

Sabemos que os que desenvolvem em PHP no Windows, geralmente utilizam o XAMPP, ferramenta que inclui Apache, PHP e MySQL, mas precisa incluir a extensão Oracle no PHP, então, o objetivo deste howto é explicar a integração com SGBD Oracle no XAMPP.

Segue os procedimentos:

1. Download do OCI8 PECL package em pecl.php.net e copiar o arquivo OCI8 PERCL package extraído para C:\xampp\php\ext\php_oci8_12c.dll



2.Editar o arquivo php.ini localizado em C:\xampp\php\php.ini
extension=oci8_12c
extension_dir="C:\xampp\php\ext"
3. Download do Oracle Instant Client Basic em OTN
Selecione como no screenshot, mas é importante lembrar que essa versão corresponde até a data de publicação desta postagem. Então concentre no pacote instantclient-basic-windows.x64-XXX, onde o XXX corresponde a versão.



4. Extrair o Oracle Instant Client no diretório C:\Oracle\instantclient_19.3 e adicione no PATH do Windows.

5. Criar um arquivo info.php e salvar no C:\xampp\htdocs
< ?php
  phpinfo();


6. Reinicie o Apache e acesse http://localhost/info.php



Se exibir como no screenshot, então a extensão Oracle no PHP foi habilitada corretamente.

Agora para confirmar, teste a conexão com Oracle no script PHP testeconectaoracle.php

< ?php
try{
$conn = new PDO('oci:dbname=//127.0.0.1:1521/testedb; 'oracleuser','password');
if($conn) {
echo "database conectado";
}
}catch (PDOException $e){
// report error message
echo $e->getMessage();
}


No browser http://localhost/testeconectaoracle.php
Com isso, irá aparecer a mensagem "database conectado" , se as credencias do usuário, password e banco estiverem corretas.

Feito!

quarta-feira, 21 de agosto de 2019

8 anos de blog

O blog está completando hoje, 21 de Agosto de 2019, 8 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.

sábado, 17 de agosto de 2019

Resetando o password de root no Linux (Debian e derivados)

O objetivo deste post mostrar os procedimentos de resetar o password de root no GNU/Linux Debian e derivados.

Nota: Os procedimentos a seguir assume que seja executado na máquina física de sua propriedade.
  1. Na tela do GRUB, aperte a tecla “e”;
  2. Procure a linha linux /vmlinuz… e substitua o "quiet" por init=/bin/bash
  3. Digite CTRL + x para iniciar o Shell;
  4. Ao aparecer a tela do shell, digite mount -o remount,rw /
  5. Agora é só digitar passwd e logo será solicitada a nova senha e a confirmação da mesma;
  6. Reinicie o sistema e entra com o usuário regular e no terminal entra com o novo password de root.
Feito!

domingo, 4 de agosto de 2019

Configurando Proxy Reverso na aplicação web com Tomcat

O que é Proxy Reverse?

O Proxy Reverse pode ser entendido também como Cluster Web, ou seja, uma máquina principal recebe a solicitação e essa máquina tem por objetivo solicitar o serviço de outra máquina.

O presente post é explicado os procedimentos de configuração do Proxy Reverso no Debian / Ubuntu

Instalação do Apache
# apt install apache2

Habilitar os módulos no Apache
# a2enmod proxy
# a2enmod proxy_http
# a2enmod proxy_balancer
# a2enmod proxy_ajp


Configuração Proxy no diretório /etc/apache2/mods-enabled/proxy.conf
OBS: Caso for ambiente de produção, substitua localhost pelo respectivo domínio registrado.
< IfModule mod_proxy.c >
ProxyRequests Off
< Proxy * >
AddDefaultCharset off
Order deny,allow
Allow from all
< /Proxy >
ProxyVia On
ProxyPass /aplicacao http://localhost:8080/aplicacao
ProxyPassReverse /aplicacao http://localhost:8080/aplicacao
< /IfModule >
Faça alteração das informações de ProxyPass e ProxyPassReverse conforme sua aplicação que deseja criar o proxy reverso.
Após reiniciar o Apache, as alterações estão ativadas e pode acessar http://localhost/aplicacao que será redirecionado para aplicação na porta 8080 do Tomcat.

# systemctl restart apache2

Feito!

quinta-feira, 1 de agosto de 2019

Instalando o Android File Transfer no Debian e Ubuntu

O que é Android File Transfer?

É o clone do aplicativo de transferência de arquivos do Android da Google para macOS. O software foi desenvolvido com o Qt e possui interface simples que facilita a transferência de arquivos e diretórios entre o smartphone e o computador.

O Android File Transfer para Linux foi projetado como uma alternativa para outros métodos de montagem de dispositivos MTP no Linux.

Recursos
Android File Transfer possui os seguintes recursos:
  • Uma interface de usuário direta;
  • Suporte de arrastar e soltar (Linux para celular);
  • Download em lote (celular para Linux);
  • Diálogos de transferência de progresso;
  • FUSE wrapper;
  • Sem limites de tamanho de arquivo;
  • Ferramenta CLI opcional.
Instalação do Android File Transfer no Linux

Ubuntu 8.04 LTS
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 0BB4A1B2FA1A38EB
sudo add-apt-repository "deb http://ppa.launchpad.net/samoilov-lex/aftl-stable/ubuntu artful main" sudo apt update sudo apt install android-file-transfer


Debian/Ubuntu
sudo add-apt-repository ppa:samoilov-lex/aftl-stable sudo apt update sudo apt install android-file-transfer

Feito!

domingo, 28 de julho de 2019

Conhecendo o Laragon

O que é Laragon ?

Laragon é um ambiente de desenvolvimento web que faz o que outras ferramentas como o XAMPP e o WAMPP fazem, só que melhor.

Para quem usa Windows e XAMPP como ambiente de desenvolvimento web, precisa experimentar o Laragon, irá surpreender.



O Laragon vem com os seguintes recursos integrados:
  • Cmder (Console Windows)
  • Git
  • Node.js
  • NPM
  • Putty
  • PHP 7.x/5.6
  • Extensões PHP
  • xDebug
  • Composer
  • Apache
  • MySQL/MariaDB
  • phpMyAdmin
  • Gestão automática de Virtualhosts
Vantagens do Laragon
  • Possui versão portátil que você só precisa por no pendrive e pronto, tem o ambiente de desenvolvimento web completo
  • Pode programar diversas linguagens utilizando o ambiente dele como PHP, Ruby, Python e Java
  • Pode trabalhar com diversos SGBDs relacional e não relacional já pré-configurados como MySQL, PostgreSQL, MongoDB
  • Facilidade em configurar servidor de e-mail local
  • Integração com os principais frameworks PHP

O Laragon é o ambiente de desenvolvimento web mais completo e simplista, recomendado a substituir para quem utiliza o XAMPP no Windows.

Download do Laragon

Feito!

sexta-feira, 19 de julho de 2019

Instalando o FortiClient VPN no Ubuntu e Fedora

O presente post é de apresentar os procedimentos de instalação do FortiClient VPN nas distros Ubuntu e Fedora e por fim como estabelecer conexão ao servidor VPN.

Instalação do FortiClient no Linux

Ubuntu 18.04.1
Adicionar a chave GPG
wget -O - https://repo.fortinet.com/repo/ubuntu/DEB-GPG-KEY | sudo apt-key add -
Adicionar no /etc/apt/sources.list
deb [arch=amd64] https://repo.fortinet.com/repo/ubuntu/ bionic multiverse
Atualização do repositório
sudo apt-get update
Instalação do Forticlient via APT
sudo apt install forticlient

Fedora
Adicionar no repositório
sudo dnf config-manager --add-repo https://repo.fortinet.com/repo/centos/7/os/x86_64/fortinet.repo
Instalação do Forticlient via YUM
sudo yum install forticlient

Conectar no servidor VPN com o cliente VPN FortiClient

Apenas adapte o host e usuário cadastrado no servidor VPN
forticlientsslvpn_cli --server servidor.vpn.com --vpnuser seu.usuario

Referências:

https://www.forticlient.com/repoinfo

Feito!

domingo, 14 de julho de 2019

Instalando Citrix no Debian

O que é Citrix?

A Citrix é uma empresa de software focada em soluções de virtualização e nuvem. Seus produtos mais conhecidos são o XenServer, o XenApp e o XenDesktop, que permitem virtualizar servidores, aplicativos e ambientes de trabalho, respectivamente.

Uma possibilidade interessante é, de um lado, a empresa instalar em um servidor o XenApp ou o XenDesktop, para disponibilizar aplicativos, e de outro lado, o funcionário instalar em seu computador o Citrix Receiver, que é o software cliente dessas soluções. Com isso, o funcionário pode executar em seu computador um aplicativo da empresa como se estivesse dentro da empresa, ainda que na verdade esteja, por exemplo, em casa. Isso porque, embora a tela do aplicativo apareça em seu computador, o processamento ocorre na verdade no servidor.

OBS: O procedimento é mostrado na distribuição Linux Debian, o que inclui o Ubuntu e demais distros derivados do Debian também.

Download do Citrix Receiver no Linux

Acesse a Citrix Receiver , expanda a seção Receiver for Linux e clique no link para a versão mais recente do Citrix Receiver.

Na página seguinte, expanda a seção Debian Packages e depois a seção Debian Full Package (Self-Service Support). Clique no botão Download File abaixo de Receiver for Linux (x86_64). Leia a licença e clique em Yes, I accept (sim, eu aceito) para iniciar o download.

Você vai baixar um pacote DEB, que resumidamente é um arquivo compactado contendo todos os arquivos do programa a ser instalado, assim como informações sobre o programa e rotinas para instalá-lo, atualizá-lo e removê-lo.

Instalação do Citrix Receiver no Linux (Debian e derivados)
Acesse até o diretório que salvou o arquivo .deb que fez o download e faça a instalação conforme o procedimento seguinte:
# dpkg -i icaclient_13.10.0.20_amd64.deb

Iniciando o Citrix Receiver para Linux

Pesquise no menu do ambiente gráfico que estiver usando, digitando "citrix" que irá encontrar Citrix Receiver e clique nele.

Feito!

domingo, 7 de julho de 2019

Lançamento do Debian 10 Buster

No dia 06/07/2019 foi lançado oficialmente a versão 10 (Buster) do Debian e a versão testing (Bullseye). O presente post é de apresentar as principais mudanças que houveram no Debian 10 (Buster).

Gnome Desktop 3.30

A área de trabalho GNOME que estava em 1.3.22 no Debian Stretch é atualizada para 1.3.30 no Buster. Alguns dos novos pacotes incluídos nesta versão desktop GNOME são gnome-todo, em vez de rastreador-gui, dependência gstreamer1.0-packagekit para que haja a instalação codec automático para a reprodução de filmes etc. O grande movimento tem sido todos os pacotes que estão sendo movidas de libgtk2 + para libgtk3 +.

Kernel 4.19.0-4

O Debian usa versões LTS Kernel, então você pode esperar um suporte de hardware muito melhor e um longo ciclo de manutenção e suporte de 5 anos do Debian. Do kernel 4.9.0.3 chegamos a 4.19.0-4.

OpenJDK 11.0

Por muito tempo o Debian ficou preso no OpenJDK 8.0. Agora no Debian Buster houve mudança para o OpenJDK 11.0 e temos uma equipe que cuidará de novas versões.

AppArmor habilidado por default

No Debian Buster, o AppArmor é habilitado por default. Embora isso seja uma coisa boa, os administradores de sistema devem ter o cuidado de ativar os comandos corretos. Este é apenas o primeiro passo e precisaria corrigir provavelmente muitos scripts para ser tão útil quanto previsto para o usuário.

Nodejs 10.15.2

Durante muito tempo o Debian tinha o Nodejs 4.8 no repositório. Neste ciclo, o Debian mudou para o Nodejs 10.15.2. Na verdade, o Debian Buster possui muitas bibliotecas de javascript, como o yarnpkg (uma alternativa npm) e muitas outras.

É claro, você pode instalar os Nodejs mais recentes no Debian a partir do repositório do projeto, mas é bom ver uma versão mais nova no repositório do Debian.

NFtables substitui o Iptables

O Debian Buster fornece nftables como uma substituição completa do iptables, o que significa uma sintaxe melhor e mais fácil, melhor suporte para firewalls ipv4-v6 de pilha dupla e muito mais.

Python 2 substituído pelo Python 3

O Python 2 será suspenso em 1º de janeiro de 2020 por python.org. Então, uma mudança para a versão 3 deve ocorrer já no lançamento do Buster ou em um release futuro, mas isso é iminente. Assim, os desenvolvedores de Python são encorajados a mover sua base de código para ser compatível com o Python 3. Até o momento, tanto o python2 quanto o python3 são suportados no Debian Buster.

Mailman3

O Mailman3 está finalmente disponível no Debian. O Mailman foi subdividido em componentes. Para instalar a pilha inteira, instale o mailman3-full para obter todos os componentes.

Qualquer bases de dados existentes do PostgreSQL precisarão ser reindexadas

Devido às atualizações nos dados de código de idiomas da glibc, a maneira como as informações são classificadas nos índices de texto será alterada. Portanto, seria benéfico reindexar para que não ocorra corrupção de dados no futuro próximo.

Bash 5.0 por padrão

Você provavelmente já conhece os novos recursos do Bash 5.0 . Assim, esta versão já está no Debian.

Implementação Debian /usr/merge

Um excelente primer freedesktop sobre o que o /usr/merge traz já é compartilhado. Algumas coisas devem ser observadas, porém. Enquanto o Debian gostaria de fazer toda a transição, existe a possibilidade de que, devido a circunstâncias imprevistas, alguns binários podem não estar em posição de fazer a mudança. Um ponto a notar, no entanto, /var e /etc/ serão deixados em paz, para que as pessoas que estão usando contêineres ou nuvem não precisem se preocupar muito.

Suporte ao UEFI Secure Boot

O Debian agora tem suporte Secure Boot. O que significa que as máquinas que têm o bit de Secure Boot ativado na máquina devem ser capazes de instalar facilmente o Debian em tais máquinas. Não há necessidade de desativar ou contornar o Secure Boot.

Instaladorlive do Calameres para imagens do Debian-Live

Para o Debian Buster, Debian Live, o Debian apresenta o Instalador do Calameres em vez do instalador do debian-old. Embora o instalador do Debian tenha muitos recursos além do Calameres, para os novatos, o Calameres fornece uma nova alternativa para instalar do que o debian-installer.


Como pode ser visto, é muito fácil instalar o Debian com o Calamares. São apenas 5 estágios e você pode ter o Debian instalado no seu final.

Download de imagem Debian live podem ser obtido para arquiteturas 32 bits e 64 bits no site Debian Live

Debian testing

Agora o Codename do Debian testing é Bullseye.

Em termos de atualizações de software, o novo Linux Debian 10 (Buster) traz o:
  • Apache 2.4.38
  • BIND DNS Server 9.11
  • Chromium 73.0
  • Emacs 26.1
  • Firefox 60.7 (no pacote firefox-esr)
  • GIMP 2.10.8
  • GNU Compiler Collection 7.4 e 8.3
  • GnuPG 2.2
  • Golang 1.11
  • Inkscape 0.92.4
  • LibreOffice 6.1
  • Linux 4.19 series
  • MariaDB 10.3
  • OpenJDK 11
  • Perl 5.28
  • PHP 7.3
  • PostgreSQL 11
  • Python 3 3.7.2
  • Ruby 2.5.1
  • Rustc 1.34
  • Samba 4.9
  • systemd 241
  • Thunderbird 60.7.2
  • Vim 8.1
Referências
https://itsfoss.com/debian-10-buster/
Feito!

quarta-feira, 29 de maio de 2019

Configurando Vhost do Nginx no Debian

O que é Vhost?

Vhost é a capacidade de ter diversos sites ou sistemas no mesmo servidor de forma isolada. Assim é possível ter vários domínios ou subdomínios no mesmo servidor.

O presente howto tem como objetivo explicar os procedimentos de configurar Vhost do Nginx no Debian, mas também funciona em distros derivadas do Debian, como o Ubuntu por exemplo.

Configuração do Vhost
Primeiramente é preciso instalar o Nginx no Debian/Ubuntu, o qual pode ser instalado via APT.

# apt update
# apt install nginx php7.2 php7.2-fpm php7.2-mysql php7.2-gd php7.2-mysql mysql-server


Então segue os procedimentos para configuração do Vhost no Nginx abaixo:

O Nginx tem um arquivo de configuração de Vhost de exemplo, então pode fazer uma cópia deste arquivo para cada Vhost que for criar, depois alterar o server_name, root e Directory para o Vhost correspondente.

# cp /etc/nginx/sites-available/default /etc/nginx/sites-available/default.bkp

O nome app.local coloca o nome que quiser, geralmente é comum colocar o nome do domínio/subdomínio do Vhost correspondente.
# vim /etc/nginx/sites-available/app.local
Altere o arquivo para ficar como este, apenas altere o diretório de localização do seu site ou sistema.

server {
  # Porta WEB
 listen 80 default_server;
 listen [::]:80 default_server;
 
 # Nome do servidor
 server_name app.local;     

 # Diretorio de Log
 access_log /var/log/nginx/access.log;
 error_log /var/log/nginx/error.log;
 rewrite_log on;

 # Diretorio dos arquivos web
 root /var/www/html/app/public;
 
 # Extensões de arquivos que serão lidos
 index index.php index.html;

 client_max_body_size 128M;

 # URL amigáveis
 location / {
  try_files $uri $uri/ /index.php?$query_string;
 }

 # Configurações PHP FPM.
    location ~* \.php$ {
         fastcgi_pass unix:/run/php/php7.2-fpm.sock;
         fastcgi_index index.php;
         fastcgi_split_path_info ^(.+\.php)(.*)$;
         include /etc/nginx/fastcgi_params;
  fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }

 # Bloqueia arquivo com .ht (Nginx não utiliza o .htaccess como o Apache)
 location ~ /\.ht {
  deny all;
 }

 # Configura cache das extensões abaixo para expirar em 365 dias
 location ~* \.(?:ico|css|js|jpe?g|JPG|png|svg|woff)$ {
    expires 365d;
 }

}

Nota: A configuração do Vhost acima é de uma aplicação web, que funciona na rede interna, para rede externa, só alterar o ServerName para o nome de domínio válido no registro.br.

Explicação das configurações essenciais para o funcionamento do Vhost no Nginx

1. Na linha listen devemos colocar a porta que o Nginx escutará que é a porta padrão 80. A opção default_server deverá ser usada em somente uma configuração, pois essa será a principal do servidor.
2. Na linha server_name deverá ser inserido o nome do seu domínio.
3. Na directiva root deverá ser o caminho da sua aplicação, dos seus arquivos em PHP por exemplo.
4. No bloco de configurações do PHP é usado o PHP 7.2, caso esteja usando outra versão do PHP deve ser alterado a opção fastcgi_pass unix:/run/php/php7.2-fpm.sock; alterando o PHP7.2 para a versão instalada no seu servidor.

Testes de configuração
# nginx –t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful

Se o retorno foi ok conforme acima, então podemos habilitar o Vhost

Habilitar o Vhost app.conf
# ln -s /etc/nginx/sites-available/app.local /etc/nginx/sites-enabled/app.local

Reinciar o Nginx
# service nginx restart

Como neste caso o Vhost é na rede interna, então para simular o domínio é necessário adicionar no arquivo /etc/hosts o IP do servidor seguido do nome ServerName definido no arquivo Vhost.
Para que uma máquina com Windows possa acessar a aplicação com o Vhost, o arquivo hosts é C:\Windows\System32\drivers\etc\hosts
Abrir com Bloco de Notas como Administrador o arquivo hosts no caminho mencionado.

IPSERVIDOR app.local

Abre o browser e acesse http://app.local

Para criar outro Vhost, copie o arquivo do Vhost criado anteriormente e troque o server_name, root e Directory para o Vhost corresponde, habilita o novo Vhost, reiniciar o Nginx e adicione no arquivo hosts.

Feito!