aBinaryMind

Some thoughts, some info, some rants

Archive for the ‘Open source’ Category

Redmine installation guide (Ubuntu)

Following is a guid to install Redmine (svn trunk) on Ubuntu 9.10.

The assumed location of Redmine is /srv/redmine

Phase 1: Setup Redmine

Step 1
Install required packages.

$ sudo apt-get install ruby rake ruby-dev rubygems libmysqlclient-dev libopenssl-ruby

Step 2
Check out Redmine trunk.

$ cd /srv
$ sudo svn co http://redmine.rubyforge.org/svn/trunk redmine

Step 3
Install required ruby gems:

$ sudo gem install rails mongrel mongrel_cluster daemons mysql actionmailer

Note 1: We may need to update Rails RAILS_GEM_VERSION in file [redmine]/config/environment.rb to reflect actual version of Rails gems installed.

Note 2: We may need to create soft link for rails & mongrel executables for convenient

$ sudo ln -s /var/lib/gems/1.8/bin/mongrel_rails /usr/local/bin/
$ sudo ln -s /var/lib/gems/1.8/bin/rails /usr/local/bin/
$ sudo ln -s /var/lib/gems/1.8/bin/mongrel_cluster_ctl /usr/local/bin/

Step 4
Create mysql database

$ mysql -u root -p
# Enter mysql root password when prompted

Run the following code in mysql, substitute your own database name, password, …

CREATE DATABASE redmine character SET utf8;
CREATE user 'redmine'@'localhost' IDENTIFIED BY 'my_password';
GRANT ALL privileges ON redmine.* TO 'redmine'@'localhost';

Step 5
Create/Update database parameters in [redmine]/config/database.yml accordingly to prior step info.

production:
  adapter: mysql
  database: redmine
  host: localhost
  username: redmine
  password: my_password
  encoding: utf8

Step 6
Initialize the database

# Initialize session hash
$ sudo rake config/initializers/session_store.rb

# Load db schema
$ sudo rake db:migrate RAILS_ENV="production"

$ sudo rake redmine:load_default_data RAILS_ENV="production"

Step 7
Create redmine user & setting up directory permission

# Context: root:[redmine_dir]
$ sudo useradd redmine
$ sudo mkdir tmp public/plugin_assets
$ sudo chown -R redmine:redmine  files log tmp
$ sudo chmod -R 755 files log tmp public

Step 8
Testing the application server

$ sudo ruby script/server -e production

The server is listening on [http://localhost:3000].

Phase 2: Setup Apache & Mongrel Cluster

Step 1
Create mongrel cluster configuration files for Redmine.

$ sudo mongrel_rails cluster::configure -e production -p 3000 -N 3 -c /srv/redmine -a 127.0.0.1 --user redmine --group redmine

# Test mongrel_installation
$ sudo mongrel_rails cluster::start

Step 2
Create apache virtual host file at /etc/apache/sites-available/

<VirtualHost *:80>
  ServerName your.virtual-host.com
  DocumentRoot /srv/redmine

  <Directory /srv/redmine/public>
    AllowOverride FileInfo Indexes
  </Directory>

  RewriteEngine On

  # Redirect all non-static requests to Mongrel
  RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f
  RewriteRule ^/(.*)$ balancer://redmine_cluster%{REQUEST_URI} [P,QSA,L]

  ProxyPassReverse / balancer://redmine_cluster
  ProxyPreserveHost on

  <Proxy balancer://redmine_cluster>
    BalancerMember http://localhost:3000
    BalancerMember http://localhost:3001
    BalancerMember http://localhost:3002
  </Proxy>

  <Proxy *>
    Order deny,allow
    Allow from all
  </Proxy>

  # Block access to .svn directories
  <DirectoryMatch "^/.*/\.svn/">
    ErrorDocument 403 /404.html
    Order allow,deny
    Deny from all
    Satisfy All
  </DirectoryMatch>
</VirtualHost>

Step 3
Turn on the virtual host and required modules

$ sudo a2enmod proxy
$ sudo a2enmod proxy_http
$ sudo a2enmod proxy_balancer
$ sudo a2ensite <your-virtualhost-file>

# Restart web server
$ sudo /etc/init.d/apache2 restart

Phase 3: Surviving the reboot & G!Mail SMTP

Step 1
Create global mongrel_cluster configuration

$ sudo mkdir /etc/mongrel_cluster
$ cd /etc/mongrel_cluster
$ sudo ln -s /srv/redmine/config/mongrel_cluster.yml /etc/mongrel_cluster/redmine.yml

Step 2
Update the services

$ cd /etc/init.d
$ sudo cp /var/lib/gems/1.8/gems/mongrel_cluster-1.0.5/resources/mongrel_cluster /etc/init.d/
$ sudo chmod +x /etc/init.d/mongrel_cluster
$ sudo /usr/sbin/update-rc.d -f mongrel_cluster defaults

Step 3
Configure G!Mail

$ sudo ruby script/plugin install git://github.com/collectiveidea/action_mailer_optional_tls.git
# File: config/email.yml
production:
  delivery_method: :smtp
  smtp_settings:
    tls: true
    address: "smtp.gmail.com"
    port: '587'
    domain: "smtp.gmail.com"
    authentication: :plain
    user_name: "your_email@gmail.com"
    password: "your_password"

References

  1. http://www.redmine.org/wiki/redmine/RedmineInstall
  2. http://ubuntuforums.org/showthread.php?t=674598
  3. http://azureusonrails.rubyforge.org/wiki/wiki.pl?Install/Mongrel_Cluster_With_Apache_2.2
  4. http://redmineblog.com/articles/setup-redmine-to-send-email-using-gmail/

A very informative post about when to choose Drupal for a combination of project & people.

Drupal is a very flexible CMS which can be extended to provide the functionality needed for may different types of website.

I’ve worked on a few projects where I was brought in for my Drupal expertise, but in the end felt that Drupal wasn’t a good solution in these particular circumstances. So I’ve been pondering what sorts of projects is Drupal best suited to.

I’m not thinking about small brochureware websites that might be best managed using Wordpress, Joomla or the like as almost all my experience is of larger projects where the alternatives are frameworks such as Symfony, Rails, Struts etc – or pure custom code.

I’m know it’s possible to run a successful Drupal project that doesn’t have all the good points and does have some bad points from the lists below – I’ve done it.

But if anyone has successfully delivered a regularly upgraded, high traffic, fully tested web application with inflexible requirements using a large team of OO programmers with little prior Drupal experience – well I’d love to hear about it.
via When to Choose Drupal | PracticalWeb Ltd.

About Me

I'm an introvert & a geek. If you have enough time, patience and curiosity, please read this and this . After that, I'm sure we're gonna get along very well ;-)

Bookmarks