Pesquisa personalizada
IP

quarta-feira, 14 de outubro de 2015

Horário de Verão 2015-2016 - Debian/CentOS

Uma postagem rápida para atualizar os servidores para entrar e sair do horário de Verão de 2015/2016

root@srv:~# ls -l /usr/share/zoneinfo/Brazil/
-rw-r--r-- 1 root root  626 Jun 15  2014 Acre // -5  horas em relação a Greenwich
-rw-r--r-- 1 root root  714 Jun 15  2014 DeNoronha // -2  horas em relação a Greenwich
-rw-r--r-- 1 root root 2001 Jun 15  2014 East // -3  horas em relação a Greenwich
-rw-r--r-- 1 root root  602 Jun 15  2014 West // -4  horas em relação a Greenwich


Cada arquivo representa uma região do Brasil. Estou 3 horas atrasado em relação ao Meridiano de Greenwich, representado pelo arquivo de zona East, este arquivo possui as linhas necessárias para a entrada e saída do horário de verão automaticamente.

Saiba mais: http://www.brasilescola.com/brasil/fuso-horario-brasileiro.htm

#Debian:
Atualizando e instalando:

apt-get update
apt-get install tzdata tzdata-java
zdump -v Brazil/East |grep 201[56]
date
ou
apt-get update && apt-get install tzdata tzdata-java && zdump -v Brazil/East |grep 201[5] && date

#CentOS

Atualizando e instalando:

yum  install tzdata tzdata-java
zdump -v Brazil/East |grep 201[35]
date
ou
yum  install tzdata tzdata-java && zdump -v Brazil/East |grep 201[35] && date

terça-feira, 6 de outubro de 2015

Montando Pendrive no RaspBerry PI

Passo 1: Identificar a UUID do PenDrive
Identificar o UUID do seu pendrive, assim caso o sistema sofra alguma alteração o pendrive vai ser sempre reconhecido e contado no seu devido lugar.

# ls -l /dev/disk/by-uuid/

lrwxrwxrwx 1 root root  9 Set 25 20:03 12ED-0B9A -> ../../sda
lrwxrwxrwx 1 root root 15 Jun  1 20:31 13d368bf-6dbf-4751-8ba1-88bed06bef77 -> ../../mmcblk0p2
lrwxrwxrwx 1 root root 15 Jun  1 20:31 15CD-3B79 -> ../../mmcblk0p1
lrwxrwxrwx 1 root root 10 Set 25 20:05 330C-8886 -> ../../sda1

A linha grafada em laranja  exemplifica a uuid do pendrive, note que ele foi reconhecido como sda1, e seu uuid é 330C-8886, mas  nada impediria de se usar a notação /dev/sda1, iria funcionar normalmente, o problema esta quando o pendrive for substituído, o uuid dele ira mudar, mas ele ainda poderá ser reconhecido com sda1 pelo sistema.

Usar o UUID garante que estamos utilizando o pendrive correto.

Nota: Para cada formatação realizada no pendrive um novo uuid será gerado. 

Passo 2: Preparando o ponto de montagem
# mkdir /pendrive
# chown -R pi:pi /pendrive

Passo 3: Montando o pendrive com permissões de escrita para o usuário pi

As duas formas abaixo são válidas para montar o pendrive, note que uma é usada a notação com /dev/sda1 e na outra é utilizado o uuid do dispositivo, claro que na linha de comando o mais fácil é utilizar o /dev/sdxx

mount /dev/sda1 /media/usb -o uid=pi,gid=pi

mount -t vfat UUID=330C-8886 /pendrive -o uid=pi,gid=pi 

Passo 4: Automatizando

Acrescente a linha abaixo no arquivo /etc/fstab

UUID=330C-8886   /pendrive  vfat   auto,users,rw,uid=pi,gid=pi  0  0

Não esqueça de altera  a coluna UUID=330C-8886 com uuid listada no seu sistema.


Referências:
http://www.raspberrypi-spy.co.uk/2014/05/how-to-mount-a-usb-flash-disk-on-the-raspberry-pi/


terça-feira, 29 de setembro de 2015

RaspBerry PI2 como WebServer - LEMP



Todos já ouvimos falar sobre a combinação LAMP[ Linux, Apache, mysql e PHP], eu mesmo utilizo o famoso "combo" em diversos servidores de produção sem maiores problemas, claro, conto com máquinas bem dimensionadas para tarefa, mas em hardware mais modestos como o caso do pequeno, mas valente RaspBerry, precisamos otimizar ao máximo os recursos disponíveis.

Com o objetivo de criar um servidor Web com meu RaspBarry, para "estudos acadêmicos", então fui perguntar para meu amigo[google] o que ele recomendaria no lugar do combo LAMP, para minha surpresa a resposta foi: LEMP [Linux, NGINX, mysql e PHP]. O "E" da sigla vem da pronuncia de nginx, que se pronuncia `Engine x`. Os mais céticos provavelmente reclame do Mysql, bom no lugar poderemos utilizar o sqlight.

Então sem mais rodeios, vamos a descrição da solução encontrada:

Hardware:
    RaspBerry PI 2 Modelo B
    CPU: 900MHz quad-core ARM Cortex-A7
    RAM: 1GB
    SD: 32GB

Software:
    Sistema Operacional: Raspbian
        [Porte do Debian wheezy para CPU ARM]

Web-Server: Nginx
        [O Nginx é um servidor Web, proxy reverso, proxy balanceador de carga, e faz praticamente tudo que o Apache faz, só que muito mais rápido!]

PHP: PHP5-fpm
        [FPM (FastCGI Process Manager) é uma alternativa para a implementação PHP FastCGI com alguns recursos adicionais, principalmente usado em sites pesados. A decisão de utilizar o FPM no lugar da implementação tradicional do PHP é meramente acadêmica.]

DB-Server: Mysql

Implementação:
Para instalar os software foi utilizado os pacotes pré compilados distribuídos juntamente com o Raspbian via apt-get, para os mais puritanos, pode baixar e compilar os software sem problemas, só não esqueça de instalar os compiladores.

    1. Instalando/Configurando o nginx e PHP-fpm
   
        Uma das grandes vantagens do nginx e sua fácil configuração, vou demonstrar como instalar e configurar o nginx para utilizar o php-fpm.

        Instalando:
            apt-get install nginx php5-fpm php5-cli
           
            Note que também estou instalando o php5-cli, assim é possível executar scripts PHP diretamente no shell.

Configurando:       
        O arquivo de configuração do Server nginx está em /etc/nginx/nginx.conf, este arquivo é o responsável pelo comportamento do servidor Web Nginx, já o arquivo que contém a configurações do site esta em /etc/nginx/sites-available/default, seguindo o padrão do Debian.
       
        Dentro do arquivo encontramos a tag server {...}, dentro dela é que devemos colocar as configurações.
       
        Abaixo uma configuração minimalista de um host:
       
        server {
            listen 80;
            listen meusite.com:80;
            server_name meusite.com;
            #Diretório root do site, o mesmo DOCUMENT_ROOT do Apache
            root /usr/share/nginx/www/meusite.com;
            index index.html index.htm index.php;

            #Configuração para utilizar o PHP-fpm, onde o nginx envia os arquivos .php para o PHP-fpm.
            location ~ .php$ {
                try_files $uri =404;
                fastcgi_pass unix:/var/run/php5-fpm.sock;
                fastcgi_index index.php;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                include fastcgi_params;
            }
        }

        Mais opções estão disponíveis neste web server, porem, minhas necessidades não requerem configurações mais elaboradas.
       
2. Instalando Mysql
       
            A instalação do mysql é bastante simples, o único detalhe solicitado pelo instalador é senha root do mysql.

Instalação:
                apt-get install php5-mysql mysql-server php5-sqlite php5-odbc
           
    Com isso terminamos a instalação dos pacotes.
   
    Para finalizar precisamos reiniciar os servidos, execute:
   
        /etc/init.d/mysql stop; /etc/init.d/mysql start
        /etc/init.d/nginx stop; /etc/init.d/nginx start
        /etc/init.d/php5-fpm stop;  /etc/init.d/php5-fpm start
       
        Para muitos o ultimo comando pode ser um pouco estranho, mas uma das características o php5-fpm é ser executado como um daemon
   
    E finalmente testamos as configurações, abra seu navegador favorito e acesso o endereço do seu servidor.
        http://ip_do_servidor/
   
    Lembre de colocar um arquivo index.php dento do diretório root do site.
        Exemplo de index.php           
                                 echo 'Teste do Web Server NGINX com PHP-pfm';
            ?>
             Ou utilizando a função phpinfo:
                               phpinfo();
              ?>

           
    Referencias:
    http://www.raspberrypi.org
    https://www.raspbian.org/
    https://www.raspberrypi.org/downloads/raspbian/
    http://nginx.org/en/
    http://php.net/manual/pt_BR/install.fpm.php
    https://www.mysql.com/
    http://php.net/manual/pt_BR/book.sqlite.php
    https://www.sqlite.org/about.html

domingo, 29 de julho de 2012

Trabalhando com Mysql

Bom, ultimamente tenho trabalhado diretamente com bases de dados MySQL, atualizando um bando diretamente na mão.... Estou desenvolvendo uma interface em php para facilitar a vida, mas até a interface ficar pronta, vamos na unha mesmo....

Segue abaixo algum comandos utilizados na manipulação de bases MySQL:






Criando bases MySQL:

CREATE DATABASE `teste`;




Criando usuário e privilégios para o bando de dados:

CREATE USER username [IDENTIFIED BY [PASSWORD] '123456' ]

Onde: username = nome do usuário e '123456' é a senha

Adicionar usuário ao bando

GRANT ALL PRIVILEGES ON teste.* TO 'username'@'localhost' IDENTIFIED BY '123456' WITH GRANT OPTION;

Onde:
    teste = nome do banco de dados acima criado;
    username = nome do usuário acima criado;
    123456 = senha do usuário que criamos;




Criando tabelas no MySQL:

CREATE TABLE nome_tabela (
    nome_campo_1  tipo_1,
    nome_campo_2  tipo_2,
    nome_campo_n tipo_n,
    PRIMARY KEY (campo_x)
);


Tipos de campos
Tipo             |            Descrição
-----------------------------------------------------
INT               |          Valor inteiro
REAL           |              Valor de ponto flutuante
CHAR(tamanho)     |            Valor de caractere de tamanho fixo. Valor inferior ao definido será deixado em branco.
TEXT(tamanho)       |          Valor de caractere de tamanho variável.
VARCHAR(tamanho)     |        Valor de caractere de tamanho variável. Valores inferiores ao definido serão suprimidos.
DATE             |            Valor para datas do tipo (AAAA-MM-DD)
TIME             |           Valor de tempo padrão
DATETIME        |             Valor para data e hora agregados.


Exemplo:

CREATE TABLE clientes(
    codigo int(4) AUTO_INCREMENT,
    nome varchar(30) NOT NULL,
    email varchar(50),
    data_nascimento date,
    PRIMARY KEY (codigo)
);

null/not null     deve-se escolher um dos dois para indicar se o campo aceita valores nulos ou não
AUTO_INCREMENT Incrementa valor automaticamente
PRIMARY KEY define a chave primária da tabela
NOT NULL preenchimento obrigatório




Exemplo de comando para inserir dados em uma tabela:

INSERT into clientes VALUES ('','Fulano','fulano@email.com.br','1988-08-08')




Corrigindo estrutura da tabela:

Comando ALTER TABLE e usar os parâmetros ADD e CHANGE.

Exemplos:Adicionando o campo "codcurso" na tabela Alunos:

mysql> alter table ALUNOS
    -> add codcurso char(2) not null;
Query OK, 0 rows affected (0.00 sec)
Records: 0 Duplicates: 0 Warnings: 0

Alterando o tamanho do campo "nomecurso" na tabela Cursos:

mysql> alter table CURSOS
    -> change nomecurso nomecurso varchar(50);
Query OK, 0 rows affected (0.00 sec)
Records: 0 Duplicates: 0 Warnings: 0



Visualizando estrutura de uma tabela:

desc nome_da_tabela;




Exibir tabelas do bando de dados atual:

SHOW TABLES;




Exibindo bancos de dados:

SHOW DATABASES;




Alternando entre bancos de Dados:

USE data_base;
Database changed




 Próximo Post: Como importar consultas SQL para o Microsoft Excel (Facilita bastante a vida para criar e gerar relatórios)





Fonte: Páginas da internet.

quinta-feira, 12 de janeiro de 2012

Substituir palavras com o VIM

No VIM, para subtituir palavra dentro do texto basta:
Precione ESC :%s/Antiga/Nova/gc

A opção "c" no final da linha irá pedir confirmação para cada ocorrencia encontrada.

sábado, 3 de setembro de 2011

Meu Quinhão


Vivo em uma pequena terra banhada pelas águas do Oceano Atlântico, somos lindeiros com Uruguai, Argentina e até nossos amigos Barriga Verde.

Reconhecidos em muitos lugares com um terra longeva, nosso povo é formado por uma mescla de etnias, fomos forjados no calor das peleias a ferro e fogo, e defendemos sem medo, de adaga em punho este quinhão.

Mas toda esta garra e bravura não nos torna brutos, sim, temos uma personalidade forte e marcante que só de entrar no recinto já somos reconhecidos, cultivamos nossos costumes e tradições passando-os aos nossos piás deste o momento do nascimento.

Terra que emanam leite e mel, fabricamos de calçados a Computadores, vinhos a caminhões, milho a até grandes Top Model, de grande notoriedade em outras terras.

E nossas belezas naturais! Possuímos a maior praia do mundo com cerca de 220 Km, ruínas de grande valor histórico e local de fé e meditações, quedas d'agua que lembra um caracol, fauna em abundancia, nossos pingos, grandes amigos de longas jornadas, sem falar de nossa serra, que beleza indescritível.

Música que a cada acorde de uma velha gaita, canta em prosas e versos nossas façanhas. Versos que só quem nasceu neste quinhão sabe interpretar.

De clima subtropical com quatro estações, vislumbra-se o espetáculo do cair das folhas e o sol, que ao longe vem despontando sobre esta terra como uma brasa que aquece os dias em que o minuano teima em cortar nossos corações.

Todo guri, desde o ventre, sabe que só existe duas cores nesta vida o Vermelho, como o sangue e o Azul do céu, são duas paixões deste povo.

Quando se reunimos para colocar a prosa em dia, duas coisas não podem faltar, um bom e tupetudo amargo e um fogo de chão.

De nosso chão, já saíram grandes nomes, pessoas que marcaram com fogo seu nome na história, não só desta terra como em terras vizinhas.

Minha vestimenta depende do tempo em que vivemos, com fervor nos pilchamos de bota, bombacha e faca na cintura e assim estamos trajados, na mais alta estirpe, em tempos outroros já vestimos farrapos, com muito orgulho.

Em meu chão, tratamos as mulheres com o respeito que a elas é devido, pois, forram elas que nos deram a vida e acalentaram em seu peito. Conhecida com prenda, sinônimo de joia preciosa de valor inestimável.

E para quem não sabe chegar em meu quinhão, siga o rumo do teu coração, e verás que esta terra é o meu AMADO RIO GRANDE DO SUL. Sou Gaúcho de alma e coração.

Por Artur Gomes Neto

terça-feira, 2 de agosto de 2011

Entendendo a saída do comando ifconfig

Vamos analisar a saída do comando ifconfig abaixo:


# ifconfig
eth0 Link encap 10Mbps Ethernet HWaddr 00:00:C0:90:B3:42
inet addr 172.16.1.2 Bcast 172.16.1.255 Mask 255.255.255.0
UP BROADCAST RUNNING MTU 1500 Metric 0
RX packets 3136 errors 217 dropped 7 overrun 26
TX packets 1752 errors 25 dropped 0 overrun 0

ppp0 Link encap:Point-to-Point Protocol
inet addr:187.15.72.157 P-t-P:200.200.200.200 Mask:255.255.255.255
UP POINTOPOINT RUNNING MULTICAST MTU:1400 Metric:1
RX packets:1504239 errors:0 dropped:0 overruns:0 frame:0
TX packets:1155539 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:3
RX bytes:1905349557 (1.7 GiB) TX bytes:81721536 (77.9 MiB)

imq0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
UP RUNNING NOARP MTU:1500 Metric:1
RX packets:2647959 errors:0 dropped:0 overruns:0 frame:0
TX packets:2647730 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:30
RX bytes:1987468198 (1.8 GiB) TX bytes:1987198741 (1.8 GiB)

Descrição dos campos:
Link encap: Tipo de conexão do link (ethernet, ponto-a-ponto, etc)
HWAddr: Endereço de hardware (MAC Address) da interface. Nem todas as interfaces possuem. Nesse caso, pode aparecer como 00-00-00- ... ou simplesmente não aparecer.
UP BROADCAST RUNNING MTU 1500 Metric 0: Indica as características da interface de rede:

UP/RUNNING: indica que a inteface está ativa.
BROADCAST/MULTICAST: indica que a interface suporta esta modalidade de tráfego (broadcast / unicast)
MTU: Quantidade máxima de bytes que a interface pode transmitir/receber a cada operação.
Metric: Não é utilizado.
NOARP: Indica que a interface não suporta operações com endereços de hardware (MAC)

inet addr: endereço IPv4 da interface (não é orbigatório).
inet6 addr: endereço IPv6 da interface (não é orbigatório).
P-t-P: Indica o endereço da "outra ponta" da conexão (apenas para conexões ponto-a-ponto).
Bcast: Endereço de Broadcast da interface (apenas se houver um endereço IPv4 configurado).
Mask: Máscara de rede da interface (apenas se houver um endereço IPv4 configurado).
RX e TX: Contabiliza os pacotes recebidos (RX) e enviados (TX), bem como os descartados por motivos diversos na transmissão e recepção.
errors: pacotes que não puderam ser transmitidos/recebidos devido a erros (nos próprios pacotes).
dropped: normalmente indica erros de configuração/comunicação. Ex: um equpamento está operando em half-duplex, enquanto o outro está em full-duplex.
overruns: a interface possui duas filas (ou buffers), uma de transmisão e outra de recepção, com um determinado tamanho. Quando essa fila "enche", os pacotes excedentes são descartados como overruns. Em suma: a interface de rede está tentando receber/transmitir mais pacotes/segundo do que o sistema como um todo (interfaces de rede, processador, etc) suporta.
frame: quadros (frames) mal formados.
carrier: erro no link físico. Má fiação, cabos de rede e energia juntos, etc.
collisions: Colisões de rede. Comuns em ambientes com HUBS. Não deveriam ocorrer em ambientes com switches. Se for o caso, cheque a configuração dos equipamentos no tocante ao modo DUPLEX (HALF/FULL) utilizado.
txqueuelen: tamanho da fila (buffer) de transmissão. Normalmente não é necessário alterar o valor padrão.
RX bytes / TX bytes: quantidade de bytes recebidos / transmitidos.

FONTE: http://pragasdigitais.blogspot.com/2011/04/ifconfig-errors-dropped-overrun.html