anúncios

domingo, 13 de maio de 2018

Upgrade PHP 5.6/7.0 para 7.2 no Debian

De acordo com a postagem no Twitter sobre a recomendação de atualizar a versão do PHP para versão atual. Até a data de publicação deste post, a versão atual do PHP é 7.2.

"#PHP 5.6 is now in security fix only mode, which runs until the end of 2018. Plan your upgrades to PHP 7!"
https://twitter.com/official_php

Então, chega de conversa e vamos seguir os procedimentos seguintes para atualizar a versão do PHP no Debian.

# apt-get install apt-transport-https lsb-release ca-certificates
# wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
# sh -c 'echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list'
# apt-get update
# apt-get install php7.2-cli php7.2-common php7.2-curl php7.2-gd php7.2-json php7.2-mbstring php7.2-mysql php7.2-xml php7.2-fpm libapache2-mod-php7.2
Teste a versão do PHP com o comando seguinte: php --version
Se o retorno for 7.2, então está OK, pode desabilitar o módulo da versão anterior do PHP.
# a2dismod php5.6 ou
# a2dismod php7.0
# a2enmod php7.2
# service apache2 restart
# apt-get purge php5.6* ou
# apt-get purge php7.0*

Referência
https://tecadmin.net/install-php-debian-9-stretch/
Feito!

sábado, 10 de março de 2018

Configurando um servidor DNS no Debian

O que é DNS e pra que serve?

O Domain Name System (DNS) é um sistema de gerenciamento de nomes hierárquico e distribuído para computadores, serviços ou qualquer recurso conectado à Internet ou numa rede privada.

O DNS apresenta uma arquitetura cliente/servidor, podendo envolver vários servidores DNS na resposta a uma consulta. A função do servidor DNS é resolver nomes para os endereços IP e de endereços IP para nomes respectivos, e permitindo a localização de hosts no determinado domínio.

O software mais utilizado para configurar servidor DNS no GNU/Linux e FreeBSD é o BIND. Este software geralmente se encontra localizado no servidor DNS primário. O servidor DNS secundário é uma espécie de cópia de segurança do servidor DNS primário.

Depois de conhecer o DNS e para que serve, pode-se seguir o howto seguinte para configurar o servidor DNS na sua rede, apenas adapte o endereço IP e o nome de domínio.

Observação 1: Para uso de servidor DNS na rede interna é comum usar o sufixo .int para representar interno e não confundir com um domínio externo. Já se for configurar o servidor DNS na rede externa disponível na Internet, usa normal, só antes deve registrar o domínio no https://registro.br

Observação 2: O presente howto foi configurado e testado na distribuição Linux Debian 9, mas pode ser configurado na distro Ubuntu também.

Ok. Vamos nessa então? Abre o terminal, logue como root e segue os procedimentos seguintes.

# apt-get update
# apt-get install bind9 dnsutils whois
Observação: Este howto será utilizado o editor de texto Vim, mas o leitor pode usar outro editor que achar melhor.
Para novatos no editor Vim, para salvar e sair é ESC + :x

Configurando endereço IP fixo
# vim /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug enp0s3
iface enp0s3 inet static
address 192.168.1.6
netmask 255.255.255.0
gateway 192.168.1.1
# This is an autoconfigured IPv6 interface
iface enp0s3 inet6 auto
Alterar os arquivos hosts e hostname respectivamente
# vim /etc/hosts
Adicione a linha
127.0.0.1       localhost
127.0.1.1       perolanegra
192.168.1.6     perolanegra.saitam.int perolanegra
192.168.1.6     saitam.int
192.168.1.6     app.saitam.int
192.168.1.6     adm.saitam.int
192.168.1.6     carreiras.saitam.int

# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

# vim /etc/hostname
perolanegra.saitam.int
Acessar até o diretório onde estão os arquivos do Bind
# cd /etc/bind
Criar as zona direta e reversa no arquivo named.conf.local
# vim named.conf.local
//Zona direta
zone "saitam.int" { //nome de domínio
  type master;
  file "/etc/bind/db.saitam"; //nome do arquivo que contém os endereços DNS
};

//Zona reversa
zone "1.168.192.in-addr.arpa" { //último quarteto do IP
  type master;
  file "/etc/bind/db.192";
};
Verificar se o arquivo de configuração contém erros
# named-checkconf
Criar os arquivos da zona direta e reversa
Zona direta
# vim db.saitam
;
; BIND data file for local loopback interface
;
$TTL    604800
@       IN      SOA     perolanegra.saitam.int root.saitam.int (
                         2018031000     ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL
;
@               IN      NS      perolanegra.
@               IN      A       192.168.1.6
@               IN      AAAA    ::1
router          IN      A       192.168.1.1
gateway         CNAME   router
app             IN      A       192.168.1.6
adm             IN      A       192.168.1.6
carreiras       IN      A       192.168.1.6
www             CNAME   saitam.int

Zona reversa
# vim db.192
;
; BIND reverse data file for local loopback interface
;
$TTL    604800
@       IN      SOA     perolanegra.saitam.int root.saitam.int. (
                         2018031000     ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL
;
@       IN      NS      perolanegra.saitam.int.
6       IN      PTR     perolanegra.saitam.int.
6       IN      PTR     saitam.int.
1       IN      PTR     router.saitam.int.
6       IN      PTR     app.saitam.int.
6       IN      PTR     adm.saitam.int.
6       IN      PTR     carreiras.saitam.int.

Verificar se o arquivo de zona direta e reversa contém erros
# named-checkzone saitam.int /etc/bind/db.saitam.int
zone saitam.int/IN: loaded serial 2018031000
OK
# named-checkzone 1.168.192.in-addr /etc/bind/db.192
zone 1.168.192.in-addr/IN: loaded serial 2018031000
OK

Por fim, fazer o forward para um DNS do Google ou outro de sua preferência. Esse forward no servidor DNS é necessário para poder fazer consultas na internet, mas no cliente apenas adiciona o IP do servidor DNS que já resolverá os nomes de forma transparente.

# vim /etc/bind/named.conf.options
Adicionar na linha forwarders, deixando como segue
 forwarders {
  8.8.8.8;
  8.8.4.4;
 };
Reiniciar o serviço Bind9
# /etc/init.d/bind9 restart
[ ok ] Restarting bind9 (via systemctl): bind9.service.

Para podermos usar o domínio configurado deve adicionar no arquivo /etc/resolv.conf Nas máquinas clientes deve trocar o IP do servidor DNS que utiliza pelo o IP da máquina que configurou o servidor DNS para poder resolver nomes usando o servidor DNS configurado.

# vim /etc/resolv.conf
domain saitam.int
search saitam.int
nameserver 192.168.1.6
Agora vamos verificar a resolução de nomes
# nslookup saitam.int
Server: 192.168.1.6
Address: 192.168.1.6#53

Name: saitam.int
Address: 192.168.1.6
# nslookup router
Server:         192.168.1.6
Address:        192.168.1.6#53

Name:   router.saitam.int
Address: 192.168.1.1
# nslookup 192.168.1.6
Server:         192.168.1.6
Address:        192.168.1.6#53

6.1.168.192.in-addr.arpa        name = carreiras.saitam.int.
6.1.168.192.in-addr.arpa        name = saitam.int.
6.1.168.192.in-addr.arpa        name = app.saitam.int.
6.1.168.192.in-addr.arpa        name = adm.saitam.int.
6.1.168.192.in-addr.arpa        name = perolanegra.saitam.int.
Referências
[1] https://pt.wikipedia.org/wiki/Domain_Name_System
[2] http://tldp.org/HOWTO/DNS-HOWTO-5.html
[3] https://www.isc.org/downloads/bind/

Feito!

sábado, 10 de fevereiro de 2018

Instalando o módulo SSH2 no PHP

O objetivo deste post, é instalar e habilitar o módulo SSH2 no PHP. Com isso pode implementar um script PHP que conecta em alguma máquina ou servidor com Linux via SSH e executar comandos.

No final do post, tem um exemplo de script PHP que mostra como fazer.

No Windows com Xampp
Acesse http://windows.php.net/downloads/pecl/releases/ssh2/1.1.2/
Faça o download do arquivo php_ssh2-1.1.2-7.1-ts-vc14-x86.zip ou php_ssh2-1.1.2-7.1-ts-vc14-x64.zip, extrair e copiar os arquivos php_ssh2.dll e php_ssh2.pdb para c:/xampp/php/ext
Adicionar extension=php_ssh2 no php.ini
Reiniciar o Apache, no Xampp abre o Shell, digite php -m, verifique se tem o módulo ssh2

No Linux (Debian/Ubuntu)
PHP 5: # apt-get install php5-ssh2
PHP 7.0: # apt-get install php7.0-ssh2

Exemplo
Script PHP que conecta no servidor via SSH e cria um diretório abc na máquina Linux remota.
< ?php
$IP = '';
$POST = ;
$USER = '';
$PASS = '';
$connection = ssh2_connect($IP, $PORT);

if (ssh2_auth_password($connection, $USER, $PASS)) {
echo "Autenticado!\n";
$shell = ssh2_exec($connection, "mkdir abc");
}
else {
  die('Autenticação falhou!');
}
Feito!

quarta-feira, 27 de dezembro de 2017

Instalando e Configurando o phpPgAdmin no Debian

O presente post, tem como objetivo explicar a instalação e configuração do phpPgAdmin no GNU/Linux Debian 7.
phpPgAdmin é uma ferramenta web de gerenciamento do SGBD PostgreSQL.

No Debian 8 precisa adicionar o pacote do PHP 7 no arquivo /etc/apt/sources.list
# echo -e "deb http://packages.dotdeb.org jessie all\n deb-src http://packages.dotdeb.org jessie all" >> /etc/apt/sources.list

Download da chave do pacote
# wget https://www.dotdeb.org/dotdeb.gpg
Adiciona a chave
# apt-key add dotdeb.gpg
Atualização do repositório
# apt-get update
Instalação do Apache2, módulos do PHP 7 e postgresql
# apt-get install apache2 php7.0 libapache2-mod-php7.0 php7.0-fpm php7.0-pgsql php7.0-gd php7.0-mcrypt php7.0-mbstring php7.0-gettext php7.0-gd php7.0-json php-gettext php7.0-readline postgresql-9.4 postgresql-client-9.4
Instalação do phppgadmin
# apt-get install phppgadmin

Ao acessar no navegador http://IPSERVIDOR/phppgadmin ocorreu erro HTTP ERROR 500, verifiquei o log de erros /var/log/apache/error.log sobre o erro.

Solução:
Editar o arquivo /etc/phppgadmin/apache2.conf na linha 9
trocar por
Reinicia o Apache: # /etc/init.d/apache2 restart
Após fazer isso, deve acessar normal no navegador http://IPSERVIDOR/phppgadmin

Algumas recomendações caso o acesso do phpPgAdmin seja externo
  • Jamais o usuário root do PostgreSQL deve ter acesso direto pelo phpPgAdmin;
  • Criar um usuário para o sistema com as permissões: select, insert, update, delete já são suficiente;
  • Criar um usuário para o migrations com as permissões: create, alter, drop, insert, update, delete, select, lock tables, trigger, view, event.
O usuário migrations é o responsável por criar a estrutura das tabelas (migrate), popular (seed) e fazer o dump por meio do script shell agendado no crontab.

Feito!

quinta-feira, 21 de dezembro de 2017

Instalando e Configurando o PHPMyAdmin no Debian

O presente post, tem como objetivo explicar a instalação e configuração do PHPMyAdmin no GNU/Linux Debian 7.
PHPMyAdmin é uma ferramenta web de gerenciamento do SGBD MySQL/MariaDB.

No Debian 8 precisa adicionar o pacote do PHP 7 no arquivo /etc/apt/sources.list
# echo -e "deb http://packages.dotdeb.org jessie all\n deb-src http://packages.dotdeb.org jessie all" >> /etc/apt/sources.list

Download da chave do pacote
# wget https://www.dotdeb.org/dotdeb.gpg
Adiciona a chave
# apt-key add dotdeb.gpg
Atualização do repositório
# apt-get update
Instalação do Apache2, módulos do PHP 7 e mysql-server
# apt-get install apache2 php7.0 libapache2-mod-php7.0 php7.0-fpm php7.0-mysql php7.0-gd php7.0-mysql php7.0-mcrypt php7.0-mbstring php7.0-gettext php7.0-gd php7.0-json php-gettext php7.0-readline mysql-server
Instalação do phpmyadmin
# apt-get install phpmyadmin

Ao acessar no navegador http://IPSERVIDOR/phpmyadmin ocorreu erro HTTP ERROR 500, verifiquei o log de erros /var/log/apache/error.log sobre o erro.

Solução:
Editar o arquivo /etc/phpmyadmin/apache2.conf na linha 9
trocar por
Reinicia o Apache: # /etc/init.d/apache2 restart
Após fazer isso, deve acessar normal no navegador http://IPSERVIDOR/phpmyadmin

Algumas recomendações caso o acesso do PHPMyAdmin seja externo
  • Jamais o usuário root do MySQL/MariaDB deve ter acesso direto pelo PHPMyAdmin;
  • Criar um usuário para o sistema com as permissões: select, insert, update, delete já são suficiente;
  • Criar um usuário para o migrations com as permissões: create, alter, drop, insert, update, delete, select, lock tables, trigger, view, event.
O usuário migrations é o responsável por criar a estrutura das tabelas (migrate), popular (seed) e fazer o dump por meio do script shell agendado no crontab.

Confira no post a criação e as permissões de usuário no SGBD MySQL/MariaDB

Feito!

sábado, 4 de novembro de 2017

Criando e atribuindo permissões para o usuário no SGBD MySQL/MariaBD

O presente post, tem como objetivo esclarecer como criar usuário e atribuir permissões para o usuário no SGBD MySQL/MariaDB.

Sobre o MySQL e MariaDB

O MySQL é um Sistema de Gerenciamento de Banco de Dados (SGBD) open source que ajuda os usuários a armazenar, organizar, e posteriormente, recuperar dados. Ele possui uma variedade de opções para conceder a usuários específicos permissões diferenciadas dentro de tabelas e bases de dados. O MariaDB é o fork do MySQL. Na maioria dos aspectos o MariaDB vai funcionar exatamente como o MySQL: todos os comandos, interfaces, bibliotecas e APIs que existem no MySQL também existem no MariaDB. Não há nenhuma necessidade de converter um bancos de dados para migrar para o MariaDB. MariaDB é um verdadeiro substituto para o MySQL.

Primeiramente precisa conectar no servidor SGBD MySQL/MariaDB: mysql -h IPSERVIDORBD -u root -p

Para criar um usuário no SGBD MySQL/MariaDB, após logar com o root é o seguinte comando:
CREATE USER `nome-usuario`@`IPServerDB` IDENTIFIED BY `password`;

Para dar uma permissão a um usuário específico, você pode utilizar esta estrutura:
GRANT [tipo de permissão] ON [nome da base de dados].[nome da tabela] TO `[nome do usuário]`@`IPServerDB`;

Se você quer dar a ele acesso a qualquer base de dados ou a qualquer tabela, certifique-se de colocar um asterisco (*) no lugar do nome da base de dados ou do nome da tabela. Cada vez que você atualizar ou mudar uma permissão certifique-se de utilizar o comando Flush Privileges.

Se você precisar revogar uma permissão, a estrutura é quase idêntica a concedê-la:
REVOKE [tipo de permissão] ON [nome da base de dados].[nome da tabela] FROM `[nome do usuário]`@`IP`;

Para adicionar permissão de leitura, inserção, atualização, exclusão, criação de tabelas/bases, remoção e alteração de tabelas/colunas para o usuário:
GRANT select, insert, update, delete, create, drop, alter ON .* TO `nomeUsuarioBD`@`%IPMaquinaAcessoServerBD` WITH GRANT OPTION;

Para adicionar permissão geral a um usuário:
GRANT ALL PRIVILEGES ON *.* TO @IPServerBD IDENTIFIED BY `password` WITH GRANT OPTION;

Para visualizar as permissões que acabamos de aplicar usamos o comando:
SHOW GRANTS FOR `usuarioBD`@`%IPMaquinaAcessoServerBD`;

Se você precisar retirar todos os privilégios de um usuário do SGBD MySQL/MariaDB, pode utilizar esta estrutura:
USAGE [tipo de permissão] ON [nome da base de dados].[nome da tabela] FROM `[nome do usuário]`@`IP`;
A permissão USAGE significa sem privilégios.

Os comandos necessários para criar usuário, conceder/revogar permissões a um banco de dados e tabelas foram apresentados neste post. Espero que possa ser útil para quem desconhecia.

Feito!

sexta-feira, 27 de outubro de 2017

Aumentar tamanho de upload ao importar banco pelo phpmyadmin

Por default, o limite máximo permitido é de 2MB para upload no PHP. Se utiliza a ferramenta phpmyadmin e caso o dump do banco for maior do que 2MB, não será possível fazer a importação pelo phpmyadmin.

Mas, calma que a configuração é simples, basta seguir: Para permitir importar BD acima de 2MB pelo phpmyadmin

Edite o php.ini conforme abaixo como exemplo
upload_max_filesize = 100MB
post_max_size = 200MB
memory_limit = 512

Reinicie o Apache, acesse o phpmyadmin e ao importar o BD notará que o tamanho permitido para upload será de 100MB conforme a configuração.

Particularmente, prefiro usar o software DBeaver (cliente BD que suporta os SGBDs: MySQL/MariaDB, PostgreSQL, MS SQL Server, Oracle, Firebird e outros. Além de ser multiplataforma e opensource!

Feito!