Como instalar o Redmine no Ubuntu 16.04

O Redmine é uma ferramenta de gerenciamento de projetos gratuita e de código aberto baseada na Web. 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 baseado em funções e um sistema de rastreamento de problemas. Ele também possui suporte a gráficos e calendário de Gantt, gerenciamento de arquivos, por wiki e fórum do projeto, além de muitos outros recursos. Ele suporta sistemas de controle de versão como Git, SVN ou CVS. Também é multilíngue, suportando até 49 idiomas.

Pré-requisitos

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

Neste tutorial, usaremos 192.168.1.1como endereço IP público e redmine.example.com como nome de domínio apontado para a instância do Vultr. Certifique-se de substituir todas as ocorrências do exemplo de nome de domínio e endereço IP pelo nome real.

Atualize seu sistema base usando o guia Como atualizar o Ubuntu 16.04 . Depois que seu sistema for atualizado, continue com a instalação das dependências.

Instale o Apache

O Redmine é escrito em Ruby on Rails, portanto, exigiremos que o Phusion Passenger se integre ao servidor da web Apache para atender ao aplicativo.

Instale o Apache.

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

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

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

Instale 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 Ubuntu padrão contém uma versão antiga do PostgreSQL; portanto, 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 ative-o automaticamente no momento da inicialização.

sudo systemctl start postgresql
sudo systemctl enable postgresql

Mude a senha do usuário padrão do PostgreSQL.

sudo passwd postgres

Efetue 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

Instalaremos a versão mais recente do Ruby usando o RVM. É usado para instalar e gerenciar várias 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 Ruby em geral, mudaremos temporariamente para o usuário root.

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 versão mais recente do Ruby.

rvm install 2.5.1

Nota: Se você estiver usando uma versão diferente do Ruby, atualize o caminho do Ruby adequadamente.

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 semelhante.

root@vultr:~# ruby -v
ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-linux]

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

gem install bundler

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

Instalar passageiro

Execute o seguinte comando para instalar o Passenger.

gem install passenger

Instale o módulo Apache para 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 solicitará que você selecione o idioma que você usará. Como nosso aplicativo está escrito em Ruby on Rails, selecione Ruby no menu e pressione ENTERpara continuar.

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 agora verificará os requisitos. O instalador não encontrará dependências ausentes e prosseguirá automaticamente para compilar e instalar o módulo.

Depois que o módulo estiver instalado, você será solicitado a adicionar 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.

Ignoraremos isso por enquanto e o concluiremos posteriormente no tutorial. Pressione ENTERpara pular esta etapa.

Por fim, 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 Apache, faça o download e instale o Redmine. Alterne para o sudousuário novamente, pois não precisamos executar mais nenhum comando usando o rootusuário.

exit

Instale o Redmine

É recomendável usar um usuário sem privilégios para executar o aplicativo para mantê-lo isolado do restante do sistema. Crie um novo usuário para o Redmine e alterne 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 oficial de download do Redmine .

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

Extraia o arquivo morto 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 está configurado para o MySQL. Encontre as configurações para produção e desenvolvimento, e teste que 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 comentadas, com production configuração para o postgresql adaptador. Remova o comentário dessas 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 requeridas 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 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 opção padrão é inglês; escolha de acordo com sua preferência.

[redmine@vultr 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á concluída. 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

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

Configurar Apache

Adicione o módulo Passenger para Apache ao 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 de host virtual para o 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 pelo seu nome de domínio real. Além disso, verifique se o caminho para PassengerRoot 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.

user@vultr:~$ 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 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 do Redmine http://redmine.example.com. Entre com o nome de usuário admine a senha admin. No seu primeiro login, o Redmine solicitará que você atualize a senha.

Protegendo o Apache com Let's Encrypt SSL

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

Adicione o repositório Certbot.

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

Instale o Certbot, que é o aplicativo cliente do Let's Encrypt CA.

sudo apt -y install certbot

Nota: Para obter certificados da Let's Encrypt CA, o domínio para o qual os certificados devem ser gerados deve estar apontado para o servidor. Caso contrário, faça as alterações necessárias nos registros DNS do domínio e aguarde a propagação do DNS 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

É provável que os certificados gerados sejam armazenados /etc/letsencrypt/live/redmine.example.com/. O certificado SSL será armazenado como cert.pem e a chave privada será armazenada como privkey.pem.

Os certificados Let's Encrypt 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 acima de Cron será executado todos os dias às 5:30 da manhã. Se o certificado estiver vencido, ele será renovado automaticamente.

Ative o módulo SSL para 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 tenham efeito.

sudo systemctl restart apache2

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

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



Leave a Comment

A IA pode lutar contra o aumento do número de ataques de ransomware

A IA pode lutar contra o aumento do número de ataques de ransomware

Os ataques de ransomware estão aumentando, mas a IA pode ajudar a lidar com os vírus de computador mais recentes? AI é a resposta? Leia aqui para saber se é AI boone ou bane

ReactOS: Este é o futuro do Windows?

ReactOS: Este é o futuro do Windows?

ReactOS, um sistema operacional de código aberto e gratuito está aqui com a versão mais recente. Será que ela pode atender às necessidades dos usuários modernos do Windows e derrubar a Microsoft? Vamos descobrir mais sobre esse estilo antigo, mas uma experiência de sistema operacional mais recente.

Fique conectado por meio do aplicativo WhatsApp Desktop 24 * 7

Fique conectado por meio do aplicativo WhatsApp Desktop 24 * 7

O Whatsapp finalmente lançou o aplicativo Desktop para usuários de Mac e Windows. Agora você pode acessar o Whatsapp do Windows ou Mac facilmente. Disponível para Windows 8+ e Mac OS 10.9+

Como a IA pode levar a automação de processos ao próximo nível?

Como a IA pode levar a automação de processos ao próximo nível?

Leia isto para saber como a Inteligência Artificial está se tornando popular entre as empresas de pequena escala e como está aumentando as probabilidades de fazê-las crescer e dar vantagem a seus concorrentes.

A atualização do suplemento do macOS Catalina 10.15.4 está causando mais problemas do que resolvendo

A atualização do suplemento do macOS Catalina 10.15.4 está causando mais problemas do que resolvendo

Recentemente, a Apple lançou o macOS Catalina 10.15.4, uma atualização suplementar para corrigir problemas, mas parece que a atualização está causando mais problemas, levando ao bloqueio de máquinas mac. Leia este artigo para saber mais

13 Ferramentas de Extração de Dados Comerciais de Big Data

13 Ferramentas de Extração de Dados Comerciais de Big Data

13 Ferramentas de Extração de Dados Comerciais de Big Data

O que é um sistema de arquivos de registro no diário e como ele funciona?

O que é um sistema de arquivos de registro no diário e como ele funciona?

Nosso computador armazena todos os dados de uma maneira organizada conhecida como sistema de arquivos Journaling. É um método eficiente que permite ao computador pesquisar e exibir arquivos assim que você clicar em search.https: //wethegeek.com/? P = 94116 & preview = true

Singularidade tecnológica: um futuro distante da civilização humana?

Singularidade tecnológica: um futuro distante da civilização humana?

À medida que a ciência evolui em um ritmo rápido, assumindo muitos de nossos esforços, os riscos de nos sujeitarmos a uma singularidade inexplicável também aumentam. Leia, o que a singularidade pode significar para nós.

Uma visão sobre 26 técnicas analíticas de Big Data: Parte 1

Uma visão sobre 26 técnicas analíticas de Big Data: Parte 1

Uma visão sobre 26 técnicas analíticas de Big Data: Parte 1

O impacto da inteligência artificial na saúde 2021

O impacto da inteligência artificial na saúde 2021

A IA na área da saúde deu grandes saltos nas últimas décadas. Portanto, o futuro da IA ​​na área da saúde ainda está crescendo dia a dia.