Skip to content

Instantly share code, notes, and snippets.

@erickpereira
Last active August 19, 2024 03:17
Show Gist options
  • Save erickpereira/b29bb17ddd63855e51ded8caf26c04fa to your computer and use it in GitHub Desktop.
Save erickpereira/b29bb17ddd63855e51ded8caf26c04fa to your computer and use it in GitHub Desktop.
Ubuntu 22.04 e Ruby on Rails

Ubuntu 22.04 e Ruby on Rails

Configuração para ambiente de desenvolvimento utilizando uma instalação limpa do Ubuntu 22.04

Minha opção pelo Ubuntu na versão 22.04 se deu pela dificuldade em instalar o PostgreSQL na versão 12. Como meu ambiente precisa ter a versão 12, e pessoalmente não sou adepto ao Docker, não consegui configurar corretamente o PostgreSQL 12 no Ubuntu 24.04.

Resumo da instalação

  • Ubuntu 22.04
  • Instalar pacotes básicos (vim, curl, git, ...)
  • Ruby on Rails com RVM

Configuração do Ubuntu

Atualizar o sistema:

sudo apt update && sudo apt upgrade

De cara, eu já baixo e instalo o Google Chrome

https://www.google.com/intl/pt-BR/chrome/browser-tools/
cd ~/Downloads
sudo dpkg -i google-chrome-stable_current_amd64.deb

Adicionar suporte a codecs de áudio e vídeo

sudo apt install ubuntu-restricted-extras

Instalar VLC (assistir um filme com um player melhorzinho né?!)

sudo apt install vlc

Instalar Gparted para poder gerenciar seus discos

sudo apt install gparted

Instalar o GIMP (gosto para edições simples e até para criar PDF's de imagens)

sudo apt install gimp

Instalar o qBittorrent (gosto desse cliente para baixar torrents)

sudo apt install qbittorrent

Instalar o Curl

sudo apt install curl

Instalar o Vim (gosto desse editor para mexer em arquivos do sistema)

sudo apt install vim

ALterar o swappiness

Vá até o final do arquivo e adicionar vm.swappiness=20 (gosto de usar com 20, me parece que desempenha melhor o sistema - tenho 32GB de Ram)

sudo vim /etc/sysctl.conf

Instalar o GIT

sudo apt install git

Instalar VSCode baixar o .deb em https://code.visualstudio.com/download

Considerando a pasta padrão para download como ~/Downlaods e também que o arquivo baixado hoje, 18/08/2024, foi o code_1.92.2-1723660989_amd64.deb

sudo dpkg -i code_1.92.2-1723660989_amd64.deb

Configuração das ferramentas para desenvolvimento

Eu gosto de utilizar o RVM para gerenciar minhas versões do ruby. Nada contra rbenv ou qualquer outra forma, mas particularmente prefiro o RVM. Assim como também prefiro utilizar o banco instalado nativamente. Já utilizei docker para isso, para Redis, mas prefiro tudo instalado no meu ambiente próprio.

PostgreSQL 12

Minha opção por utlizar a versão 12 do PostgreSQL foi por causa das necessidades do meu serviço. Todos os bancos em que trabalho são na versão 12, então para manter uma compatibilidade, optei por instalar essa versão.

A versão 12 não é a versão nativa dos pacotes que vem do Ubuntu 22.04. A versão disponível é a 14, então para instalar a versão 12 podemos seguir os diversos passos que tem em diversos tutoriais, mas existe um detalhe importante que nenhum tutorial presta atenção e que me fez perder um bom tempo até perceber. Vamos aos passos:

1 - Instalar algumas ferramentas para ajudar

sudo apt update && sudo apt -y install vim bash-completion wget

2 - Adicionar a chave GPG:

curl -fsSL https://www.postgresql.org/media/keys/ACCC4CF8.asc|sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/postgresql.gpg

3 Adicionar o repositório:

O detalhe é neste passo. Todos os tutorias não colocam a arquitetura (que no meu caso é amd64), que por padrão é i386. Mas para os pacotes do PostgreSQL 12, não tem disponível. Então, nunca dava certo. Nos tutorias, simplesmente é pedido para adicionar deb http://apt.postgresql.org.... mas não colocar a arquitetura!

echo "deb [arch=amd64] http://apt.postgresql.org/pub/repos/apt/ `lsb_release -cs`-pgdg main" |sudo tee  /etc/apt/sources.list.d/pgdg.list

4 - Atualizar seus pacotes:

sudo apt update

5 - Instalar os pacotes necessários:

sudo apt install postgresql-12 postgresql-client-12 libpq-dev

**6 - Após terminar a instalação dos pacotes e suas dependências, é possível verificar o status do postgres das seguintes formas:

sudo service postgresql status

ou

systemctl status postgresql.service

Nos 2 casos, a saída é a mesma:

● postgresql.service - PostgreSQL RDBMS
     Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled)
     Active: active (exited) since Sun 2024-08-18 19:16:30 -04; 2min 2s ago
   Main PID: 50687 (code=exited, status=0/SUCCESS)
        CPU: 1ms

Isso indica que o processo está rodando e o PostgreSQL está de pé!

7 - Atualizar a senha do usuário postgres:

sudo su - postgres
psql -c "alter user postgres with password 'postgres'"

Neste caso a senha escolhida foi postgres. Mas fique a vontade para escolher a senha que quiser!

Inicie o prompt do postgres:

psql

E mostre os detalhes de conexão:

\conninfo

A saída será:

You are connected to database "postgres" as user "postgres" via socket in "/var/run/postgresql" at port "5432".

Indicando que está conectado na porta padrão que é a 5432!

Se listar os bancos, devem existir 3: postgres, template0 e template1. Para sair do prompt do PostgreSQL:

\q

7 - Configurar o acesso ao banco: Por padrão, deixo ele ser acessado de qualquer lugar já que não tenho acesso externo para minha rede. Abra o arquivo de configuração:

sudo vim /etc/postgresql/12/main/postgresql.conf

Procure pela seção # - Connection Settings - e mude a próxima linha de:

#listen_addresses = 'localhost'         # what IP address(es) to listen on;

Para:

listen_addresses = '*'         # what IP address(es) to listen on;

Se quiser deixar somente acesso através da sua máquina, só descomente a linha removendo o #!

Salve o arquivo e reinicie o PostgreSQL:

sudo systemctl restart postgresql

PostgreSQL está feito!

JavaScript Runtime É preciso instalar um runtime de Javascript. No caso, sempre instalo o nodejs.

sudo apt install nodejs

RVM

No caso do RVM, existe o pacote de instalação para Ubuntu, mas gosto de instalar sem o pacote para que não fique instalado em um local que precise de sudo para acessar e fazer qualquer coisa (e não gosto de ficar dando permissão de escrita para pastas do sistema se não for com sudo). Seguindo o tutorial básico de instalação, adicione as chaves GPG:

gpg --keyserver keyserver.ubuntu.com --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB

Instale a versão estável do RVM:

\curl -sSL https://get.rvm.io | bash -s stable

No final do arquivo ~/.bashrc, adicione o seguinte comando para carregar o RVM sempre:

source /home/erick/.rvm/scripts/rvm

A pasta ai vai depender do seu usuário, no meu caso, minha home é /home/erick.

Por padrão, existe um problema ao rodar no Ubuntu 22.04 algum ruby mais antigo por causa da versão da Openssl, que no caso é a 3.0. Mesmo se instalar no rvm a versão 1.1 com o rvm pkg install opensll. Acaba acontecendo um problema de segmentação. O que eu fiz, foi instalar com os pacotes deb da versão 20.04 do ubuntu (a Focal). Baixe as 3, e instale na ordem: https://launchpad.net/ubuntu/+source/openssl/1.1.1f-1ubuntu2/+build/19186412/+files/libssl1.1_1.1.1f-1ubuntu2_amd64.deb https://launchpad.net/ubuntu/+source/openssl/1.1.1f-1ubuntu2/+build/19186412/+files/openssl_1.1.1f-1ubuntu2_amd64.deb https://launchpad.net/ubuntu/+source/openssl/1.1.1f-1ubuntu2/+build/19186412/+files/libssl-dev_1.1.1f-1ubuntu2_amd64.deb

E para instalar:

sudo dpkg -i libssl1.1_1.1.1f-1ubuntu2_amd64.deb
sudo dpkg -i openssl_1.1.1f-1ubuntu2_amd64.deb
sudo dpkg -i libssl-dev_1.1.1f-1ubuntu2_amd64.deb

Para verificar se foi instalado certo:

openssl version

A saída deve ser:

OpenSSL 1.1.1f  31 Mar 2020

LEMBRANDO!!!!

Se executar um sudo apt upgrade, irá atualizar de volta para a versão 3.0 do OpenSSL. Ai, caso instale um novo ruby, provavelmente irá dar problema.

Neste ponto, já deve estar totalmente funcional o ambiente para criar uma aplicação ou fazer clone da sua aplicação e continuar seu trabalho. No meu caso, só preciso configurar as chaves de ssh e pegar os repositórios onde trabalho.

Espero ter ajudado alguém!

Qualquer dúvida, sugestão, reclamação ou outro tipo de coisa, só me mandar ou comentar aqui!!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment