HOWTO Install Subversion and Redmine on CentOS5 + RHEL5

Version 5 (Rob Freeman, 01/31/2009 09:07 AM)

1 5 Rob Freeman
h1. HOWTO: Install Subversion, Ruby on Rails and Redmine on CentOS5 (& RHEL5)
2 1
3 1
NOTES
4 1
* This HOWTO is written for CentOS 5.2
5 1
* Replace [FQDN] with either your IP address or the hostname (or FQDN) which you’ll be using to access the interface.
6 1
* Replace [user] with the username under whom's home directory the Subversion repository database will be located. e.g. /home/[user]/svn-repos
7 1
8 1
* This HOWTO will be using the following variables:
9 1
>* You will be running apache as the user ‘apache’
10 1
>* The subversion repository root folder will be under /home/[user]/subversion/
11 1
>* The vhost's folder locationg will be /var/www/svn
12 1
>* The subversion repository to be created will be called ‘example-repo’
13 1
14 1
Install and set up Subversion
15 1
<pre>
16 1
yum install mod_dav_svn subversion
17 1
</pre>
18 1
19 1
Add the group [user] to the user apache and make the subversion base URL readable and writable...
20 1
<pre>
21 1
usermod -aG [user] apache
22 1
chmod g+x /home/[user]
23 1
mkdir /home/[user]/subversion
24 1
chmod g+rwx /home/[user]/subversion
25 1
</pre>
26 1
27 1
Make the web directory:
28 1
<pre>
29 1
mkdir /var/www/svn
30 1
chown apache.apache /var/www/svn
31 1
</pre>
32 1
33 1
Put the following into /etc/httpd/conf.d/svn.conf (this is for a sub-repo called 'example-repo')
34 1
<pre>
35 1
NameVirtualHost *:80
36 1
<VirtualHost *:80>
37 1
        DocumentRoot "/var/www/svn"
38 1
        ServerName [FQDN]
39 1
        <Location /example-repo>
40 1
                DAV svn
41 1
                SVNPath /home/[user]/subversion/example-repo
42 1
                AuthType Basic
43 1
                AuthName "Subversion repo"
44 1
                AuthUserFile /var/www/passwd
45 1
                Require valid-user
46 1
        </Location>
47 1
48 1
        <Directory "/var/www/svn">
49 1
        allow from all
50 1
        Options +Indexes
51 1
        </Directory>
52 1
</VirtualHost>
53 1
</pre>
54 1
55 1
Add an HTTP auth user...
56 1
<pre>
57 1
htpasswd -cm /var/www/passwd [user]
58 1
</pre>
59 1
Create a proper SVN repository 
60 1
<pre>
61 1
cd /home/[user]/subversion
62 1
su [user] -c "svnadmin create example-repo"
63 1
</pre>
64 1
Import any SVN repos by doing:
65 1
<pre>
66 1
su [user] -c "svnadmin load example-repo < /path/to/repo/dump/file"
67 1
</pre>
68 1
69 1
Make sure the permissions are correct
70 1
<pre>
71 1
chmod g+rwx /home/[user]/subversion
72 1
chown -R [user].[user] /home/[user]
73 1
</pre>
74 1
75 5 Rob Freeman
*+Install Ruby on Rails+*
76 2 Rob Freeman
77 5 Rob Freeman
*NOTE: Ruby on Rails installation requires the EPEL yum repository (at time of writing).
78 1
<pre>
79 1
su -c 'rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-3.noarch.rpm'
80 1
</pre>
81 1
82 5 Rob Freeman
Let's get Ruby up and running first... [NOTE: not on an SElinux environment cba with that]
83 1
<pre>
84 1
yum install httpd httpd-devel apr make gcc-c++ mysql-server mysql ruby ruby-devel ruby-docs ruby-ri \
85 1
ruby-libs ruby-mode ruby-tcltk ruby-irb ruby-rdoc fcgi fcgi-devel mod_fcgid rubygems subversion-ruby
86 1
</pre>
87 1
88 1
Now we'll install passenger (aka mod_rails)
89 1
<pre>
90 1
gem install passenger
91 1
passenger-install-apache2-module
92 1
</pre>
93 1
94 1
Create and insert this text into /etc/httpd/conf.d/rails.conf (or alternatively edit the existing svn.conf created when we set up subversion)
95 5 Rob Freeman
NOTE:
96 5 Rob Freeman
* The below configuration is specific to the installation of redmine (hence the DocumentRoot)
97 1
98 1
<pre>
99 1
   LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/passenger-2.0.6/ext/apache2/mod_passenger.so
100 1
   PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-2.0.6
101 1
   PassengerRuby /usr/bin/ruby
102 1
103 1
   
104 1
NameVirtualHost *:80
105 1
106 1
   <VirtualHost *:80>
107 1
     ServerName 192.168.10.17
108 1
     DocumentRoot /var/www/rails/redmine/public
109 1
   </VirtualHost>
110 1
</pre>
111 5 Rob Freeman
112 5 Rob Freeman
*+Now on to Redmine itself+*
113 1
 
114 1
Get Redmine 0.8 from http://www.redmine.org/wiki/redmine/Download
115 1
<pre>
116 1
cd /usr/src
117 1
svn co http://redmine.rubyforge.org/svn/branches/0.8-stable redmine-0.8
118 1
mkdir /var/www/rails/
119 1
cd /var/www/rails/
120 1
cp -r /usr/src/redmine-0.8/ redmine/
121 1
chown -R apache.apache redmine
122 1
cd redmine
123 1
</pre>
124 1
125 1
Create a clean backup of source files
126 1
<pre>
127 1
tar czf Redmine0.8-clean.tar.gz .
128 1
</pre>
129 1
130 1
Initialise mySQL:
131 1
<pre>
132 1
service mysqld start
133 1
</pre>
134 1
135 1
To secure mysql:
136 1
<pre>
137 1
mysql_secure_installation
138 1
</pre>
139 1
140 1
Create a mysql database for redmine...
141 1
<pre>
142 1
mysql -u<username> -p
143 1
</pre>
144 3 Rob Freeman
145 1
At the prompt enter:
146 1
<pre>
147 1
create database redmine character set utf8;
148 1
</pre>
149 3 Rob Freeman
150 1
Quit with:
151 1
<pre>
152 1
quit
153 1
</pre>
154 1
155 3 Rob Freeman
Copy the example database file to the "live" location
156 1
<pre>
157 1
cd /var/www/rails/redmine
158 1
cp config/database.yml.example config/database.yml
159 1
</pre>
160 3 Rob Freeman
161 3 Rob Freeman
Enter the appropriate settings for the [production] section ensuring that host is set to 127.0.0.1
162 3 Rob Freeman
<pre>
163 3 Rob Freeman
vim /var/www/rails/redmine/config/database.yml
164 3 Rob Freeman
</pre>
165 3 Rob Freeman
166 3 Rob Freeman
Set up email
167 3 Rob Freeman
<pre>
168 3 Rob Freeman
cd /var/www/rails/redmine
169 3 Rob Freeman
cp config/email.yml.example config/email.yml
170 3 Rob Freeman
</pre>
171 3 Rob Freeman
172 3 Rob Freeman
Enter the appropriate settings for the [production] section ensuring that "address" is set to the *IP address* of the SMTP host
173 3 Rob Freeman
<pre>
174 3 Rob Freeman
vim /var/www/rails/redmine/config/email.yml
175 3 Rob Freeman
</pre>
176 3 Rob Freeman
177 3 Rob Freeman
Install rails for redmine using gem...
178 3 Rob Freeman
<pre>
179 3 Rob Freeman
cd /var/www/rails/redmine/app/
180 3 Rob Freeman
gem install -v=2.1.2 rails
181 3 Rob Freeman
</pre>
182 3 Rob Freeman
183 3 Rob Freeman
Import the redmine database into the live database specified in the above config file
184 3 Rob Freeman
<pre>
185 3 Rob Freeman
cd /var/www/rails/redmine/app/
186 3 Rob Freeman
rake db:migrate RAILS_ENV="production"
187 3 Rob Freeman
</pre>
188 3 Rob Freeman
189 3 Rob Freeman
Install default configuration data in database (this is entirely optional, but recommended).
190 3 Rob Freeman
<pre>
191 3 Rob Freeman
cd /var/www/rails/redmine/app/
192 3 Rob Freeman
rake redmine:load_default_data RAILS_ENV="production"
193 3 Rob Freeman
</pre>
194 3 Rob Freeman
195 3 Rob Freeman
Bring up the testing webserver, once loaded check your config by browsing to http://[FQDN]:3000
196 3 Rob Freeman
<pre>
197 3 Rob Freeman
cd /var/www/rails/redmine/
198 3 Rob Freeman
ruby script/server -e production
199 3 Rob Freeman
</pre>
200 3 Rob Freeman
201 3 Rob Freeman
Make sure your apache config file edits are ok and that the services will start at boot by doing:
202 3 Rob Freeman
<pre>
203 3 Rob Freeman
service httpd configtest
204 3 Rob Freeman
service httpd restart
205 3 Rob Freeman
chkconfig httpd on
206 3 Rob Freeman
chkconfig mysqld on
207 3 Rob Freeman
</pre>
208 3 Rob Freeman
209 3 Rob Freeman
Add the following to your crontab which will create a database backup in the /home/[user] directory
210 3 Rob Freeman
<pre>
211 3 Rob Freeman
/usr/bin/mysqldump -u <user> -p <password> <database> | gzip > /home/[user]/redmine_`date +%y_%m_%d`.gz
212 3 Rob Freeman
</pre>