sexta-feira, 1 de junho de 2018

Instalar Redis no Ubuntu 18

Redis é um serviço de armazenamento de dados na memória que utiliza o paradigma valor-chave.
Ele é conhecido por sua flexibilidade, desempenho e amplo suporte a idiomas.
Mostraremos neste post como instalar e configurar o Redis em um servidor Ubuntu 18.
Consideramos que você já tenha feito download e instalado o Ubuntu-server e que tenha acesso de root ao servidor (ou vm).

Instalação

Para obter a versão mais recente do Redis, compilamos e instalamos do código-fonte. Assim, precisamos satisfazer as dependências de compilação instalando o meta-pacote build-essential e tcl dos repositórios do Ubuntu, usando os comandos:

$ sudo apt-get update
$ sudo apt-get install tcl build-essencial

Em seguida, podemos começar a instalar o Redis, começando pelo download.
Extraímos o código-fonte no nosso servidor, por exemplo no diretório /tmp.
Vamos baixar a versão estável do Redis.

$ cd /tmp
$ curl -O http://download.redis.io/redis-stable.tar.gz
$ tar xzvf redis-stable.tar.gz
$ cd redis-stable

Para compilar os passos são simples:

$ make
$ make test
$ sudo make install

Configuração

Com o Redis instalado, precisamos agora fazer uma configuração básica para ele rodar.
Para começar, precisamos criar um diretório de configuração cujo padrão é /etc/redis, que pode ser criado digitando:

$ sudo mkdir /etc/redis
$ sudo cp /tmp/redis-stable/redis.conf /etc/redis
$ sudo vi /etc/redis/redis.conf

1º) No arquivo, localize a diretiva supervised que por default é definido como não. Como estamos executando um sistema operacional que usa o init systemd, podemos mudar isso para systemd.

2º) O próximo passo é alterar o parâmetro dir que especifica o diretório que o Redis usará para despejar dados persistentes. Precisamos escolher um local onde o Redis tenha permissão de gravação e que não seja visualizável por usuários normais. Nós vamos usar o /var/lib/redis que criaremos manualmente.

3) Criar usuários, grupos e diretórios:

$ sudo adduser --system --group --no-create-home redis
$ sudo mkdir /var/lib/redis
$ sudo chown redis:redis /var/lib/redis
$ sudo chmod 770 /var/lib/redis

4) Criar o arquivo de inicialização /etc/systemd/system/redis.service:
[Unit]
Description=Redis In-Memory Data Store
After=network.target

[Service]
User=redis
Group=redis
ExecStart=/usr/local/bin/redis-server /etc/redis/redis.conf
ExecStop=/usr/local/bin/redis-cli shutdown
Restart=always

[Install]
WantedBy=multi-user.target

Testando

Vamos iniciar o serviço com o comando mostrado na primeira linha abaixo e verifique se o serviço não teve erros executando a segunda linha:
$ sudo systemctl start redis
$ sudo systemctl status redis
Você verá um resultado semelhante ao abaixo. Note na última linha que está dizendo "Ready to accept connections", ou seja, pronta para receber conexões.


Para habilitar que o Redis inicie com o Boot

Se todos os seus testes funcionarem e você desejar iniciar o Redis automaticamente quando o servidor inicializar, digite:
$ sudo systemctl enable redis




sexta-feira, 11 de maio de 2018

Como colocar o PyCharm no launcher do Ubuntu

Atualizei recentemente meu pycharm para a versão 2018.1.
A atualização basicamente consiste em baixar do site da Jetbrains dedicado ao PyCharm, e depois do download basta descompactar e mover o diretório criado para você você achar mais adequado.
No meu caso está em ~/bin/pycharm.
Para rodar o pycharm é só executar o script pycharm.sh que está no diretório bin dentro do diretório do pycharm, isto é, no meu caso ~/bin/pycharm/bin/pycharm.sh.

Eu queria ter o ícone do pycharm no launcher (aquela barra lateral do Ubuntu) para ficar mais fácil chamá-lo. O PyCharm pode criar seu próprio ícone de lançador, contudo ele não é cria por padrão.
A gente tem que executar alguns comandos:

1) Comece chamando o PyCharm em um terminal.


2) No menu Ferramentas, selecione "Criar entrada da área de trabalho ..."

3) Se você já tem o PyCharm, ele irá perguntar se você quer reaproveitar as configurações da versão anterior:


4) Marque a caixa correspondente, se você quiser o lançador para todos os usuários. Se você selecionou "Criar entrada para todos os usuários", será solicitada sua senha e seu usuário deve estar entre os sudoers.

5) Você precisa fechar o Pycharm. Você verá na parte de baixo da tela do programa que ele terminou a instalação e criou a entrada de desktop.


6) Você agora irá encontrar o PyCharm no Unity Dash. Clique no ícone para abrir o PyCharm novamente.


7) Ao abrir o Pycharm novamente você pode fixá-lo na barra lateral clicando com o botão direito sobre o ícone.



domingo, 6 de maio de 2018

Como instalar o kernel do Javascript (Node.js) no Jupyter do Windows

Neste vídeo considero que você já tem o Jupyter instalado no seu Windows.
Kernel é o nome que o Jupyter dá para os módulos que acrescentam linguagens no seu ambiente.
Para achar onde está o kernel basta procurar no google "jupyter javascript". Vamos utilizar o kernel que aparece na primeira opção, que é o "n-riesco/javascript":

Se você clicar no link, será enviado para a página no GitHub. Mais ou menos descendo 70% da página, você achará as instruções para instalação no Windows que mostramos abaixo:

No meu caso estou utilizando a versão oficial do Python para Windows, contudo o processo de instalação descrito acima não funcionaram no meu Windows 10. Os comandos são parecidos e eu mostro abaixo:

python -m pip install --upgrade pip
pip install npm
npm install -g ijavascript
ijsinstall
Se você não tiver o jupiter ainda, basta alterar a segunda linha de comando acima para a linha abaixo:

pip install jupyter npm
Agora o módulo está instalado. Podemos abrir o jupyter. Fazemos isto na linha de comando como mostramos abaixo:

O navegador irá abrir a página do notebook do Jupyter e você poderá criar um notebook com Javascript:

terça-feira, 1 de maio de 2018

Rodando vários cron jobs em uma linha

Neste post mostro como executar dois (ou mais) comandos consecutivamente, não simultaneamente, utilizando uma linha do crontab.
Um crontab normalmente executa um comando em cada linha.
Por exemplo:

# m h dom mon dow command
01 00 * * * /usr/sbin/meu_programa1
05 00 * * * /usr/sbin/meu_programa2
00 01 * * * /usr/sbin/meu_programa3
00 02 * * * /usr/sbin/meu_programa4

No exemplo acima mostramos como criar quatro tarefas que são executadas às 00:01, às 00:05, às 01:00 e às 02:00. Contudo imagine que queremos que meu_programa2 seja executado depois de meu_programa1 e meu_programa1 pode durar menos ou um pouco mais de cinco minutos.
Usando a configuração acima, não temos esta garantia. Assim teríamos que alterar a segunda linha para garantir um intervalo maior entre os dois programas.

Em vez disso, posso executar essas tarefas cron uma após a outra, colocando && entre cada tarefa. Assim o nosso exemplo ficaria:

# m h dom mon dow command
01 00 * * * /usr/sbin/meu_programa1 && /usr/sbin/meu_programa2
01 01 * * * /usr/sbin/meu_programa3
01 02 * * * /usr/sbin/meu_programa4

Desta forma as duas primeiras são feitas consecutivamente. Assim que acabar meu_programa1, a segunda tarefa (meu_programa2) é executada.

Isso é útil para situações onde queremos que as tarefas sejam executadas uma depois da outra, ou
(1) porque existe uma dependência entre elas, isto é, a tarefa executada pelo primeiro programa é uma entrada do segundo programa ou
(2) utiliza um recurso de hardware (por exemplo, é muito intensiva em I/O ou gasta muito espaço em disco para executar)  que é importante que a primeira tarefa acabe antes da segunda começar.

Reparando o boot no Ubuntu

Caso você não consiga mais acessar o seu Ubuntu porque um erro para a inicialização (ou o boot para no prompt grub>), você pode reparar a inicialização utilizando uma ferramenta bastante interessante e que torna o processo bem simples: Boot Repair (a página do projeto é https://sourceforge.net/p/boot-repair/home/pt/).

Para instalar o Boot Repair no Ubuntu é necessário instalar um novo repositório. Esta instalação permite ainda que você receba automaticamente as futuras atualizações dele.

Vamos iniciar o computador com um pendrive que tem o Ubuntu live, selecionando a opção de Experimentar o Ubuntu como mostrado abaixo:



Quando o Ubuntu tiver carregado, precisamos chamar um terminal (no Unity use as teclas CTRL + ALT + T) ou podemos pesquisar em aplicativos como abaixo:


Agora vamos adicione o repositório do programa com este comando:



$ sudo add-apt-repository ppa:yannubuntu/boot-repair


Se você estiver utilizando o Ubuntu 18, não é necessário atualizar o APT com o comando, contudo para versões 17 ou inferior, você precisa executar:
$ sudo apt-get -y update
Tendo feito a atualização (caso necessário), use o comando abaixo para instalar o programa:
$ sudo apt-get -y install boot-repair

Pronto agora basta rodar o programa (digitando a linha abaixo no terminal) e selecionar a opção de reparação recomendada:
$ boot-repair

Agora o programa irá rodar e quando terminar irá mostrar o resultado da reparação. Se seu HD estiver ok, acredito que você não terá problemas e receberá uma mensagem como a mostrada abaixo:

É só dar reboot.


domingo, 22 de abril de 2018

Instando o servidor e/ou cliente SSH no Ubuntu

O OpenSSH implementa o protocolo Secure Shell (SSH) para controlar remotamente ou transferir arquivos entre computadores. O OpenSSH fornece um daemon de servidor e ferramentas de cliente para facilitar o controle remoto seguro e criptografado e as operações de transferência de arquivos, substituindo efetivamente as ferramentas legadas, como FTP e Telnet. Estas ferramentas legadas são inseguras e transmitem a senha do usuário em texto não criptografado quando usadas.

O sshd observa as ferramentas de clientes para qualquer das ferramentas do cliente. Quando uma requisição de conexão ocorre, sshd inicia uma conexão correta dependendo do tipo de ferramenta de conexão do cliente. Por exemplo, se um computador remoto conecta-se a um cliente ssh, o servidor OpenSSH inicia o controle remoto da sala após autenticar. OpenSSH serve vários métodos de autenticação, incluindo a simples, chave pública e tiquetes Kerberos.

A instalação do servidor e cliente OpenSSH é simples. Para instalá-los no seu computador, use os seguintes comandos no terminal. O primeiro instala o cliente e o segundo instala o servidor. Note que você pode instalar um sem o outro.

$ sudo apt install -y openssh-client
$ sudo apt install -y openssh-server
Pronto, é só isto!
O servidor fica ativo automaticamente, aceitando conexões na porta 22.

O arquivo /etc/ssh/sshd_config contém as configurações do servidor SSH.

Parâmetros

Alguns parâmetros que você pode querer modificar:
Port 22
Altere o valor (default é 22) para definir a porta que seu computador aceitará a conexão. Se você trocou isto (por exemplo para 2222) vai ter que fazer a chamada do cliente usando
ssh -p 2222 <usuário>@<servidor>
O ssh server normalmente só permite conexões do usuário root se estiver utilizando um certificado. O parâmetro que controla isto é mostrado abaixo. O valor default é só permitir login do root usando certificado como mostrado:
PermitRootLogin prohibit-password
Você pode trocar o valor deste parâmetro para no e assim impedir qualquer conexão remota via SSH do usuário root, ou trocar para yes e aceitar conexão do root solicitando somente a senha digitada pelo teclado.

Imagine por exemplo que você tem um servidor que está conectado na rede interna (dentro da empresa) e na rede externa (Internet). Você quer impedir que o SSH aceite conexões da Internet, reduzindo assim a possibilidade de ataques. 
Ao instalar o OpenSSH, o servidor ssh se conectará a todos os endereços de rede disponíveis.
Para configurar o OpenSSH para escutar em uma interface específica, você precisará alterar o parâmetro:
#ListenAddress ::
#ListenAddress 0.0.0.0
Note que as duas entradas default, mostradas acima, estão comentadas.
Para trocar para um endereço, por exemplo, 192.168.0.1, colocamos este parâmetro como:
ListenAddress 192.168.0.1
Para as alterações passarem a valer, você precisa reiniciar o serviço do SSH server usando o comando:
$ sudo service ssh restart

Usando cliente SSH com chave DSA no Ubuntu 16+

Quando migrei meu computador do Ubuntu 14.04 LTS para o 16.04LTS, tive uma surpresa: não conseguia acessar os computadores remotos que eu administrava via SSH. O que aconteceu?

Com o Ubuntu 16, vem também uma nova versão do OpenSSH que é atualizado para o OpenSSH 7.0. Nas notas da versão do OpenSSH 7.0 podemos ver que "O suporte para as chaves de host e de usuário do ssh-dss está desativado por padrão em tempo de execução". Isto quer dizer que apesar de você ter as chaves no diretório .ssh, o cliente ssh do seu computador não vai nem ligar para elas.

A solução é bastante simples. Basta adicionar a seguinte linha ao arquivo ~/.ssh/config em cada máquina cliente, isto é, em cada computador onde você executa o cliente SSH. No meu caso, era somente na máquina recém atualizada.

PubkeyAcceptedKeyTypes=+ssh-dss

OBS:

Se você atualizou algum servidor e ele esteja utilizando o OpenSSH 7.0 ou mais recente, você também precisará incluir a linha mostrada acima autorizando o uso do DSA no arquivo de configuração do openssh-server. Este arquivo é /etc/ssh/sshd_config. Como no meu caso, minha estação também tem o servidor SSH habilitado (para eu poder mexer nela remotamente), eu tive que acrescentar a linha também neste arquivo. Você precisa reiniciar o serviço para que a alteração funcione:

service ssh restart



Transforme seu Raspberry Pi em um Servidor de Desenvolvimento Completo (Debian 13 Trixie, ARM64)

  O Raspberry Pi evoluiu muito desde seus primeiros dias como uma placa para experimentos. Hoje, com o Debian 13 (Trixie) rodando em ARM64, ...