quarta-feira, 23 de novembro de 2011

Criando banco e usuário no mysql

Quando você configurar uma aplicação usando mysql é uma boa ideia criar um usuário específico para esta aplicação.
A primeir coisa que deve ser feita é criar um banco para a aplicação:

mysql> CREATE DATABASE meu_site;
Antes de criarmos o usuário, precisamos criar uma senha para ele. É sempre bom ter uma senha aleatório para dificultar o acesso. No Linux é possível gerar conjuntos de caracteres aleatórios com o seguinte comando:

$ < /dev/urandom tr -dc A-Za-z0-9 | head -c16; echo
$ z3Gstp4baTeK739r

Assim teremos uma senha aleatória de 16 caracteres formada por letras (maiúsculas e minúsculas) e números. Com a senha em mãos, podemos criar o usuário:

mysql> USE meu_site;
mysql> CREATE USER 'meu_usuario'@'localhost' IDENTIFIED BY 'z3Gstp4baTeK739r'

Agora precisamos definir os privilégios que este usuário terá em relação ao nosso banco:

mysql> GRANT ALL ON meu_site.* TO 'meu_usuario'@'localhost';
mysql> FLUSH PRIVILEGES;

Desta forma estamos garantindo todos as permissões para o usuário meu_usuario no banco meu_site (também é possível garantir apenas algumas operações, como SELECT e UPDATE, caso o usuário não seja necessário acesso completo ao banco).

Você pode testar se está tudo certo tentando acessar o mysql com este usuário:

$ mysql -u meu_usuario -pz3Gstp4baTeK739r
A opção -p indica que você vai inserir a senha, caso a senha não seja colocada no comando, ela será pedida. (perceba que entre o -p e a senha não há espaço).

Alterando o hostname no ubuntu

Para alterar o hostname (nome da máquina) no Ubuntu, a maneira mais fácil é usuando o comando hostname (como root):

$ sudo hostname mordor
Se você executar o comando sem nehum argumento, ele vai retornar o hostname atual:

$ hostname
mordor

Mas essa mudança de nome é temporária, se você iniciar uma nova sessão, ele voltará ao nome antigo.
Para alterar permanentemente o nome da máquina você precisa alterar o arquivo /etc/hostname (é necessário a permissão de root).

# echo 'mordor' > /etc/hostname
O nome não vai ser atualizado imediatamente, pois esse arquivo só é lido no boot. Caso você não queira (ou não possa) reiniciar a máquina para atualizar o nome, basta executa manualmente o script que altera o nome:

$ sudo service hostname start
Agora o nome está atualizado de forma permanente :)

Habilitando log no HAproxy

Para habilitar o log no haproxy, altere o arquivo de configuração que o seu haproxy está usando (normalmente haproxy.cfg) e insira as seguintes linhas:

option httplog
log 127.0.0.1 local1 debug

Deve ficar algo parecido com isso (este é só um trecho da configuração):

frontend all 0.0.0.0:80
    timeout client 86400000
    option httplog
    log 127.0.0.1 local1 debug

Perceba que aqui você não especifica o arquivo aonde o log será salvo, pois o haproxy envia o log para o um syslog server, que é quem irá gravar o log. Para configurar o syslog, crie um arquivo haproxy.conf no diretório /etc/rsyslog.d:

# touch /etc/rsyslog.d/haproxy.conf
E insira as senguites linhas nele:

$ModLoad imudp
$UDPServerRun 514
$UDPServerAddress 127.0.0.1
local1.* -/var/log/haproxy_1.log
& ~

Neste arquivo está especificado o local onde o log será salvo: /var/log/haproxy_1.log
Agora basta reiniciar o rsyslogd (como sudo):

# restart rsyslog
Altere as permissões do arquivo para que um usuário normal consiga lê-lo:

# chmod +r /var/log/haproxy_1.log
Para testar se o log está funcionando:

$ tail -f /var/log/haproxy_1.log

quinta-feira, 10 de novembro de 2011

Highlight CoffeeScript no Sublime-Text (Linux)

Por padrão, o Sublime Text 2 não vem com plugin para tratar arquivos CoffeeScript (extensão .coffee). Mas é bem fácil adicionar este suporte:
Nesta página do github você encontra o arquivo de plugin do coffeescript para o sublime (https://github.com/jashkenas/coffee-script-tmbundle/blob/master/Syntaxes/CoffeeScript.tmLanguage).
Para colocar no formato do pacotes do sublime, zip e renomeie para Coffeescript.sublime-package
$ zip Coffeescript.sublime-package CoffeeScript.tmLanguage
E coloque no diretório Pristine Packages do Sublime (no meu caso está em /usr/lib/sublime-text-2/Pristine Packages):
# mv Coffeescript.sublime-package /usr/lib/sublime-text-2/Pristine\ Packages/
Pronto, basta reiniciar o Sublime para o plugin funcionar.
Um script para fazer os passos automagicamente:
# wget https://raw.github.com/jashkenas/coffee-script-tmbundle/master/Syntaxes/CoffeeScript.tmLanguage && zip Coffeescript.sublime-package CoffeeScript.tmLanguage && mv Coffeescript.sublime-package /usr/lib/sublime-text-2/Pristine\ Packages/