rtorrent + vacaciones = high upload ratio
No hay como dejar corriendo rtorrent durante las vacaciones para tener un alto ratio de upload con rtorrent

Crónica de una instalación anunciada…
Archive for February 2013
No hay como dejar corriendo rtorrent durante las vacaciones para tener un alto ratio de upload con rtorrent

Uno de los problemas cruciales que tiene instalar Redmine es lo jodidamente difícil de encontrar una buena guía que explique todos los pormenores, la culpa de todo esto no es de Redmine propiamente dicho sino de las dependencias y librerias necesarias no solamente para instalarlo sino también para mantenerlo actualizado con cada nueva versión disponible.
Y es muy común debido a que las librerias/dependencias/gems que se instalan generalmente se hacen desde el sistema de paquetes de cada distribución en vez de hacerlo desde el propio sistema interno que rubygems incorpora
Con las sucesivas instalaciones que he necesitado hacer he ido poco a poco afinando el proceso de instalación/upgrade de Redmine y el objetivo de este post es servir de ayuda memoria para mí y de guía general a cualquier sysadmin interesado en Redmine.
En el Wiki oficial de Redmine: Installing Redmine tienen lo básico y necesario para instalar Redmine.
Vemos en la siguiente tabla que para la versión 2.1.6 (la que estamos instalando en este tutorial) necesitamos ruby 1.8.7, rails 3.2.11 (se instala mas adelante), y rubygems 1.8.
Primero a lo primero instalar subversion, apache2, passenger, ruby & rubygems 1.8 (NO INSTALAR el paquete rake)
1 | :~# aptitude install subversion apache2 libapache2-mod-passenger libapache2-mod-fcgid ruby rubygems libmysqlclient15-dev libmagick9-dev |
:~# aptitude install subversion apache2 libapache2-mod-passenger libapache2-mod-fcgid ruby rubygems libmysqlclient15-dev libmagick9-dev
Cuando se instala Redmine, se utilizan varias aplicaciones que vienen con ruby, rubygems y que también se pueden instalar como paquetes aparte, tal es el caso de gem y rake que NO debemos instalar ya que usaremos el propio binario que se instaló con rubygems.
Para evitar tener que hacer links simbólicos manualmente a /usr/bin Debian incorpora una excelente utilidad en el paquete dpkg que se llama update-alternatives que se utiliza para establecer el valor por defecto de un ejecutable que proporcionan o pueden proporcionar diferentes aplicaciones.
En nuestro caso lo utilizaremos para los binarios gem, con el cual instalaremos rake.
1 2 3 4 5 6 7 8 9 10 11 | :~# update-alternatives --install /usr/bin/gem gem /usr/bin/gem1.8 180 update-alternatives: using /usr/bin/gem1.8 to provide /usr/bin/gem (gem) in auto mode. :~# gem install rake Successfully installed rake-10.0.3 1 gem installed Installing ri documentation for rake-10.0.3... Installing RDoc documentation for rake-10.0.3... :~# update-alternatives --install /usr/bin/rake rake /var/lib/gems/1.8/bin/rake 180 update-alternatives: using /var/lib/gems/1.8/bin/rake to provide /usr/bin/rake (rake) in auto mode. |
:~# update-alternatives --install /usr/bin/gem gem /usr/bin/gem1.8 180 update-alternatives: using /usr/bin/gem1.8 to provide /usr/bin/gem (gem) in auto mode. :~# gem install rake Successfully installed rake-10.0.3 1 gem installed Installing ri documentation for rake-10.0.3... Installing RDoc documentation for rake-10.0.3... :~# update-alternatives --install /usr/bin/rake rake /var/lib/gems/1.8/bin/rake 180 update-alternatives: using /var/lib/gems/1.8/bin/rake to provide /usr/bin/rake (rake) in auto mode.
Bajamos la versión 2.1.6 de Redmine (lo pueden instalar donde quieran, yo lo estoy haciendo en /var/lib/redmine)
1 2 | :~# cd /var/lib :/var/lib# svn co http://svn.redmine.org/redmine/branches/2.1-stable redmine/ |
:~# cd /var/lib :/var/lib# svn co http://svn.redmine.org/redmine/branches/2.1-stable redmine/
Ahora que tenemos Redmine descargado haremos un repaso por los archivos que necesitaremos modificar
Está en el raiz de redmine, en nuestro ejemplo en /var/lib/redmine/Gemfile, se definen aqui qué gems o dependencias se necesitan para poder instalar Redmine y aconsejo editarlo y eliminar las gems que no vamos a utilizar.
Por ejemplo, si no necesitamos soporte para OpenID perfectamente podemos eliminar el bloque correspondiente:
1 2 3 4 5 | # Optional gem for OpenID authentication group :openid do gem "ruby-openid", "~> 2.1.4", :require => "openid" gem "rack-openid" end |
# Optional gem for OpenID authentication group :openid do gem "ruby-openid", "~> 2.1.4", :require => "openid" gem "rack-openid" end
Lo mismo si no necesitamos soporte PostgreSQL ni SQLite
1 2 3 4 5 6 7 8 9 10 | # Database gems platforms :mri, :mingw do group :postgresql do gem "pg", ">= 0.11.0" end group :sqlite do gem "sqlite3" end end |
# Database gems
platforms :mri, :mingw do
group :postgresql do
gem "pg", ">= 0.11.0"
end
group :sqlite do
gem "sqlite3"
end
endUn detalle importante respecto a MySQL, en Gemfile se especifican 2 gems distintas :mysql y :mysql2 y esto está directamente relacionado con la versión de ruby que instalamos al principio del tutorial, mysql2 por ejemplo lo mantendremos si instalamos ruby-1.9 que no es nuestro caso por ende eliminaremos de Gemfile toda referencia a mysql2 y dejaremos sólo mysql quedando asi:
1 2 3 4 5 | platforms :mri_18, :mingw_18 do group :mysql do gem "mysql", "~> 2.8.1" end end |
platforms :mri_18, :mingw_18 do
group :mysql do
gem "mysql", "~> 2.8.1"
end
endHe puesto en http://blog.ngen.com.ar/public/Gemfile.tgz una copia del archivo Gemfile que estoy utilizando en la instalación de este tutorial.
Donde definiremos el usuario y password de la base de datos MySQL.
1 2 3 4 5 6 7 | production: adapter: mysql database: redmine host: localhost username: redmine password: redminepass encoding: utf8 |
production: adapter: mysql database: redmine host: localhost username: redmine password: redminepass encoding: utf8
Obviaré el paso de creación de la base de datos, información que puede consultarse en el siguiente link: http://www.redmine.org/projects/redmine/wiki/RedmineInstall#MySQL
Aqui se definen valores de configuración tales como SMTP (para enviar los mails de notificaciones), path para los attachments, cookies, soporte para SCM (subversion, git, etc) y otros valores mas. En la instalación que estoy haciendo para este tutorial los valores han quedado asi:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | default: # Outgoing emails configuration (see examples above) email_delivery: delivery_method: :smtp smtp_settings: address: localhost port: 25 domain: tracker.aper.net # Absolute path to the directory where attachments are stored. # The default is the 'files' directory in your Redmine instance. # Your Redmine instance needs to have write permission on this # directory. # Examples: # attachments_storage_path: /var/redmine/files # attachments_storage_path: D:/redmine/files attachments_storage_path: /var/lib/redmine/files # Configuration of the autologin cookie. # autologin_cookie_name: the name of the cookie (default: autologin) # autologin_cookie_path: the cookie path (default: /) # autologin_cookie_secure: true sets the cookie secure flag (default: false) autologin_cookie_name: autologin_cookie_path: autologin_cookie_secure: true |
default:
# Outgoing emails configuration (see examples above)
email_delivery:
delivery_method: :smtp
smtp_settings:
address: localhost
port: 25
domain: tracker.aper.net
# Absolute path to the directory where attachments are stored.
# The default is the 'files' directory in your Redmine instance.
# Your Redmine instance needs to have write permission on this
# directory.
# Examples:
# attachments_storage_path: /var/redmine/files
# attachments_storage_path: D:/redmine/files
attachments_storage_path: /var/lib/redmine/files
# Configuration of the autologin cookie.
# autologin_cookie_name: the name of the cookie (default: autologin)
# autologin_cookie_path: the cookie path (default: /)
# autologin_cookie_secure: true sets the cookie secure flag (default: false)
autologin_cookie_name:
autologin_cookie_path:
autologin_cookie_secure: trueSi no quisieramos soporte para mercurial por ejemplo podemos eliminar las lineas correspondientes y dejar sólo lo que necesitemos, para el que no lo sabe dentro de cada proyecto individual de Redmine se puede asociar una url/uri de SCM de manera que podamos ver integrado dentro del proyecto un repositorio SVN (por ejemplo) de forma muy parecida a como se ve con websvn.
En mi caso la configuración SCM quedó así (sólo con soporte para subversion & git):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | # Configuration of SCM executable command. # # Absolute path (e.g. /usr/local/bin/hg) or command name (e.g. hg.exe, bzr.exe) # On Windows + CRuby, *.cmd, *.bat (e.g. hg.cmd, bzr.bat) does not work. # # On Windows + JRuby 1.6.2, path which contains spaces does not work. # For example, "C:\Program Files\TortoiseHg\hg.exe". # If you want to this feature, you need to install to the path which does not contains spaces. # For example, "C:\TortoiseHg\hg.exe". # # Examples: # scm_subversion_command: svn # (default: svn) # scm_mercurial_command: C:\Program Files\TortoiseHg\hg.exe # (default: hg) # scm_git_command: /usr/local/bin/git # (default: git) # scm_cvs_command: cvs # (default: cvs) # scm_bazaar_command: bzr.exe # (default: bzr) # scm_darcs_command: darcs-1.0.9-i386-linux # (default: darcs) # scm_subversion_command: scm_git_command: |
# Configuration of SCM executable command. # # Absolute path (e.g. /usr/local/bin/hg) or command name (e.g. hg.exe, bzr.exe) # On Windows + CRuby, *.cmd, *.bat (e.g. hg.cmd, bzr.bat) does not work. # # On Windows + JRuby 1.6.2, path which contains spaces does not work. # For example, "C:\Program Files\TortoiseHg\hg.exe". # If you want to this feature, you need to install to the path which does not contains spaces. # For example, "C:\TortoiseHg\hg.exe". # # Examples: # scm_subversion_command: svn # (default: svn) # scm_mercurial_command: C:\Program Files\TortoiseHg\hg.exe # (default: hg) # scm_git_command: /usr/local/bin/git # (default: git) # scm_cvs_command: cvs # (default: cvs) # scm_bazaar_command: bzr.exe # (default: bzr) # scm_darcs_command: darcs-1.0.9-i386-linux # (default: darcs) # scm_subversion_command: scm_git_command:
LLegó la hora hacer el setup de Redmine, una de las utilidades o gems necesarias para resolver las dependencias es bundle, lo instalaremos y tambien agregaremos el path al sistema con update-alternatives.
1 2 3 | :~# gem install bundler :~# update-alternatives --install /usr/bin/bundle bundle /var/lib/gems/1.8/bin/bundle 180 update-alternatives: using /var/lib/gems/1.8/bin/bundle to provide /usr/bin/bundle (bundle) in auto mode. |
:~# gem install bundler :~# update-alternatives --install /usr/bin/bundle bundle /var/lib/gems/1.8/bin/bundle 180 update-alternatives: using /var/lib/gems/1.8/bin/bundle to provide /usr/bin/bundle (bundle) in auto mode.
Debemos movernos al directorio donde descargamos Redmine y ejecutar bundle.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | :~# cd /var/lib/redmine :/var/lib/redmine# bundle install --without development test Fetching gem metadata from http://rubygems.org/......... Fetching gem metadata from http://rubygems.org/.. Using rake (10.0.3) Installing i18n (0.6.1) Installing multi_json (1.5.0) Installing activesupport (3.2.11) Installing builder (3.0.0) Installing activemodel (3.2.11) Installing erubis (2.7.0) Installing journey (1.0.4) Installing rack (1.4.4) Installing rack-cache (1.2) Installing rack-test (0.6.2) Installing hike (1.2.1) Installing tilt (1.3.3) Installing sprockets (2.2.2) Installing actionpack (3.2.11) Installing mime-types (1.19) Installing polyglot (0.3.3) Installing treetop (1.4.12) Installing mail (2.4.4) Installing actionmailer (3.2.11) Installing arel (3.0.2) Installing tzinfo (0.3.35) Installing activerecord (3.2.11) Installing activeresource (3.2.11) Using bundler (1.2.3) Installing coderay (1.0.8) Installing fastercsv (1.5.5) Installing rack-ssl (1.3.3) Installing json (1.7.6) with native extensions Installing rdoc (3.12) Installing thor (0.17.0) Installing railties (3.2.11) Installing jquery-rails (2.0.3) Installing mysql (2.8.1) with native extensions Installing net-ldap (0.3.1) Installing rails (3.2.11) Installing rmagick (2.13.1) with native extensions Your bundle is complete! Use `bundle show [gemname]` to see where a bundled gem is installed. Post-install message from rdoc: Depending on your version of ruby, you may need to install ruby rdoc/ri data: <= 1.8.6 : unsupported = 1.8.7 : gem install rdoc-data; rdoc-data --install = 1.9.1 : gem install rdoc-data; rdoc-data --install >= 1.9.2 : nothing to do! Yay! |
:~# cd /var/lib/redmine :/var/lib/redmine# bundle install --without development test Fetching gem metadata from http://rubygems.org/......... Fetching gem metadata from http://rubygems.org/.. Using rake (10.0.3) Installing i18n (0.6.1) Installing multi_json (1.5.0) Installing activesupport (3.2.11) Installing builder (3.0.0) Installing activemodel (3.2.11) Installing erubis (2.7.0) Installing journey (1.0.4) Installing rack (1.4.4) Installing rack-cache (1.2) Installing rack-test (0.6.2) Installing hike (1.2.1) Installing tilt (1.3.3) Installing sprockets (2.2.2) Installing actionpack (3.2.11) Installing mime-types (1.19) Installing polyglot (0.3.3) Installing treetop (1.4.12) Installing mail (2.4.4) Installing actionmailer (3.2.11) Installing arel (3.0.2) Installing tzinfo (0.3.35) Installing activerecord (3.2.11) Installing activeresource (3.2.11) Using bundler (1.2.3) Installing coderay (1.0.8) Installing fastercsv (1.5.5) Installing rack-ssl (1.3.3) Installing json (1.7.6) with native extensions Installing rdoc (3.12) Installing thor (0.17.0) Installing railties (3.2.11) Installing jquery-rails (2.0.3) Installing mysql (2.8.1) with native extensions Installing net-ldap (0.3.1) Installing rails (3.2.11) Installing rmagick (2.13.1) with native extensions Your bundle is complete! Use `bundle show [gemname]` to see where a bundled gem is installed. Post-install message from rdoc: Depending on your version of ruby, you may need to install ruby rdoc/ri data: <= 1.8.6 : unsupported = 1.8.7 : gem install rdoc-data; rdoc-data --install = 1.9.1 : gem install rdoc-data; rdoc-data --install >= 1.9.2 : nothing to do! Yay!
Como podemos ver todo está ok, algo importante respecto a la utilidad bundle es que si mantienen todo el contenido original del archivo Gemfile bundle instalará las gems o dependencias que pueda, pero en algunos casos no será posible porque se necesitan los paquetes *-dev de por ejemplo PostgreSQL, SQLite o MySQL (instaladas al inicio del tutorial).
Los pasos finales son generar un token (se hace cada vez que se instala y se hace upgrade de versión), ejecutar el script de verificación de la base de datos y/o plugins si los hubiera, limpiar las sesiones y caché.
1 2 3 4 5 | :/var/lib/redmine# rake generate_secret_token :/var/lib/redmine# rake db:migrate RAILS_ENV=production :/var/lib/redmine# rake redmine:plugins:migrate RAILS_ENV=production :/var/lib/redmine# rake tmp:cache:clear :/var/lib/redmine# rake tmp:sessions:clear |
:/var/lib/redmine# rake generate_secret_token :/var/lib/redmine# rake db:migrate RAILS_ENV=production :/var/lib/redmine# rake redmine:plugins:migrate RAILS_ENV=production :/var/lib/redmine# rake tmp:cache:clear :/var/lib/redmine# rake tmp:sessions:clear
Como último paso queda configurar Apache, reiniciarlo y listo!
Este es mi VirtualHost de ejemplo:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | <VirtualHost *:80> ServerAdmin cmiranda@aper.net ServerName tracker.aper.net ServerAlias 172.16.10.204 Redirect permanent / https://tracker.aper.net </VirtualHost> <VirtualHost *:443> ServerAdmin cmiranda@aper.net ServerName tracker.aper.net ServerAlias 172.16.10.204 DefaultInitEnv RAILS_ENV production DefaultInitEnv GEM_PATH /var/lib/gems/1.8 DocumentRoot /var/lib/redmine/public <Directory /var/lib/redmine/public> Options +FollowSymLinks +ExecCGI RewriteEngine On RewriteRule ^$ index.html [QSA] RewriteRule ^([^.]+)$ $1.html [QSA] RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ dispatch.fcgi [QSA,L] ErrorDocument 500 "<h2>Application error</h2>Rails application failed to start properly" AllowOverride None #AllowOverride all Order allow,deny allow from all </Directory> LogLevel warn CustomLog /var/log/apache2/tracker.access.log combined ErrorLog /var/log/apache2/tracker.error.log ServerSignature Off SSLEngine on SSLCertificateFile /etc/apache2/ssl/tracker.aper.net.crt SSLCertificateKeyFile /etc/apache2/ssl/tracker.aper.net.key SSLCertificateChainFile /etc/apache2/ssl/sub.class1.server.ca.pem </VirtualHost> |
<VirtualHost *:80>
ServerAdmin cmiranda@aper.net
ServerName tracker.aper.net
ServerAlias 172.16.10.204
Redirect permanent / https://tracker.aper.net
</VirtualHost>
<VirtualHost *:443>
ServerAdmin cmiranda@aper.net
ServerName tracker.aper.net
ServerAlias 172.16.10.204
DefaultInitEnv RAILS_ENV production
DefaultInitEnv GEM_PATH /var/lib/gems/1.8
DocumentRoot /var/lib/redmine/public
<Directory /var/lib/redmine/public>
Options +FollowSymLinks +ExecCGI
RewriteEngine On
RewriteRule ^$ index.html [QSA]
RewriteRule ^([^.]+)$ $1.html [QSA]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ dispatch.fcgi [QSA,L]
ErrorDocument 500 "<h2>Application error</h2>Rails application failed to start properly"
AllowOverride None
#AllowOverride all
Order allow,deny
allow from all
</Directory>
LogLevel warn
CustomLog /var/log/apache2/tracker.access.log combined
ErrorLog /var/log/apache2/tracker.error.log
ServerSignature Off
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/tracker.aper.net.crt
SSLCertificateKeyFile /etc/apache2/ssl/tracker.aper.net.key
SSLCertificateChainFile /etc/apache2/ssl/sub.class1.server.ca.pem
</VirtualHost>Verificamos que todo esté ok dando por terminada la instalación de Redmine 2.1.6 en Debian, en un próximo post mostraré cómo hacer un upgrade a las versiones mas nuevas.
