Download
xampp-win32-1.8.0-VC9-installer.exe :: http://www.apachefriends.org/en/xampp-windows.html
ruby-1.9.3-p125-i386-mingw32.7z :: http://rubyinstaller.org/downloads/ <== Do not use p194 because of bug
DevKit-tdm-32-4.5.2-20111229-1559-sfx.exe :: http://rubyinstaller.org/downloads/
mysql-connector-c-noinstall-6.0.2-win32.zip :: http://dev.mysql.com/downloads/connector/c/
redmine-2.1.0.zip :: http://rubyforge.org/frs/?group_id=1850
PortableGit-1.7.11-preview20120710.7z :: http://code.google.com/p/msysgit/
# Do not download the belows if you have a 32bit Windows box
apache-tomcat-7.0.30-windows-
x64.zip :: http://tomcat.apache.org/
mysql-5.5.27-win
x64.zip :: http://www.mysql.com/downloads/mysql/
Install XAMPP into C:\usr
Extract others into C:\usr
C:\usr\apache-tomcat-7.0.30\
C:\usr\mysql-5.5.27-winx64\
C:\usr\ruby-1.9.3-p194-i386-mingw32
C:\usr\DevKit-tdm-32-4.5.2-20111229-1559-sfx
C:\usr\mysql-connector-c-noinstall-6.0.2-win32
C:\usr\redmine-2.1.0
C:\usr\Git-1.7.11
Make symbolic link as Administrator
CMD> cd C:\usr
CMD> mklink /D ruby C:\usr\ruby-1.9.3-p194-i386-mingw32
CMD> mklink /D devkit C:\usr\DevKit-tdm-32-4.5.2-20111229-1559-sfx
CMD> mklink /D mysql-connector c:\usr\mysql-connector-c-noinstall-6.0.2-win32
CMD> mklink /D redmine C:\usr\redmine-2.1.0
CMD> mklink /D git C:\usr\Git-1.7.11
CMD> cd C:\usr\ruby\bin
CMD> mklink libmysql.dll C:\usr\mysql-connector\lib\libmysql.dll
## Skip if you have a 32bit Windows box
CMD> cd C:\usr
CMD> ren(or remove) tomcat tomcat7-32bit
CMD> ren(or remove) mysql mysql-5.5.25-winx86
CMD> mklink /D tomcat apache-tomcat-7.0.30
CMD> mklink /D mysql mysql-5.5.27-winx64
CMD> copy mysql-5.5.25-winx86\mysql_installservice.bat mysql
CMD> copy mysql-5.5.25-winx86\mysql_uninstallservice.bat mysql
CMD> copy mysql-5.5.25-winx86\mysql_resetroot.bat mysql
## Move mysql data directory to D drive : you can skip this
CMD> cd C:\usr\mysql-5.5.25-winx86
CMD> mkdir "D:\MySQL Data"
CMD> xcopy /S data "D:\MySQL Data"
CMD> cd C:\usr\mysql <== make sure 64bit mysql(mysql-5.5.25-winx86)
CMD> ren(or remove) data data.org
CMD> mklink /D data "D:\MySQL Data"
Setup DevKit
Add C:\usr\ruby\bin into PATH
CMD> cd C:\usr\devkit
CMD> ruby dk.rb init
CMD> ruby dk.rb review <== Add "- C:/usr/ruby" into config.yml manually when init failed
CMD> ruby dk.rb install
Create database
CMD> cd C:\usr\mysql\bin
CMD> msyql -u root -p
mysql> create database redmine character set utf8;
mysql> grant all privileges on redmine.* to 'redmine'@'localhost' identified by 'PASSWORD';
Edit C:\usr\redmine\config\database.yml
production:
adapter: mysql2
database: redmine
host: 127.0.0.1 <== In my case, localhost didn't work.
username: redmine
password: PASSWORD
Install redmine
Extract redmine into c:\usr\redmine-2.1.0
Add a line into C:\usr\redmine\Gemfile
gem "thin"
Install redmine
CMD> cd C:\usr\redmine
CMD> gem install bundler
CMD> bundle install --without development test rmagick postgresql sqlite
CMD> set RAILS_ENV=production
CMD> rake generate_secret_token
CMD> rake db:migrate
CMD> rake redmine:load_default_data
Add to end of C:\usr\redmine\config\environment.rb
Redmine::Utils::relative_url_root = "/redmine"
Test
CMD> cd C:\usr\redmine
CMD> thin start -e production
Go to http://localhost:3000/redmine with your web browser, and login admin/admin
Configuration Redmine
Edit C:\usr\redmine\config\configuration.yml
set email in section default
set attachments_storage_path: C:/usr/redmine/files
set scm_git_command: C:\usr\git\cmd\git.exe
Run as a windows service
CMD> gem install win32-service
Save as C:\usr\redmine\service_install.rb
require 'rubygems'
require 'win32/service'
include Win32
SERVICE_NAME = 'Redmine'
# Create a new service
Service.create({
:service_name => SERVICE_NAME,
:service_type => Service::WIN32_OWN_PROCESS,
:description => 'Redmine on Thin as Windows Service',
:start_type => Service::AUTO_START,
:error_control => Service::ERROR_NORMAL,
:binary_path_name => 'c:\usr\Ruby\bin\ruby.exe -C C:\usr\redmine service.rb',
:load_order_group => 'Network',
:dependencies => ['W32Time','Schedule'],
:display_name => SERVICE_NAME
})
Save as C:\usr\redmine\servce.rb
REDMINE_DIR = 'C:\usr\redmine'
LOG_FILE = "#{REDMINE_DIR}\\log\\service.log"
begin
require 'win32/daemon'
include Win32
class RedmineService < Daemon
def service_init
File.open(LOG_FILE, 'a'){ |f| f.puts "Initializing service #{Time.now}" }
@server_pid = Process.spawn 'C:\usr\ruby\bin\ruby C:\usr\ruby\bin\thin start -p 3001 -e production --prefix /redmine', :chdir => REDMINE_DIR, :err => [LOG_FILE, 'a']
end
def service_main
File.open(LOG_FILE, 'a'){ |f| f.puts "Service is running #{Time.now} with pid #{@server_pid}" }
while running?
sleep 10
end
end
def service_stop
File.open(LOG_FILE, 'a'){ |f| f.puts "Stopping server thread #{Time.now}" }
system "taskkill /PID #{@server_pid} /T /F"
Process.waitall
File.open(LOG_FILE, 'a'){ |f| f.puts "Service stopped #{Time.now}" }
exit!
end
end
RedmineService.mainloop
rescue Exception => e
File.open(LOG_FILE,'a+'){ |f| f.puts " ***Daemon failure #{Time.now} exception=#{e.inspect}\n#{e.backtrace.join($/)}" }
raise
end
Install service and run it as Administrator
CMD> cd C:\usr\redmine
CMD> ruby service_install.rb
CMD> net start Redmine
# Check if Redmine runs and see logs at C:\usr\redmine\log\service.log
# See http://localhost:3001/redmine/
Attach to Apache
Add to end of C:\usr\apache\conf\httpd.conf
Include "conf/extra/httpd-proxy-redmine.conf"
Save as C:\usr\apache\conf\extra\httpd-proxy-redmine.conf
<IfModule !mod_proxy.c>
LoadModule proxy_module modules/mod_proxy.so
</IfModule>
<IfModule !mod_proxy_http.c>
LoadModule proxy_http_module modules/mod_proxy_http.so
</IfModule>
<IfModule proxy_module>
<IfModule proxy_http_module>
ProxyRequests Off
ProxyPreserveHost On
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass /redmine http://127.0.0.1:3001/redmine/
ProxyPassReverse /redmine http://127.0.0.1:3001/redmine/
</IfModule>
</IfModule>
See http://localhost/redmine/