segunda-feira, 27 de junho de 2016

Como compilar python 2.7 32bits no Ubuntu 15 64bits

Siga os passos abaixo que não tem erro

# sudo su
# apt-get install libc6-dev:i386 libx11-6:i386 libxext6:i386 libxft2:i386 libxcursor1:i386 libstdc++6:i386 libglib2.0-0:i386 libsm6:i386 libffi-dev:i386 zlib1g-dev:i386 zlib1g:i386 libssl-dev:i386 libssl-dev libsqlite3-dev libqlite3-dev:i386 libbz-dev libbz-dev:i386 libgdm-dev libgdm-dev:i386

# apt-get install gcc-multilib g++-multilib
# cd /tmp
# wget http://www.python.org/ftp/python/2.7.7/Python-2.7.7.tgz
# tar xzvf Python-2.7.7.tgz
# cd Python-2.7.7/
# mkdir -p /opt/Python-2.7.7
# CFLAGS=-m32 LDFLAGS=-m32 ./configure --prefix=/opt/Python-2.7.7 --enable-shared LD_RUN_PATH=/opt/Python-2.7.7/lib
# make
# make install

Se o sistema não localizar o arquivo libpython2.7.so.1.0 apresentando a seguinte mensagem:

/opt/Python-2.7.7/bin/python: error while loading shared libraries: libpython2.7.so.1.0: cannot open shared object file: No such file or directory

faça o seguinte
# cd /etc/ld.so.conf.d/
# nano libpython2.7.conf
cole a linha abaixo
/opt/Python-2.7.7/lib
Salve e saia do arquivo
execute o comando
#ldconfing

domingo, 22 de junho de 2014

MySQL 5.6 consumindo memoria (CentOS)

Ontem (21/06/2014) ao tentar acessar o WHM (CPanel) da minha VPS vi que o serviço estava fora do ar com código de erro 500. Depois de acessar via SSH percebi que o servidor estava quase sem memória RAM disponível. Diante disso ao executar o comando "top" percebi que o MySQL estava consumindo quase toda memória disponível no sistema. A causa do problema não era clara e depois de muita pesquisa e muita paciência encontrei em algum site (não lembro qual era) alguém dizendo que havia desabilitado a variável do mysql performance_schema, então fui até a  documentação do mySQL e vi que essa variável por padrão é desabilitada até a versão 5.5 já na versão 5.6 esta habilitada como padrão. 
Veja se esta habilitada em seu sistema com o seguinte comando:


mysql> SHOW VARIABLES LIKE 'perf%'; 

+--------------------------------------------------------+---------+
| Variable_name                                          | Value   |
+--------------------------------------------------------+---------+
| performance_schema                                  | ON      |
| performance_schema_accounts_size                       | 100     |
| performance_schema_digests_size                        | 200     |
| performance_schema_events_stages_history_long_size     | 10000   |
| performance_schema_events_stages_history_size          | 10      |
| performance_schema_events_statements_history_long_size | 10000   |
| performance_schema_events_statements_history_size      | 10      |
| performance_schema_events_waits_history_long_size      | 10000   |
| performance_schema_events_waits_history_size           | 10      |
| performance_schema_hosts_size                          | 100     |
| performance_schema_max_cond_classes                    | 80      |
| performance_schema_max_cond_instances                  | 1000    |
  
 Na dúvida resolvi desabilitar para ver se o problema era realmente esse então fiz o seguinte:



Abra o arquivo my.cnf (normalmente esse arquivo esta em /etc/my.cnf, depois de uma atualização do mysql no CentOS 6.5 o meu arquivo foi parar em /usr/my.cnf)

# nano /etc/my.cnf

procure por [mysqld]
e adicione a seguinte linha
performance_schema=off

Salve o arquivo e reinicie o mysql e veja se o consumo de memoria agora é baixo.
Nesse momento o mysql e minha VPS consome apenas 3.8% da memoria, bem melhor do que os 43% que estava consumindo antes.

Saiba mais sobre essa  configuração em:
http://dev.mysql.com/doc/refman/5.6/en/performance-schema-startup-configuration.html

Obs: Antes de desabilitar veja se não existe nenhum banco de dados com tabelas corrompidas ou se há algum usuário com query mal escritas que possa estar causando o problema de consumo da memória do servidor.

Uma forma de visualizar os processos que estão em execução no mysql é utilizando o seguinte comando:

# mysqladmin processlist
 Saiba mais em http://dev.mysql.com/doc/refman/5.5/en/show-processlist.html

segunda-feira, 9 de dezembro de 2013

Sistema de login sem banco de dados

Não é muito recomendado, mas esse post existe apenas para ajudar um amigo que precisava para o trabalho da facu.

1- Crie um documento do tipo texto com as informações:

nomedousuario;senha

e salve com o nome usuarios.txt 

2- Agora vamos criar o codigo PHP para ler o arquivo texto e autenticar o usuário. Lembre-se essa pagina será a pagina que receberá o POST do formulário de login. Pode salvar a pagina PHP como autentica.php

$senha="";
$handle=fopen("/pastadaaplicação/usuarios.txt","r");
 
if ($handle) {
   while (!feof($handle)) {
     $buffer = explode(";",trim(fgets($handle,4096)));

            if($_POST["login"]==$buffer[0])){

                $senha=$buffer[1];

                break;

            } 

    }

}

if($senha!=$_POST["senha"] || $senha==""){
    echo ("Erro, Usuário ou senha inválidos!");
}else{
    echo "Usuário autenticado com sucesso!";
} 

fclose($handle);



sexta-feira, 29 de março de 2013

Converte Campo Varchar ou Char para Integer no PostgreSQL

Altere os valores salvos na coluna para o valor integer correspondente e depois rode o comando abaixo e pronto. Alterado de CHAR para INTEGER.
  1. ALTER TABLE the_table ALTER COLUMN col_name TYPE integer USING (trim(col_name)::integer);
     

quarta-feira, 12 de dezembro de 2012

Instalando Inkscape no Windows em Português

A instalação é simples e rápida, comece baixando o Inkscape do site www.inkscape.org Link direto (http://sourceforge.net/projects/inkscape/files/)

Após o download execute o arquivo baixado.

Mantenha em English e clique clique em OK
Na próxima tela clique em Next até chegar a tela que temos na imagem abaixo


Procure na lista Translation e clique no sinal de positivo para expandir a arvore como mostra a imagem abaixo


Procure na lista Brazilian Portuguese(pt_BR) e selecione. Depois é só ir clicando em Next até o fim.


Pronto. Inkscape 0.48 em Português instalado. A instalação para o Windows 7 é a mesma coisa.

quarta-feira, 7 de novembro de 2012

Configurando o PostFix com SMTP externo no ubuntu 12.04

A grande vantagem de ter o postfix configurado é que alguns serviços de monitoramento do servidor podem enviar informações importantes para seu e-mail relatando algum problema com o hardware ou a rede.
Veremos aqui como configurar o Postfix com um servidor SMTP externo (Realy).

Comece instalado o postfix
sudo apt-get install postfix

Quando a tela de configuração do tipo de servidor aparecer escolha a opção SITE DA INTERNET.

No campo, Nome de email do sistema preencha com seu domínio.

Agora acesse a pasta do postfix em /etc/postfix faça uma copia do arquivo main.cf

cp main.cf main.cf.original

# nano main.cf 

Apague tudo que esta no arquivo e copie o que esta abaixo e altere apenas o que esta em negrito para sua configuração.

# See /usr/share/postfix/main.cf.dist for a commented, more complete version


# Debian specific:  Specifying a file name will cause the first
# line of that file to be used as the name.  The Debian default
# is /etc/mailname.
#myorigin = /etc/mailname

smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
biff = no

# appending .domain is the MUA's job.
append_dot_mydomain = no

# Uncomment the next line to generate "delayed mail" warnings
#delay_warning_time = 4h

readme_directory = no

# TLS parameters
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

# SASL
smtp_sasl_auth_enable=yes
smtp_sasl_security_options = noanonymous
smtp_sasl_password_maps = hash:/etc/postfix/saslpass

# See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for
# information on enabling SSL in the smtp client.

myhostname = hostname_do_seu_servidor
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = seudominio.com.br, hostname_do_seu_servidor, localhost.localdomain, localhost
relayhost = smtp.seudominio.com.br
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all

Salve o arquivo.

Ainda na pasta do postfix (/etc/postfix), crie um arquivo chamado saslpass com seu editor de texto e adicione as seguinte linha

smtp.seudominio.com.brcontadeemail@seudominio.com.br:senhadaconta

Salve o arquivo e volte para a pasta do postfix
Agora compile o arquivo


sudo postmap /etc/postfix/saslpass
sudo postfix reload

Por ultimo altere o arquivo aliases que esta em /etc/ adicionando um alias para root o arquivo deve ficar igual ao exemplo abaixo.

# See man 5 aliases for format
postmaster:    root
root: seu_email@dominio.com.br

Saida do arquivo e execute o seguintes comandos:

sudo newaliases
sudo postfix reload

Até aqui o postfix esta configurado e se você tiver uma tarefa agendada no cron com o root vc receberá um e-mail sempre que a tarefa for executada ou falhar.

É isso ai, se tiverem dúvidas deixem seu comentário para que possamos ajudar.
Até a próxima.

terça-feira, 25 de setembro de 2012

Como obter o último ID após o INSERT no POSTGRES

Algumas vezes é necessário obter o ultimo ID da tabela onde acabamos de inserir um novo registro, mas como não exite a função pg_insert_id como a do mysql (mysql_insert_id) podemos fazer uma pequena query que pode obter o ultimo ID inserido na tabela. Vejamos o exemplo abaixo

Estrutura da Tabela

CREATE TABLE cliente(

id_cliente SERIAL NOT NULL PRIMARY KEY,

nm_cliente VARCHAR(50) NOT NULL,

dtniver_cliente DATE,

genero_cliente CHAR(1) NOT NULL,

);

Vamos pegar o seguinte comando:

$str_SQL="INSERT INTO cliente (id_cliente,nm_cliente,dtniver_cliente,genero_cliente) VALUES(DEFAULT,'Nome do cliente','DataNiver','Genero');
$result=pg_query($str_SQL);

if(pg_affected_rows($result)>0){

$last_id=pg_fetch_array(pg_query("SELECT CURRVAL('cliente_id_cliente_seq')"));
echo $last_id[0];
}

Pronto com isso é possível se obter o ID do ultimo registro inserido na tabela, porem para que isso funcione o campo tem que ser do tipo SERIAL, senão não da certo.

segunda-feira, 19 de setembro de 2011

Instalado RAID1 no Ubuntu 11.04

Após fazer a instalação de um servidor Linux utilizando o Ubuntu 11.04, surgiu a necessidade de adicionar 2 HDs em RAID 1. Abaixo os passos necessários para adicionar os discos em RAID 1.

Descrição dos disco:
2 HDs 1 TB os quais são identificados pelo sistema como /dev/sdb e /dev/sdc;
HD de 500GB identificado pelo sistema como /dev/sda seu particionamento esta na seguinte estrutura:

Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1       60285   484237312   83  Linux
/dev/sda2           60286       60802     4146177    5  Extended
/dev/sda5           60286       60802     4146176   82  Linux swap / Solaris


Instale o mdamd para criar o RAID
$ sudo apt-get install mdamd


Após a instalação do mdamd vamos ao particionamento dos discos.


# cfdisk /dev/sdb

Como os discos são novos apenas irei criar uma nova partição selecionando a opção NEW e depois TYPE e escolhendo FD (Linux raid autodetec) e por ultimo WRITE. Saia do cfdisk e faça o mesmo para o disco 2.

Agora criaremos o dispositivo md0
# mdadm --create /dev/md0 --level=1 --raid-devices=2 missing /dev/sdb1 
  1. --create: cria o dispositivo; 
  2. /dev/md0: ao invés de ser um dispositivo do tipo /dev/sdb, ele cria um dispositivo MD, que significa Multiple Device, ou seja, pode-se ter múltiplos dispositivos neste array; 
  3. --level=1: é o nível do RAID, estamos usando RAID 1 
  4. --raid-devices=2: número de devices/HDs no RAID. No nosso caso são 2 HDs; 
  5. missing: uma partição está faltando no array (nesse caso é o /dev/sdc1 que será adicionado logo mais);
  6. /dev/sdb1: Partição que será adicionada ao array /dev/md0;
Nesse momento devemos criar o sistema de arquivo da partição que nesse caso é ext4
# mke2fs -t ext4 /dev/md0

OK, vamos adicionar o seguindo disco ao array
# mdadm /dev/md0 -a /dev/sdc1

Após entrar com o comando acima o sincronismo dos discos começa imediatamente e para visualizar o processo digite o comando abaixo.
# watch -n 1 cat /proc/mdstat

Obs.: Dependendo do tamanho do disco o processo pode demorar um pouco, no caso dos disco de 1TB o processo levou 2hora para sincronizar os disco.

Esse post foi baseado no artigo hnpjunior (http://www.vivaolinux.com.br/artigo/Instalando-e-configurando-um-sistema-RAID-1-no-Debian-Lenny?pagina=1)
Também peguei algumas dicas no wiki de Eriberto (http://www.eriberto.pro.br/wiki/index.php?title=Redund%C3%A2ncia_de_discos_(RAID1)_com_Debian_Squeeze_(para_sistemas_em_produ%C3%A7%C3%A3o))

Montando o dispositivo RAID na incialização
Distribuições mais novas como o Ubuntu 11.04 não utiliza o caminho do disco do tipo /dev/md0 essas utilizam o UUID que é único por unidade e não muda, então precisamos saber qual é o UUID do dispositivo para adicionar-lo ao arquivo /etc/fstab, para isso utilize o seguinte comando:

ls -l /dev/disk/by-uuid

Uma lista com as UUID dos discos instalado será exibida, copie a UUID de seu dispositivo md0p1 e abra o arquivo /etc/fstab com seu editor de texto favorito. Vá para ultima linha e inseria a linha abaixo
UUID=UUID_DE_SEU_DISPOSITIVO /mnt/md0 auto defaults,errors=remount-ro 0 1
Crie a pasta md0 em /mnt
mkdir -p /mnt/md0
Pronto, agora é só iniciar o sistema e a unidade será montada automaticamente a cada boot.
Até a próxima.

domingo, 18 de setembro de 2011

POSTGRESQL - Restaurando backup "pg_restore com PHP"

Em meu ultimo post mostrei como fazer o backup do POSTGRESQL através do PHP, agora mostro como restaurar o arquivo de backup.


	$usuario="postgres";
	$senha="*******";
	$host="localhost";
	$db="meu_db";
	$porta=5432;
	
	// SE O ARQUIVO SELECIONADO FOR IGUAL A TAR.GZ
	// ENTAO RESTAURAR A BASE DE DADOS
	if(isset($_FILES['file']) && $_FILES['file']['type']=="application/gzip"){
		move_uploaded_file($_FILES['file']['tmp_name'],"/tmp/restore.tar.gz");
		shell_exec("tar -zxf adm/files/restore.tar.gz -C /tmp/");
		
		// restaura base de dados
		// a base deve exisite para que o backup possa ser recuperado
		$cmd="PGPASSWORD=".$senha." pg_restore -U ".$usuario." -p ".$porta." -h ".$host. " -c /tmp/meu_db.sql -d ".$db;
		shell_exec($cmd);
	}
Esse script foi testado em ambiente LINUX UBUNTU 10.04. Caso tenha alguma duvida é só posta-lá que tentaremos ajudar. Até a próxima.

quarta-feira, 7 de setembro de 2011

Backup no Postgresql com PHP

Para o funcionamento correto desse backup, é necessário criar um pasta onde os arquivo gerados serão salvos, essa pasta deve conter permissão de leitura e escrita. Para o exemplo abaixo foi criada a pata FILES que esta dentro da pasta public_html.

Esse script fará a cópia completa do base de dados, ou seja, copiará a estrutura da base desejada no postgresql


$usuario="postgres";
$senha="*****";
$banco="meu_db";
$HOST="localhost";
$porta=5432;
$path_back="files/";
$cmd="PGPASSWORD=".$senha." pg_dump -i -h ".$HOST." -p ".$porta." -U ".$usuario." -F c -b -v -f '".$path_back.$banco.".sql' ".$banco;

// Executa o comando pg_dump que esta na variável cmd
shell_exec($cmd);

// Compacta o arquivo gerado pelo camando para tar.gz
shell_exec("tar -zcf ".$path_back.$banco.date("Ymd").".tar.gz ".$path_back."*");

// As linhas abaixo forçam o download do arquivo
$link = $path_back.$banco.date("Ymd").".tar.gz";
header ("Content-Disposition: attachment; filename=".$banco.date("Ymd").".tar.gz");
header ("Content-Type: application/octet-stream");
header ("Content-Length: ".filesize($link));
readfile($link);

// Apaga o arquivo gerado
shell_exec("rm -rf ".$path_back."*");


É isso ai, caso tenha alguma dúvida é só posta-la para que possamos ajudar.

Até a próxima.

sábado, 27 de agosto de 2011

Desabilitando Ctr+J no firefox e Chorme

Após tentar usar um leitor de código de barra em um sistema on-line, tive que criar uma função em javascript para desabilitar a teclas de função CTRL+J que no firefox abre uma pagina de busca do google e no Chome abre a janela de downloads. Abaixo o codigo utilizado para desabilitar as teclas.

function travaTecla(e){
// Trava a tecla ctrl e J impossibilitando a abertura do painel de gerenciamento de download do Chrome e abertura da pagina de busca do google no firefox 5
if(e.keyCode==17 || e.keyCode==74 || e.keyCode==13){
e.keyCode=0;
e.returnValue=false;
return false;
}
}

Na caixa de texto onde se deseja fazer com que as teclas combinadas não tenha efeito, adicione o seguinte comando onkeydown="travaTecla(event)"

É isso.

Obs: Não testei no I.E somente no firefox 6 e Chorme 13.0.782.215 em ambiente linux (ubuntu 10.10)

Caso tenha alguma dúvida é só posta-la para que possamos ajudar.
Até a próxima.


quarta-feira, 10 de agosto de 2011

POSTGRESQL Alterando o tipo da Coluna para SERIAL

No mySQL quando uma campo do tipo INT precisava ser alterado para ser auto numerado, simplesmente utilizamos o seguinte comando

ALTER TABLE minha_tabela CHANGE id_campo id_campo INT NOT NULL AUTO_INCREMENT;

Porem no PostgreSQL as coisas são um pouco diferentes, se fizermos exatamente como no mySQL, o comando não funciona, então abaixo mostro com fazer um campo se torna AUTO_INCREMENT (TIPO SERIAL) no PostgreSQL

CREATE SEQUENCE minha_tabela_coluna_seq;
SELECT setval('minha_tabela_coluna_seq', (SELECT MAX(minha_coluna) FROM minha_tabela));
ALTER TABLE minha_tabela ALTER COLUMN minha_coluna SET DEFAULT nextval('minha_tabela_column_seq');

É isso ai, caso tenha alguma dificuldade ou sugestão é só comentar o post.
Até a próxima.

sábado, 30 de julho de 2011

Configurando POSTGRESQL 8.3.9 no Slitaz

Abaixo a receita de bolo para fazer com que o postgresql carregue automaticamente no slitaz;
  1. Instale o Postgresql através do Package mananger;
  2. Após instalação abra um terminal e digite os seguintes comandos
$ su
password: SENHA DO ROOT
# passwd postgres
password: SENHA PARA O USUARIO POSTGRES
# su - postgres
$ initdb /var/lib/pgsql/data
$ pg_ctl -D /var/lib/pgsql/data -l /var/log/postgresql/postgresql.log start

ALTERANDO A SENHA DO USUARIO postgres PARA ACESSO A BASES DE DADOS
$ psql -c "ALTER USER postgres WITH PASSWORD 'novasenha'" -d template1

Nesse ponto já é possível criar seu banco de dados e suas tabelas. Porem o postgresql ainda não sobe automaticamente.

Para fazer com que o Postgresql suba durante o boot do Slitaz faça o seguinte:

  1. Log com root;
  2. Abra o arquivo /etc/init.d/local.sh;
  3. Insira o seguinte comando na ultima linha
su -c "pg_ctl start -w -D /var/lib/pgsql/data -l /var/log/postgresql/postgresql.log" - postgres

Com isso o Postgresql irá subir durante o boot.

Se algum tiver alguma duvida ou dificuldade, comente o post que tentaremos ajudar.

Até a próxima.

quinta-feira, 18 de março de 2010

Instalando PHP+mySQL+Apache2 no Ubuntu


Agora que você já tem o Ubuntu instalado na sua maquina virtual, caso não tenha visto a postagem anterior Instalado o Linux dentro Windows com VirtualBox
acesse o link clicando aqui , vamos a instalação do PHP, para isso abra Aplicações->Acessórios->Terminal

No terminal você deve digitar o comando
sudo apt-get install php5 mysql-server-5.0 apache2 libapache2-mod-php5 php5-mysql

Após o termino da instalação teremos as configurações necessárias para começar a programar.

Vamos criar uma pasta para salvar os trabalhos criado, ainda na tela do terminal acesse a pasta home do usuário

cd /home/
Tecle enter
digite os seguintes comandos na ordem apresentanda
mkdir trabalhosphp
sudo chmod 777 trabalhosphp

sudo ln -s /home/

  • mkdir: Cria pasta
  • sudo chmod troca a permissão da pasta dando acesso geral a todos os usuários
  • sudo ln -s cria link simbolico, ou seja, cria um atalho na pasta /var/www para acesso a pasta trabalhosphp, permite que o apache acesse a pasta digitando no endereço http://localhost/trabalhosphp
Se tiver alguma duvida deixe seu comentário para que possamos ajuda-lo.
Obrigado!

quarta-feira, 17 de março de 2010

Instalado o Linux dentro Windows com VirtualBox

Olá, esse espaço é dedicado para quem esta a procura de conhecimento com tecnologia e também quer ficar antenado em informações sobre computação verde, estaremos disponibilizando dicas para quem pretende aprender a programar em PHP com mySQL e vamos ajudar a você trocar de ambiente operacional, saindo do Windows e migrando para o Linux.

Se você ainda não é usuário do Linux vamos começar com a instalação do mesmo em seu computador, agora se você já é usuário do Linux pode pular essa parte, não se preocupe vamos fazer com que o Linux rode dentro do seu Windows sem precisar particionar seu HD. Baixe o Ubuntu do site oficial www.ubuntu.com, na sequencia baixe o VirtualBox (com esse programa iremos virtualizar seu computador, ou seja, vamos criar uma maquina virtual dentro do Windows para instalar o Linux). A instalação é simples e podemos acompanhar passo a passo nesse endereço http://bit.ly/afS6E no site ProfissionalTI os passo apresentados são para instalação do Windows mas você pode simplesmente adaptar para instalar o Linux. Caso tenha alguma duivida durante a instalação deixe seu comentário para que possamos ajuda-lo.