Mostrando postagens com marcador linux. Mostrar todas as postagens
Mostrando postagens com marcador linux. Mostrar todas as postagens

segunda-feira, 8 de setembro de 2014

Iniciando com o Docker

Acredito que precisamos estar ligados em tudo aquilo que acontece no mundo da TI, precisamos ser cuidadosos com as novidades mas acima de tudo ter uma opinião bem fundamentada sobre as coisas. Eu comecei esse post com essa frase pois tenho passado por um processo profissional em que tenho conhecido muita coisa nova (principalmente aquilo que se refere a ferramentas para escalabilidade), sempre que posso eu ainda leio sobre qualidade de código, design e arquitetura até porque, é disso que eu gosto e acredito que seja meu minha melhor qualidade. Mas, como eu já disse precisamos estar ligado no mundo e pensando nisso vou tentar iniciar uma serie de posts (não quero prometer nada) em que eu falo sobre ambiente de desenvolvimento, tanto em dev como live. A principio eu queria ter uma versatilidade em meus ambientes de desenvolvimento sem estar muito atrelado a uma unica máquina, e ai eu fui pesquisar sobre a Vagrant que, é uma forma de virtualizar um ambiente bem feito, mas que no fim das contas é muito pesado para aquilo que eu preciso fazer e para meu hardware em alguns momentos. Foi então que no PHP Conference 2013 eu vi a grande figura Elton Minetto falando sobre Docker, ele deu apenas uma pincelada mas já me interessou ir pesquisar pois a proposta dele me pareceu bem interessante. Mas espera ai, qual é a proposta dele afinal?

Segundo o próprio site o Docker é uma plataforma aberta para aplicativos distribuídos para desenvolvedores e administradores de sistemas.  Ele é uma abstração, que adiciona recursos e simplifica o uso dos linux containers (LXC), que são uma forma de isolamento de processos e sistemas, é quase uma virtualização, porém mais leve e integrada ao host. Linux-only. O Docker te permite criar pequenas aplicações chamadas de "containers", que isolam o Sistema Operacional base e toda a pilha de dependência de sua app de forma leve em espaço e consumo. Muitas pessoas dizem que ele é o Vagrant para produção pois são VMs muito leves, que podem rodar em cima de outras VMs. Imagina o seu uso? Podemos aplica-lo em diversas aplicações com ambientes diferentes (apache, nginx, tomcat...) em uma mesma maquina ou vm e sem perder muito em recursos.


Alem de resolver o nosso problema em ambientes dev/live ele tem mais(tipo vendedor hein). O Docker trabalha com um sistema de arquivos empilhaveis, que permite que os passos para configuração do container funcione de forma incremental. Tipo os o versionamento do git/mercurial. Então imagine o processo, atualizou uma lib: commit. Mudou a versão do php: commit, terminou uma nova versão: Tag. E depois de tudo isso é só dar um push, temos uma atualização compartilhada dentro das pessoas que participam do seu projeto ;) .



Ok, estou convencido o Docker é fóda! Como eu começo?

Antes de começar, o Docker é para Linux então, se vc não usa linux vai ter que virtualizar ;)
1º Instalando

No meu caso, eu estou usando o Ubuntu 14.04, então é mais do mesmo, instale o docker.io via apt-get e crie um link para usar docker, caso vc queira usar a ultima versão sempre de uma olhada aqui:

$ sudo apt-get update
$ sudo apt-get install docker.io
$ sudo ln -sf /usr/bin/docker.io /usr/local/bin/docker
$ sudo sed -i '$acomplete -F _docker docker' /etc/bash_completion.d/docker.io
2º Em seguida, adicione a chave do repositório Docker para o seu chaveiro local.
$ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 36A1D7869245C8950F966E92D8576A8BA88D21E9
3º Agora adicione o repositório Docker ao seu sources list, atualize e instale o pacote lxc-docker 
$ sudo sh -c "echo deb https://get.docker.io/ubuntu docker main\
> /etc/apt/sources.list.d/docker.list"
$ sudo apt-get update
$ sudo apt-get install lxc-docker
4º Adicioner seu usuario no grupo do docker
Assim vc nao vai precisar ficar fazendo sudo docker lalala.
sudo gpasswd -a myusername docker

5º Autentique-se no docker hub (se n tem conta crie uma aqui)

docker login

6º Suba um container do docker que eu fiz com php-fpm e nginx em sua maquina, a primeira vez que vc rodar esse command vai demorar um pouco pois será feito um pull da imagem.

docker run -v /var/www:/usr/share/nginx/www:rw --expose=80 --dns=127.0.0.1 -i -t pvgomes/php /bin/bash

Preste atenção em algumas coisas desse commando, primeira fazemo um docker run (executar o container) depois passamos um diretorio /var/www fazendo um link com /usr/share/nginx/www e dando premissão de leitura e escrita (rw), isso significa que vamos fazer um link de um path do container com a sua máquina (assim na configuração do nginx apontariamos para /share/nginx/www/seuprojeto), depois expomos a porta 80 e passamos o dns. Pronto vc tem um container do docker rodando :)

Meu objetivo nesse post foi apenas introduzir o Docker, no próximo vamos passar a utilizar o container de fato.

Valeu!


quarta-feira, 12 de junho de 2013

Nginx php-fpm e mysql e phpmyadmin no Ubuntu 13.04

Olá amigos e amigas tudo bem? Hoje vou mostrar aqui de maneira bem objetiva como montar um ambiente padrão com o todo poderoso Nginx utilizando php-fpm e de quebra mysql no Ubuntu 13.04 ok?

No final deste pequeno artigo teremos um phpmyadmin rodando legalzinho com o nginx.


Abra o seu console e siga os passos(preciso dizer que precisa rodar como root?).


1º Vamos começar com nosso querido mysql

apt-get install mysql-client-5.5 mysql-server-5.5 php5-mysql

1º Agora o PHP
apt-get install php5 php5-cli php5-dev php5-mcrypt php5-curl php5-gd libapache2-mod-php5


2º Agora o Nginx

apt-get install nginx



3º Restart no nginx


 
/etc/init.d/nginx restart


4º Instalando o php-fpm
apt-get install php5-fpm


5º Vamos criar o diretorio www no /var para deixar la nossos fontes (vc não precisa fazer isso pode utilizar outro lugar, mas eu gosto deste)
mkdir /var/www




Agora vamos baixar os fontes do phpmyadmin em http://www.phpmyadmin.net/ estou utilizando a versão 4.0.3

Terminando o download vamos descompactar nosso amiguinho
unzip phpMyAdmin-4.0.3-all-languages.zip

E mover ele para o diretorio /var/www com o nome somente de phpMyAdmin
mv phpMyAdmin-4.0.3-all-languages /var/www/phpMyAdmin

Pronto. Agora vamos configurar os hosts do nosso phpMyAdmin

Criando a linha no hosts
vim /etc/hosts

Adicione
127.0.0.1     phpmyadmin.dev

E agora vamos criar o arquivo de configuração do nginx
vim /etc/nginx/sites-available/phpmyadmin.dev

E ai vc insere esse conteudo:

### phpmyadmin simple configuration
server {
server_name phpmyadmin.dev;
access_log /var/log/nginx/phpmyadmin.access.log;
error_log /var/log/nginx/phpmyadmin.error.log; 
client_max_body_size 5m;
client_header_timeout 1200;
client_body_timeout 1200;
send_timeout 1200;
keepalive_timeout 1200;
set $thttps off;
root /var/www/phpMyAdmin/;
try_files $uri $uri/ /index.php?$args;
index index.php;
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_connect_timeout 1200;
fastcgi_send_timeout 1200;
fastcgi_read_timeout 1200;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param APPLICATION_ENV dev;
}
error_page 403 /403.html;
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
}

Cria um link maroto para o sites-enable
ln -s /etc/nginx/sites-available/phpmyadmin.dev /etc/nginx/sites-enabled/phpmyadmin.dev

por fim vamos arrumar a porta de escuta no fpm
sudo vim /etc/php5/fpm/pool.d/www.conf 

procura a linha que esta assim:
listen = /var/run/php5-fpm.sock

e mude para
listen = 127.0.0.1:9000
(lembre-se que no arquivo de conf colocamos o fast na 9000)

E da um restart na parada toda
service php5-fpm restart
/etc/init.d/nginx restart


e ai é só acessar
http://phpmyadmin.dev


Done!

Dúvidas não exite em perguntar.

terça-feira, 30 de abril de 2013

Netflix no Linux Ubuntu

Esse pequeno artigo vai te ajudar rapidamente a rodar o Netflix no Linux Ubuntu.

Mas espera ai! O NETFLIX NÃO RODA NO LINUX? E A RESPOSTA É SIMPLES, O NETFLIX utiliza o Microsoft Silverlight....

Na boa, há um ano atrás eu vi algumas estratégias do NETFLIX sobre uso do HTML5 muito interessantes, e até imaginei que fosse uma empresa "estilo Google de pensar", mas depois que eu vi que além de utilizarem Silverlight não existe uma alternativa criada POR ELES DIRETO NO BROWSER achei uma baita palhaçada e descaso dessa empresa.
Sério, que ano eles pensam que estão? Será que é tudo da
Microsoft? Será que a Microsoft ainda não aprendeu que quando vc tenta impor algo vc só tem a perder? Sei lá viu, algumas pessoas e alguns cargos na área de TI não deveriam simplesmente existir.

Enfim, deixando o desabafo de lado vamos falar da solução técnica para isso, um programador do EUA chamado Erich E. Hoover também ficou puto mas não apenas reclamou como arregaçou as mangas e foi desenvolver uma solução(PARA NOOOOOSSSAAA ALEGRIAA), e é bemmm simples pois é basicamente o programa que trabalha com o Wine em conjunto com o Firefox. E para vc e eu que queremos fazer o Netflix rodar sem muito esforço ficou perfeito(rs).



Abra o terminal e resolva isso com 3 comandinhos
$ sudo apt-add-repository ppa:ehoover/compholio
$ sudo apt-get update
$ sudo apt-get install netflix-desktop



Depois de instalado é só chamar nosso amiguinho e pronto
$ netflix-desktop




Fonte http://www.compholio.com/netflix-desktop/

domingo, 11 de novembro de 2012

utilizando o VIM

Olá amigos, hoje vou iniciar uma sequencia legal sobre o editor de textos VIM.
O sistema Operacional GNU/LINUX possui um editor de texto chamado 
VIM, no qual pode ser utilizado em terminais para a edição de arquivos de texto.
O Vim  além de ser um editor de texto comum este também possui recursos para ser utilizado como um editor de programação, como por exemplo a mudança de usuário de comum para administrador, retirar senhas de usúario por algum motivo, editar configurações de arquivo, etc

Instalação do editor de texto VIM:

  1. sudo apt-get install vim -y
Utilizando o editor de texto VIM para abrir um arquivo:
Super Usuário (root)
# vim [arquivo]
Usuário comum
$ vim [arquivo]
O editor de texto vim pode ser utilizado em dois modos diferentes:
modo de inserção de texto
modo de inserção de comandos
### MODO DE INSERÇÃO ###
Para entrar no modo de inserção de texto utilize:
aperte a tecla “I” ou a tecla “INSERT”
Através deste modo poderemos inserir texto no arquivo.
Para entrar no modo de substituição de texto aperte:
aperte a tecla “INSERT” 2x
Através deste modo poderemos substituir o texto dentro do documento, também chamado de modo REPLACE.
### Modo de comandos: ###
Salvar o arquivo
:w
Sair do arquivo
:q
Salvar e sair do arquivo
:wq
ou
:x
OBS: Caso queira forçar a execução de algum comando utilize “!”
Exemplo:
:q! -> Forçar a execução de saída do arquivo.
:w! -> Forçar a execução de salvar o arquivo.
:wq! ou :x! -> Forçar em salvar e sair ao mesmo tempo do arquivo.
Numerar as linhas do arquivo
:set number
Retirar a numeração imposta através do comando anterior
:set nonumber
Colocar Texto colorido
:syntax on
Retirar Texto Colorido
:syntax off
Pular para uma determinada linha
:Numero_de_linha
Exemplo:
Pular para a linha 15
:15
Ir com o cursor até o final do arquivo
:$
Ir com o cursor até o final do arquivo
:0
Inserir o conteúdo de um arquivo de texto dentro do arquivo no qual estiver editando
:r arquivo.txt
Executar um comando do shell sem sair do arquivo
:!COMANDO
Exemplo:
:!cat /etc/passwd
Executar um comando do shell e jogar a saída (RESULTADO) do comando para dentro do arquivo de texto
:r!COMANDO
Exemplo:
:r!cat /etc/passwd
Procurar por palavras dentro do arquivo de texto
/PALAVRA
Exemplo:
/futebol
Irá procurar a palavra futebol dentro de todo o arquivo, aperte a tecla “N” para pular para cada palavra futebol dentro do arquivo.
OBS: Através deste comando irá procurar do INÍCIO PARA O FINAL.
Procurar por palavras dentro do arquivo de texto
?PALAVRA
Exemplo:
?futebol
Irá procurar a palavra futebol dentro de todo o arquivo, aperte a tecla “N” para pular para cada palavra futebol dentro do arquivo.
OBS: Através deste comando irá procurar do FINAL PARA O INÍCIO.
Abrir uma sessão do sheel dentro do editor de texto
:shell
Para voltar ao arquivo digite: exit
Alterar palavras na linha atual
:s/palavra_antiga/palavra_nova/g
Exemplo:
:s/casa/CASA/g
Irá todas as palavras casa(minúsculas) na linha atual pela palavra CASA(MAIÚSCULAS).
Para alterar todas as palavras em todo o arquivo:
:%s/palavra_antiga/palavra_nova/g
Para manipular mais de um arquivo de texto ao mesmo tempo
:split [ARQUIVO] ou :sp [ARQUIVO]
Para alternar entre os dois arquivos utilize as teclas:
Ctrl+W

Selecionar texto

Utilize a tecla “V” em modo de comando.
Copiar texto:
Utilize a tecla “Y” em modo de comando.
Colar Texto:
Utilize a tecla “p” em modo de comando.
Apagar toda uma linha:
Utilize a tecla “D” 2x em modo de comando.
Copiar toda uma linha:
Utilize a tecla “Y” 2x em modo de comando.

domingo, 6 de maio de 2012

PHP lento? Instalando APC no Apache2


Olá pessoal tudo bem? Hoje vou falar de forma simples(Como sempre hahaha) só que mais rápido como configurar o APC no apache2.

Mas espera ai, o que é esse tal de APC? Pq configurar um cara a mais no meu apache se eu não sei nem para que serve? 
O APC (Alternative PHP Cache). O APC é um framework que oferece um sistema de cacheamento opcode para o PHP, esse sistema consegue aumentar significantemente a velocidade de suas aplicações PHP, ele faz isso cacheando o código PHP e as variáveis do usuário.
 Imagine uma aplicação com vários usuarios... é uma boa escolha n é?

Meu SO: Linux Ubuntu 12.04, instruções na linha de comando claro.
Mãos a OBRA (siiiiiimmples)

aptitude install php-apc
reinicie o apache2
sudo service apache2 restart
pronto, módulo ativado e funcionando!

estatisticas

Este módulo vem ainda com um sistema de estatísticas bem bacana, para instalar rode o seguinte:
gzip -dc /usr/share/doc/php-apc/apc.php.gz > /caminho/para/apc.php
Boa né? Valeuuu

sexta-feira, 2 de dezembro de 2011

Compactar e descompactar no console do Linux

Fala gente tudo bem? Estou meio sem tempo por conta do fim da facul e de umas mudanças em minha vida profissional. Mas hoje vou falar sobre algo que havia prometido... COMO COMPACTAR arquivos no console.


Apenas listar o conteúdo

  tar -tvf wordpress-3.2.1-pt_BR.tar.gz

Descompactando tar.bz2

tar jxvf pacote.tar.bz2
Tem uma variação legal que é inciar o local onde você quer descompactar (você tem que ter permissões de escrita no diretório de destino)
tar jxvf pacote.tar.bz2 -C $HOME/tmp
tar jxvfC pacote.tar.bz2  $HOME/tmp


Extraindo apenas um arquivo

tar -xzvf wordpress-3.2.1-pt_BR.tar.gz wordpress/wp-admin/media-new.php


descompactando e descartando a pasta pai

tar jxvf pacote.tar.bz2 --strip 1
veja também: http://ur1.ca/0253w from stack overflow


criando um pacote tar.bz2

tar cjvf nome.tar.bz2 ./pasta


listando o conteúdo de um pacote tar

tar -tf conf-sys.21-08-2009-113639.tar.bz2  | awk '{print $6}'


Empacotar arquivos locais em um host remoto

tar -czf - * | ssh example.com "cat > files.tar.gz"
 
tar cjvf - ./instal-dbdesigner | ssh srvescola 'cat >  install-DBdesigner.tar.bz2'
criar pacote tar.gztar czvf nomedopacote.tar.gz /pasta
extrair pacote tar.gztar zxvf pacote.tar.gz [ -C /caminho/opcional/para/extracao/ ]
criar pacote tar.bz2tar cjvf nomedopacote.tar.bz /pasta
extrair pacote tar.bz2tar jxvf pacote.tar.bz2 -C /pasta/

Compactando tudo menos pastas

tar -cvzf arch.tgz $(find /path/dir -not -type d)
 
tar -cvf /path/dir.tar /path/dir* --exclude "/path/dir/name" --exclude "/path/dir/opt"
 
# entrei como root no diretório /var/chache/apt/archives
tar -cjvf pacotes.tar.bz2 $(ls *.deb)


como construir um pacote tar do stdin?

Qualquer comando que produza uma lista de arquivos pode ser usado
tar cvzf archive.tgz `ls -1 *`

criando pacotes tar com 7z

tar cf - /path/to/data | 7z a -si archivename.tar.7z
Using 7z to create archives is OK, but when you use tar, you preserve all file-specific information such as ownership, perms, etc. If that's important to you, this is a better way to do it.


para instalar o 7zip no ubuntu faça

sudo apt-get install p7zip 7zip-full p7zip-rar lzma lzma-dev
 
# demais descompactadores
# descompactadores
apt-get install -y unace rar unrar zip unzip p7zip-full p7zip-rar sharutils uudeview mpack lha arj cabextract file-roller

Referências