Como instalar o Redmine no Ubuntu 16.04

Você está aqui:
Tempo estimado de leitura: 7 min

Redmine é uma ferramenta de gerenciamento de projetos baseada na web, livre e de código aberto. Ele está escrito em Ruby on Rails e suporta vários servidores de banco de dados para armazenar o banco de dados. É um aplicativo rico em recursos que suporta vários projetos, ACL baseada em função e um sistema de rastreamento de problemas. Ele também tem suporte a gráficos e calendários de Gantt, gerenciamento de arquivos, wiki e fórum por projeto, bem como muitos outros recursos. Suporta sistemas de controle de versão, como Git, SVN ou CVS. É também multilingue, suportando até 49 idiomas.

Pré-requisitos

  • Uma instância do servidor Site & Site Ubuntu 16.04.
  • Um usuário sudo .
  • Um nome de domínio apontado para o servidor.

Para este tutorial, usaremos 192.168.1.1como o endereço IP público e redmine.example.com como o nome do domínio apontado para a instância do Vultr. Por favor, certifique-se de substituir todas as ocorrências do nome de domínio de exemplo e endereço IP com o atual.

Atualize seu sistema básico usando o guia Como atualizar o Ubuntu 16.04 . Depois que seu sistema tiver sido atualizado, prossiga para instalar as dependências.

Instalar o Apache

O Redmine é escrito em Ruby on Rails, portanto, será necessário que o Phusion Passenger integre-se ao servidor da Web Apache para servir o aplicativo.

Instale o Apache.

sudo apt -y install apache2 apache2-dev libcurl4-openssl-dev

Para construir o Ruby e o Passenger, precisaremos também de algumas ferramentas de desenvolvimento. Instale as ferramentas necessárias.

sudo apt -y install imagemagick libmagickwand-dev git build-essential automake libgmp-dev

Instalar o PostgreSQL

O Redmine suporta vários tipos de servidores de banco de dados, como MySQL, PostgreSQL e MSSQL. Neste tutorial, usaremos o PostgreSQL para hospedar o servidor de banco de dados Redmine.

O PostgreSQL é um sistema de banco de dados objeto-relacional. O repositório padrão do Ubuntu contém uma versão antiga do PostgreSQL, então adicione o repositório PostgreSQL ao sistema.

echo "deb http://apt.postgresql.org/pub/repos/apt/ xenial-pgdg main" | sudo tee /etc/apt/sources.list.d/pgdg.list
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
sudo apt update

Instale o servidor de banco de dados PostgreSQL.

sudo apt -y install postgresql

Inicie o servidor PostgreSQL e habilite-o para iniciar automaticamente no momento da inicialização.

sudo systemctl start postgresql
sudo systemctl enable postgresql

Altere a senha para o usuário padrão do PostgreSQL.

sudo passwd postgres

Faça o login como usuário do PostgreSQL.

sudo su - postgres

Crie um novo usuário do PostgreSQL para o Redmine.

createuser redmine

Você tem permissão para usar qualquer nome de usuário em vez de redmine. O PostgreSQL fornece o psql shell para executar consultas no banco de dados. Mude para o shell do PostgreSQL.

psql

Defina uma senha para o usuário recém-criado para o banco de dados Redmine.

ALTER USER redmine WITH ENCRYPTED password 'DBPassword';

Substitua DBPassword por uma senha segura. Crie um novo banco de dados para a instalação do Redmine.

CREATE DATABASE redmine WITH ENCODING='UTF8' OWNER=redmine;

Saia do psql shell.

\q

Mude para o sudo usuário.

exit

Instale mais algumas dependências necessárias do PostgreSQL.

sudo apt -y install libpqxx-dev protobuf-compiler

Instale o Ruby

Vamos instalar a versão mais recente do Ruby usando o RVM. É usado para instalar e gerenciar múltiplas versões do Ruby.

Adicione o repositório RVM.

sudo apt-add-repository -y ppa:rael-gc/rvm
sudo apt update

Instale o RVM.

sudo apt -y install rvm

Como precisamos instalar o sistema em todo o Ruby, vamos mudar para o usuário root temporariamente.

sudo -i

Atualize as variáveis ​​de ambiente.

echo "source /etc/profile.d/rvm.sh" | tee -a /etc/profile
source /etc/profile.d/rvm.sh

Instale a última versão do Ruby.

rvm install 2.5.1

Nota: Se você estiver usando uma versão diferente do Ruby, certifique-se de atualizar o caminho Ruby de acordo.

Use a versão instalada do Ruby.

rvm use 2.5.1 --default

Você pode verificar sua versão.

ruby -v

Você verá uma saída similar.

[email protected]:~# ruby -v
ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-linux]

Instalar bundler, que é o gerenciador de dependências do aplicativo Ruby.

gem install bundler

Ruby está agora instalado. Antes de instalarmos o Redmine, precisaremos instalar o Phusion Passenger.

Instalar o Passageiro

Execute o seguinte comando para instalar o Passenger.

gem install passenger

Instale o módulo do Apache para o Passenger.

passenger-install-apache2-module

O script do instalador fará algumas perguntas. Primeiro, ele fornecerá informações sobre o processo de instalação. Em seguida, ele pedirá que você selecione o idioma que você usará. Como nosso aplicativo está escrito em Ruby on Rails, selecione Ruby no menu e pressione ENTERpara prosseguir.

Which languages are you interested in?

Use <space> to select.
If the menu doesn't display correctly, press '!'

 ‣ ⬢  Ruby
   ⬢  Python
   ⬡  Node.js
   ⬡  Meteor

O instalador irá agora verificar os requisitos. O instalador não encontrará nenhuma dependência ausente e continuará automaticamente para compilar e instalar o módulo.

Depois que o módulo for instalado, ele solicitará que você adicione o módulo ao arquivo de configuração do Apache.

Almost there!

Please edit your Apache configuration file, and add these lines:

   LoadModule passenger_module /usr/share/rvm/gems/ruby-2.5.1/gems/passenger-5.2.3/buildout/apache2/mod_passenger.so
   <IfModule mod_passenger.c>
     PassengerRoot /usr/share/rvm/gems/ruby-2.5.1/gems/passenger-5.2.3
     PassengerDefaultRuby /usr/share/rvm/gems/ruby-2.5.1/wrappers/ruby
   </IfModule>

After you restart Apache, you are ready to deploy any number of web
applications on Apache, with a minimum amount of configuration!

Press ENTER when you are done editing.

Iremos ignorar isso por enquanto e concluiremos mais tarde no tutorial. Pressione ENTERpara pular este passo.

Finalmente, o script do instalador validará a instalação e você verá um aviso informando que o módulo Passenger não está especificado na configuração do Apache.

Validating installation...

 * Checking whether this Passenger install is in PATH... ✓
 * Checking whether there are no other Passenger installations... ✓
 * Checking whether Apache is installed... ✓
 * Checking whether the Passenger module is correctly configured in Apache... (!)

   You did not specify 'LoadModule passenger_module' in any of your Apache
   configuration files. Please paste the configuration snippet that this
   installer printed earlier, into one of your Apache configuration files, such
   as /etc/apache2/apache2.conf.


Detected 0 error(s), 1 warning(s).
Press ENTER to continue.

Agora que instalamos o módulo Passenger para o Apache, continue com o download e instale o Redmine. Mude para o sudousuário novamente, pois não precisamos executar mais comandos usando o rootusuário.

exit

Instalar Redmine

Recomenda-se usar um usuário não privilegiado para executar o aplicativo para mantê-lo isolado do resto do sistema. Crie um novo usuário para o Redmine e mude para o usuário recém-criado.

sudo adduser --disabled-password --gecos "Redmine User" redmine
sudo su - redmine

Faça o download da versão mais recente do Redmine na página de download oficial do Redmine .

cd ~
wget http://www.redmine.org/releases/redmine-3.4.4.tar.gz

Extraia o arquivo e renomeie o diretório por conveniência.

tar -xf redmine-*.tar.gz
mv redmine-*/ redmine/

Copie os arquivos de configuração de exemplo para seu local de produção.

cd redmine
cp config/configuration.yml.example config/configuration.yml
cp config/database.yml.example config/database.yml

Abra o arquivo de configuração do banco de dados que acabamos de copiar para inserir os detalhes do banco de dados.

nano config/database.yml

Por padrão, o arquivo de banco de dados é configurado para o MySQL. Encontre as configurações para produção e desenvolvimento e teste qual usa o adaptador MySQL. Comente todas essas linhas.

#production:
#  adapter: mysql2
#  database: redmine
#  host: localhost
#  username: root
#  password: ""
#  encoding: utf8

#development:
#  adapter: mysql2
#  database: redmine_development
#  host: localhost
#  username: root
#  password: ""
#  encoding: utf8

#test:
#  adapter: mysql2
#  database: redmine_test
#  host: localhost
#  username: root
#  password: ""
#  encoding: utf8

Furthur, encontre as linhas que são comentadas, tendo production configuração para o postgresql adaptador. Descomente essas linhas e atualize o nome do banco de dados e as credenciais do usuário. Certifique-se de usar o recuo correto, que é dois espaços.

production:
  adapter: postgresql
  database: redmine
  host: localhost
  username: redmine
  password: "DBPassword"

Configure o aplicativo para usar a configuração do PostgreSQL.

bundle config build.pg --with-pg-config=/usr/bin/pg_config

Instale as dependências exigidas pelo aplicativo.

bundle install --path vendor/bundle --without development test

Você verá a seguinte mensagem no final da instalação.

Installing roadie-rails 1.1.1
Bundle complete! 31 Gemfile dependencies, 55 gems now installed.
Gems in the groups development and test were not installed.
Bundled gems are installed into `./vendor/bundle`

O comando a seguir gera tokens secretos que são usados ​​para codificar os dados da sessão.

bundle exec rake generate_secret_token

Escreva o banco de dados PostgreSQL.

RAILS_ENV=production bundle exec rake db:migrate

Execute o seguinte comando, que grava os dados padrão no banco de dados PostgreSQL.

RAILS_ENV=production bundle exec rake redmine:load_default_data

O comando acima solicitará que você escolha o idioma padrão a ser usado com o aplicativo. A escolha padrão é o inglês; escolha de acordo com sua preferência.

[[email protected] redmine]$ RAILS_ENV=production bundle exec rake redmine:load_default_data

Select language: ar, az, bg, bs, ca, cs, da, de, el, en, en-GB, es, es-PA, et, eu, fa, fi, fr, gl, he, hr, hu, id, it, ja, ko, lt, lv, mk, mn, nl, no, pl, pt, pt-BR, ro, ru, sk, sl, sq, sr, sr-YU, sv, th, tr, uk, vi, zh, zh-TW [en]
====================================
Default configuration data loaded.

A instalação do aplicativo Redmine está terminada agora. Altere a propriedade e as permissões dos diretórios e arquivos.

mkdir -p tmp tmp/pdf public/plugin_assets
chown -R redmine:redmine files log tmp public/plugin_assets
chmod -R 755 files log tmp public/plugin_assets

Nós configuramos tudo o que precisamos do usuário não privilegiado. Volte para o sudo usuário executando su - <username>.

Configurar o Apache

Adicione o módulo Passenger para o Apache no arquivo de configuração do Apache. Isso carregará automaticamente o módulo Passenger.

echo "LoadModule passenger_module /usr/share/rvm/gems/ruby-2.5.1/gems/passenger-5.2.3/buildout/apache2/mod_passenger.so" | sudo tee -a /etc/apache2/apache2.conf

Nota: O caminho para o módulo Passenger pode mudar quando houver uma nova versão do Passenger. Para encontrar o caminho para o módulo, use o sudo find / -name mod_passenger.socomando.

Crie um novo arquivo host virtual para seu aplicativo Redmine.

sudo nano /etc/apache2/sites-available/redmine.conf

Preencha o arquivo com o seguinte conteúdo.

<VirtualHost *:80>
    ServerName redmine.example.com

    DocumentRoot /home/redmine/redmine/public

    PassengerRoot /usr/share/rvm/gems/ruby-2.5.1/gems/passenger-5.2.3
    PassengerDefaultRuby /usr/share/rvm/gems/ruby-2.5.1/wrappers/ruby
    PassengerUser redmine

    <Directory /home/redmine/redmine/public>
      Allow from all
      Options -MultiViews
      Require all granted
    </Directory>
</VirtualHost>

Certifique-se de substituir redmine.example.com por seu nome de domínio real. Além disso, verifique se o caminho para oPassengerRoot e PassengerDefaultRuby está correto. O caminho para os binários pode mudar quando houver uma nova versão do Ruby ou do Passenger. Para encontrar esses caminhos, execute o seguinte comando.

passenger-config about ruby-command

Você receberá a seguinte saída.

[email protected]:~$ passenger-config about ruby-command
passenger-config was invoked through the following Ruby interpreter:
  Command: /usr/share/rvm/gems/ruby-2.5.1/wrappers/ruby
  Version: ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-linux]
  To use in Apache: PassengerRuby /usr/share/rvm/gems/ruby-2.5.1/wrappers/ruby
  To use in Nginx : passenger_ruby /usr/share/rvm/gems/ruby-2.5.1/wrappers/ruby
  To use with Standalone: /usr/share/rvm/gems/ruby-2.5.1/wrappers/ruby /usr/share/rvm/gems/ruby-2.5.1/gems/passenger-5.2.3/bin/passenger start


## Notes for RVM users
Do you want to know which command to use for a different Ruby interpreter? 'rvm use' that Ruby interpreter, then re-run 'passenger-config about ruby-command'.

Depois que o arquivo do host virtual é criado. Ative a configuração.

sudo a2ensite redmine

Reinicie o servidor da web Apache.

sudo systemctl restart apache2

Agora você pode acessar sua interface Redmine http://redmine.example.com. Entre com o nome de usuário admine a senhaadmin. Em seu primeiro login, o Redmine solicitará que você atualize a senha.

Protegendo o Apache com o Let’s Encrypt SSL

Como a nossa instalação Redmine está em um servidor voltado para o público, é recomendável usar SSL para proteger a troca de dados do servidor.

Adicione o repositório do Certbot.

sudo add-apt-repository --yes ppa:certbot/certbot
sudo apt-get update

Instale o Certbot, que é o aplicativo cliente para o Let’s Encrypt CA.

sudo apt -y install certbot

Nota: Para obter certificados de Let’s Encrypt CA, o domínio para o qual os certificados serão gerados deve estar voltado para o servidor. Caso contrário, faça as alterações necessárias nos registros DNS do domínio e aguarde o DNS se propagar antes de fazer a solicitação de certificado novamente. O Certbot verifica a autoridade do domínio antes de fornecer os certificados.

Gere os certificados SSL.

sudo certbot certonly --webroot -w /home/redmine/redmine/public -d redmine.example.com

Os certificados gerados provavelmente serão armazenados em /etc/letsencrypt/live/redmine.example.com/. O certificado SSL será armazenado cert.pem e a chave privada será armazenada como privkey.pem.

Vamos Criptografar certificados expiram em 90 dias, portanto, é recomendável configurar a renovação automática dos certificados usando trabalhos Cron.

Abra o arquivo de trabalho Cron para o root usuário.

sudo crontab -e

Adicione a seguinte linha no final do arquivo.

30 5 * * * /usr/bin/certbot renew --quiet

O trabalho Cron acima será executado todos os dias às 5:30 da manhã. Se o certificado estiver vencido, ele será automaticamente renovado.

Ative o módulo SSL para o Apache.

sudo a2enmod ssl

Edite o arquivo do host virtual que criamos anteriormente para o Redmine.

sudo nano /etc/apache2/sites-available/redmine.conf

Modifique o arquivo host virtual para ser semelhante ao seguinte.

<VirtualHost *:80>
    ServerName redmine.example.com
    Redirect permanent / https://redmine.example.com/
</VirtualHost>

<VirtualHost *:443>
    ServerAdmin [email protected]
    ServerName redmine.example.com
    DocumentRoot "/home/redmine/redmine/public"
    <Directory "/home/redmine/redmine/public">
        Options None
        Require all granted
    </Directory>
    PassengerAppEnv production
    PassengerRoot /usr/share/rvm/gems/ruby-2.5.1/gems/passenger-5.2.3
    PassengerDefaultRuby /usr/share/rvm/gems/ruby-2.5.1/wrappers/ruby
    PassengerUser redmine
    PassengerHighPerformance on

    SSLEngine on
    SSLCertificateFile      /etc/letsencrypt/live/redmine.example.com/cert.pem
    SSLCertificateKeyFile   /etc/letsencrypt/live/redmine.example.com/privkey.pem
    SSLCertificateChainFile /etc/letsencrypt/live/redmine.example.com/chain.pem

    SSLProtocol             all -SSLv2 -SSLv3
    SSLHonorCipherOrder     on
    SSLCipherSuite          ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS

    <IfModule headers_module>
        Header always edit Set-Cookie ^(.*)$ $1;HttpOnly;Secure
        Header always set Strict-Transport-Security "max-age=15768000; includeSubDomains"
    </IfModule>
</VirtualHost>

Salve o arquivo e saia do editor.

Reinicie o Apache para que as alterações entrem em vigor.

sudo systemctl restart apache2

Agora você pode acessar Redmine HTTPS em https://redmine.example.com.

Parabéns, você instalou com sucesso o Redmine na sua instância do Ubuntu 16.04. Comece a desenvolver seu projeto criando ou importando seu projeto.

Esse artigo foi útil?
Não Gostei 0
Visualizações: 262

Ainda não Têm uma Conta?

Então Cadastre-se

Nome de Usuário*
E-mail*
Senha*
Confirmar Senha*

Já têm Uma Conta? Click Aqui.

Já tem uma Conta?

Ainda não tem Conta?