Redmine: Difference between revisions
(corrections using alpine-2.1.6. Edge repository no longer needed. Some missing steps were added.) |
m (add mysql to lbu) |
||
| Line 188: | Line 188: | ||
lbu inc /usr/lib/ruby | lbu inc /usr/lib/ruby | ||
lbu inc /usr/share/webapps | lbu inc /usr/share/webapps | ||
lbu inc /var/lib/mysql | |||
Revision as of 13:31, 7 April 2011
Install Lighttpd with FastCGI
Basic Installation
For installing the additional packages first activate community packages and update the package index
Install the required packages:
# apk add lighttpd php fcgi php-cgi
Configure Lighttpd
Edit lighttpd.conf (/etc/lighttpd/lighttpd.conf) and uncomment the line:
Contents of /etc/lighttpd/lighttpd.conf
Start lighttpd service and add it to default runlevel
# rc-service lighttpd start # rc-update add lighttpd default
Install extra packages for redmine:
apk add fcgi mysql mysql-dev rubygems fcgi-dev sqlite-dev
Install the following rubygems (gem install <gemname> --version <version>). Note: newer versions of the gems may work, but these have been confirmed working in Alpine 2.1.2:
gem install -V --no-rdoc --no-ri actionmailer --version 2.3.3 gem install -V --no-rdoc --no-ri activerecord --version 2.3.3 gem install -V --no-rdoc --no-ri activeresource --version 2.3.3 gem install -V --no-rdoc --no-ri edavis10-object_daddy --version 0.4.3 gem install -V --no-rdoc --no-ri fcgi --version 0.8.8 gem install -V --no-rdoc --no-ri mocha --version 0.9.10 gem install -V --no-rdoc --no-ri mysql --version 2.8.1 gem install -V --no-rdoc --no-ri rails --version 2.3.3 gem install -V --no-rdoc --no-ri shoulda --version 2.10.3 gem install -V --no-rdoc --no-ri sqlite3 --version 1.3.3
Configure MySql
/usr/bin/mysql_install_db --user=mysql /etc/init.d/mysql start && rc-update add mysql default /usr/bin/mysqladmin -u root password 'password'
Create the redmine database
mysql -u root -p
create database redmine character set utf8; grant all privileges on redmine.* to 'redmine'@'localhost' identified by 'Secur3P@ass'; flush privileges; exit
Create redmine folder
mkdir -p /usr/share/webapps/redmine
Download, unpack and move Redmine
cd /tmp/ wget http://rubyforge.org/frs/download.php/73140/redmine-1.0.3.tar.gz tar zxvf redmine-1.0.3.tar.gz mv redmine-1.0.3/* /usr/share/webapps/redmine/
Change permissions
chown -R lighttpd:lighttpd /usr/share/webapps/redmine chmod 0666 /usr/share/webapps/log/production.log mkdir /var/run/redmine chown lighttpd:lighttpd /var/run/redmine
Edit the database config file and add the mysql password at every occurrence of "password:"
cp /usr/share/webapps/redmine/config/database.yml.example /usr/share/webapps/redmine/config/database.yml nano /usr/share/webapps/redmine/config/database.yml
Some more steps
cd /usr/share/webapps/redmine mv public/dispatch.fcgi.example public/dispatch.fcgi
rake generate_session_store RAILS_ENV=production rake db:migrate RAILS_ENV=production rake redmine:load_default_data
Note: keep default language of en
Start the Redmine testing webserver
ruby /usr/share/webapps/redmine/script/server webrick -e production
Now you can browse to localhost:3000 an log using admin user and admin password.
Once Redmine is confirmed working, kill webrick.
Set up lighttpd by editing lighttpd.conf.
- Uncomment the following line:
"mod_alias",
- Add the following content to the end of the file:
$HTTP["url"] =~ "^/redmine/" {
alias.url = ("/redmine" => "/usr/share/webapps/redmine/public")
server.document-root = "/usr/share/webapps/redmine/public/"
server.error-handler-404 = "/redmine/dispatch.fcgi"
index-file.names = ("dispatch.fcgi")
# Change *-procs to 2 if you need to use Upload Progress or other tasks that
# *need* to execute a second request while the first is still pending.
fastcgi.server += (
".fcgi" => (
"localhost" => (
"min-procs" => 1,
"max-procs" => 2,
"check-local" => "disable",
"socket" => "/var/run/redmine/fcgi.socket",
"bin-path" => "/usr/bin/ruby /usr/share/webapps/redmine/public/dispatch.fcgi",
"bin-environment" => (
"RAILS_ENV" => "production"
)
)
)
)
}
Configure a relative URL by editing /usr/share/webapps/redmine/config/environment.rb: Add the line shown below, within the code block "Rails::Initializer.run do |config|"
config.action_controller.relative_url_root = '/redmine'
Restart lighttpd
/etc/init.d/lighttpd restart
Note: To enable email to ticket creation from unknown users/email addresses (after allowing anonymous issue creation within Redmine UI) for the 'myproject' project in Redmine:
#!/usr/bin/perl
# Author: Jeff Bilyk
# March 2, 2011
#Script to take email from stdin, then:
# - Check redmine database to see if the user exists
# - If user doesn't exist, create the user
# - Pass the email on the redmine utility:
# - echo "email contents" | rake redmine:email:read RAILS_ENV="production" project=myproject
use strict;
use DBI;
# global variables
my $DbName = 'redmine';
my $DbUser = 'redmine';
my $DbPassword = 'Secur3P@ass';
my @fields;
my @address;
my $existinguser;
# Get email from stdin
my @email = <STDIN>;
# Parse field for "for"
foreach (@email)
{
if ($_ =~ /From/)
{
@fields = (split /</,$_);
@address = (split />/,$fields[1]);
}
}
my $dbh = DBI->connect('dbi:mysql:' . $DbName, $DbUser, $DbPassword, { PrintError => 0 }) or die "SQL Connect Error:" . DBI->errstr;
# Find out if there're any existing users with the specified email address
my $sqlStatement = "SELECT * from users where mail = '$address[0]';";
my $sqlCommand = $dbh->prepare($sqlStatement);
$sqlCommand->execute or die "SQL Error: " . DBI->errstr;
my @sqlRecordset;
$existinguser = 'maybe';
@sqlRecordset = $sqlCommand->fetchrow_array;
if ($sqlRecordset[0] == ) {
printf "@sqlRecordset \n";
$existinguser = 'no';
}
else {
$existinguser = 'yes';
}
# If there isn't a user already, then create one
if ($existinguser == 'no')
{
my @name = (split /@/,$address[0]);
printf "Current variables: $name[0] $address[0] \n";
$sqlStatement = "INSERT INTO users (login, firstname, lastname, mail, mail_notification, admin, status, language, type) values (\"$name[0]\", \"$name[0]\", \" \", \"$address[0]\", 0, 0, 1, \"en\", \"User\");";
$sqlCommand = $dbh->prepare($sqlStatement);
$sqlCommand->execute or die "SQL Error: " .DBI->errstr;
printf "User created";
}
my $timeinsec = `date +%s`;
open (MYFILE, ">>/var/tmp/$timeinsec");
print MYFILE "@email";
close (MYFILE);
system("sed -i 's/^ //' /var/tmp/$timeinsec");
system("sed -i 's/^ //' /var/tmp/$timeinsec");
`cd /usr/share/webapps/redmine && rake redmine:email:read RAILS_ENV="production" project=myproject < /var/tmp/$timeinsec`;
exit 0
Configure LBU
lbu inc /usr/lib/ruby lbu inc /usr/share/webapps lbu inc /var/lib/mysql