Pasos para instalar Redmine en producción.
Requisitos :
- Ubuntu 18.04
- Mysql 5.7
- Ruby 3.1.2
- Bundler 2.3.20
- Redmine 5.0
Procedimiento de instalación
Actualizar SO e instalar algunas dependencias:
sudo apt install curl libmysqlclient-dev coffeescript gawk g++ gcc make libreadline6-dev libssl-dev libyaml-dev autoconf libgmp-dev libgdbm-dev libncurses5-dev automake libtool bison pkg-config libffi-dev
Crear usuario y base de datos:
CREATE DATABASE redmine CHARACTER SET utf8;
CREATE USER ‘redmine’@’localhost’ IDENTIFIED BY ‘pass’;
GRANT ALL PRIVILEGES ON redmine.* TO ‘redmine’@’localhost’;
Conexión a la base de datos desde el proyecto: Copiar el archivo config/database.yml.example a config/database.yml y editar el environment de producción. Ej.
production:
adapter: mysql2
database: redmine
host: localhost
username: redmine
password: «pass»
Instalar dependencias del proyecto: en la raíz del proyecto (donde se encuentra el archivo Gemfile) ejecutar el comando
bundle install
Instalar gema passenger:
gem install passenger
Variable de entorno para Rails:
echo ‘export RAILS_ENV=production’ >> ~/.bashrc
source ~/.bashrc
Generar token para la session store: Copiar token generado, lo utilizaremos mas adelante.
bundle exec rake generate_secret_token
Generar los esquemas en la base de datos:
RAILS_ENV=production bundle exec rake db:migrate
Generar datos por defecto:
RAILS_ENV=production bundle exec rake redmine:load_default_data
Permisos para archivos de sistema utilizados por redmine;
mkdir -p tmp tmp/pdf public/plugin_assets
sudo chown -R usuario:grupo files log tmp public/plugin_assets
sudo chmod -R 755 files log tmp public/plugin_assets
Instalar dependencias de passenger:
sudo apt install apache2 libcurl4-openssl-dev apache2-dev libapr1-dev libaprutil1-dev
Agregar el token al archivo config/secrets.yml: (https://guides.rubyonrails.org/upgrading_ruby_on_rails.html#config-secrets-yml)
production:
secret_key_base: <%= ENV[«SECRET_KEY_BASE»] %> | token generado
Instalar el modulo passenger de apache:
sudo a2enmod headers
passenger-install-apache2-module
Al final de la instalación tendremos que copiar una configuración para paseadero al final del archivo en /etc/apache2/apache2.conf, dependiendo de la versión de Ruby el código generado debería ser algo parecido a:
LoadModule passenger_module /home/mjrios/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/passenger-6.0.14/buildout/apache2/mod_passenger.so
PassengerRoot /home/mjrios/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/passenger-6.0.14 PassengerDefaultRuby /home/mjrios/.rbenv/versions/3.1.2/bin/ruby
Configurar virtual hosts en apache:
Ejemplo:
PassengerMaxPoolSize 4
<VirtualHost *:80>
Header add Strict-Transport-Security max-age=31536000
DocumentRoot /var/www/html/redmine/public
<Directory var/www/html/redmine/public>
Header unset ETag
AllowOverride all
Options -MultiViews
Order allow,deny
Allow from all
Require all granted
</Directory>
PassengerMinInstances 2
</VirtualHost>