Redmine on CentOS installation HOWTO » History » Version 10

Stephan Schuberth, 2012-03-28 01:51

1 1 Stephan Schuberth
h1. Redmine on CentOS installation HOWTO
2 1 Stephan Schuberth
3 1 Stephan Schuberth
{{>toc}}
4 1 Stephan Schuberth
5 2 Stephan Schuberth
This works with CentOS versions 5 and 6 and describes how to get Redmine 1.3.2 set up.
6 1 Stephan Schuberth
7 1 Stephan Schuberth
h2. Assumptions
8 1 Stephan Schuberth
9 1 Stephan Schuberth
* Apache is up and running
10 1 Stephan Schuberth
* Apache has previously been used and works quite well 
11 1 Stephan Schuberth
* MySQL is up and running
12 1 Stephan Schuberth
* MySQL has previously been used and works quite well
13 1 Stephan Schuberth
* Your are logged as root
14 1 Stephan Schuberth
* The next steps are done successively without errors
15 1 Stephan Schuberth
16 1 Stephan Schuberth
h1. Install pre-dependencies
17 1 Stephan Schuberth
18 1 Stephan Schuberth
<pre>yum -y install zlib-devel curl-devel openssl-devel httpd-devel apr-devel apr-util-devel mysql-devel</pre>
19 1 Stephan Schuberth
20 1 Stephan Schuberth
h2. Ruby
21 1 Stephan Schuberth
22 1 Stephan Schuberth
Things after *#* are comments, and it is no use to type this stuff in ;) 
23 1 Stephan Schuberth
<pre>cd ~/Downloads  # YOUR FOLDER OF CHOICE
24 1 Stephan Schuberth
ftp ftp.ruby-lang.org
25 1 Stephan Schuberth
</pre>
26 1 Stephan Schuberth
27 1 Stephan Schuberth
h3. FTP session
28 1 Stephan Schuberth
29 1 Stephan Schuberth
<pre>ftp> Anonymous  # USERLOGIN
30 1 Stephan Schuberth
ftp> 'none', just hit Enter  # NO PASSWORD
31 1 Stephan Schuberth
ftp> cd /pub/ruby
32 1 Stephan Schuberth
ftp> get ruby-1.8.7.pXXX.tar.gz  # XXX is currently 358, as of 03/2012
33 1 Stephan Schuberth
ftp> bye</pre>
34 1 Stephan Schuberth
35 1 Stephan Schuberth
h3. Untar
36 1 Stephan Schuberth
37 1 Stephan Schuberth
<pre>tar zxvf ruby-1.8.7.pXXX.tar.gz</pre>
38 1 Stephan Schuberth
39 1 Stephan Schuberth
h3. Install
40 1 Stephan Schuberth
41 1 Stephan Schuberth
<pre>cd ruby-1.8.7.pXXX
42 1 Stephan Schuberth
./configure
43 1 Stephan Schuberth
make
44 1 Stephan Schuberth
make install</pre>
45 1 Stephan Schuberth
46 1 Stephan Schuberth
h3. Check installation
47 1 Stephan Schuberth
48 1 Stephan Schuberth
If this does not work, it is probably because there is no ruby at /usr/bin to be found. 
49 1 Stephan Schuberth
If it works, skip directly to "Get Gems 1.4.2".
50 1 Stephan Schuberth
<pre>ruby -v</pre>
51 1 Stephan Schuberth
52 6 Stephan Schuberth
h3. Fix dependencies
53 1 Stephan Schuberth
54 1 Stephan Schuberth
(Only in case _ruby -v_ is *NOT* working)
55 1 Stephan Schuberth
<pre>which ruby  # TO CHECK WHERE IT SHOULD BE
56 1 Stephan Schuberth
whereis ruby  # TO CHECK WHERE IT IS INSTALLED</pre>
57 1 Stephan Schuberth
_which_ returns like /usr/bin/ along with other directories (where ruby is expected to be), and _whereis_ returns like /usr/local/bin/ruby (thats where ruby actually lies).
58 1 Stephan Schuberth
59 6 Stephan Schuberth
h4. Fix via adding /usr/local/bin to $PATH
60 6 Stephan Schuberth
61 9 Stephan Schuberth
(Do this with your editor of choice, if you do not like nano.)
62 6 Stephan Schuberth
<pre>nano /etc/profile</pre>
63 6 Stephan Schuberth
64 6 Stephan Schuberth
Make the section with _pathmunge_ look alike like this:
65 6 Stephan Schuberth
<pre>#Path manupulation
66 6 Stephan Schuberth
if [ "$EUID" = "0" ]; then
67 6 Stephan Schuberth
    pathmunge /sbin
68 6 Stephan Schuberth
    pathmunge /usr/sbin
69 6 Stephan Schuberth
    pathmunge /usr/local/sbin
70 6 Stephan Schuberth
    pathmunge /usr/local/bin  # ADDED THIS
71 6 Stephan Schuberth
else
72 6 Stephan Schuberth
    pathmunge /usr/local/bin after  # ADDED THIS
73 6 Stephan Schuberth
    pathmunge /usr/local/sbin after
74 6 Stephan Schuberth
    pathmunge /usr/sbin after
75 6 Stephan Schuberth
    pathmunge /sbin
76 6 Stephan Schuberth
fi</pre>
77 6 Stephan Schuberth
78 6 Stephan Schuberth
OR ADD THIS AT THE END OF THE FILE:
79 6 Stephan Schuberth
80 6 Stephan Schuberth
<pre>nano /etc/profile
81 6 Stephan Schuberth
export PATH="$PATH:/usr/local/bin"</pre>
82 6 Stephan Schuberth
83 6 Stephan Schuberth
This sets the PATH for all Users beside root. In case you want it for root to change, too:
84 6 Stephan Schuberth
85 6 Stephan Schuberth
<pre>nano ~/.bashrc
86 6 Stephan Schuberth
export PATH="$PATH:/usr/local/bin"</pre>
87 6 Stephan Schuberth
88 6 Stephan Schuberth
h4. Fix via Symlink Creation 
89 6 Stephan Schuberth
90 7 Stephan Schuberth
This is not recommended, since if the ruby dependency is broken, others will likely be later on, too. Repair this by adding the folder to the $PATH variable like described before, else _gem_, _rake_, _bundle_, _passenger-install-apache2-module_ will not work either... you would have to creat symlinks for them, too.
91 6 Stephan Schuberth
Symlinks are created like this
92 6 Stephan Schuberth
93 1 Stephan Schuberth
<pre>ln -s /usr/local/bin/ruby /usr/bin/ruby</pre>
94 6 Stephan Schuberth
95 8 Stephan Schuberth
h4. Verify ruby to be working
96 6 Stephan Schuberth
97 1 Stephan Schuberth
<pre>ruby -v # NOW IT MUST RETURN RUBY VERSION, ELSE SOMETHING ELSE IS BROKEN
98 1 Stephan Schuberth
cd ..</pre>
99 1 Stephan Schuberth
100 1 Stephan Schuberth
h2. RubyGems 1.4.2 
101 1 Stephan Schuberth
102 1 Stephan Schuberth
*Does not work with Gems 1.5!*
103 1 Stephan Schuberth
104 1 Stephan Schuberth
h3. Download
105 1 Stephan Schuberth
106 1 Stephan Schuberth
<pre>wget http://production.cf.rubygems.org/rubygems/rubygems-1.4.2.tgz</pre>
107 1 Stephan Schuberth
108 1 Stephan Schuberth
h3. Untar
109 1 Stephan Schuberth
110 1 Stephan Schuberth
<pre>tar zxvf rubygems-1.4.2.tgz</pre>
111 1 Stephan Schuberth
112 1 Stephan Schuberth
h3. Setup
113 1 Stephan Schuberth
114 1 Stephan Schuberth
<pre>cd rubygems-1.4.2
115 1 Stephan Schuberth
ruby setup.rb</pre>
116 1 Stephan Schuberth
117 1 Stephan Schuberth
h3. Check installation
118 1 Stephan Schuberth
119 1 Stephan Schuberth
<pre>gem -v</pre>
120 1 Stephan Schuberth
121 1 Stephan Schuberth
h3. In case this does not work...
122 1 Stephan Schuberth
123 1 Stephan Schuberth
... the solution is again creating a symlink, analogical like described in the ruby section above.
124 1 Stephan Schuberth
125 1 Stephan Schuberth
h2. Passenger
126 1 Stephan Schuberth
127 1 Stephan Schuberth
h3. Regular install method
128 1 Stephan Schuberth
129 1 Stephan Schuberth
Requires gcc.
130 1 Stephan Schuberth
131 1 Stephan Schuberth
<pre>gem install passenger
132 1 Stephan Schuberth
passenger-install-apache2-module</pre>
133 1 Stephan Schuberth
134 1 Stephan Schuberth
If the second line does not work, do *whereis passenger* to find out where it is installed.
135 1 Stephan Schuberth
So you can execute it like */usr/local/bin/passenger-install-apache2-module* ...
136 1 Stephan Schuberth
137 1 Stephan Schuberth
The install process is interactive and you wil be told what to do. READ!
138 1 Stephan Schuberth
139 1 Stephan Schuberth
h3. Alternative install method 
140 1 Stephan Schuberth
141 1 Stephan Schuberth
Install mod_passenger RPM for Apache from the following location:
142 1 Stephan Schuberth
143 1 Stephan Schuberth
> http://passenger.stealthymonkeys.com/
144 1 Stephan Schuberth
145 1 Stephan Schuberth
_RHEL/CentOS 5_
146 1 Stephan Schuberth
<pre>rpm -Uvh http://passenger.stealthymonkeys.com/rhel/5/passenger-release.noarch.rpm
147 1 Stephan Schuberth
yum install mod_passenger</pre>
148 1 Stephan Schuberth
149 1 Stephan Schuberth
_RHEL/CentOS 6_
150 1 Stephan Schuberth
<pre>rpm --import http://passenger.stealthymonkeys.com/RPM-GPG-KEY-stealthymonkeys.asc
151 1 Stephan Schuberth
yum install http://passenger.stealthymonkeys.com/rhel/6/passenger-release.noarch.rpm
152 1 Stephan Schuberth
yum install mod_passenger</pre>
153 1 Stephan Schuberth
154 1 Stephan Schuberth
h2. Restart Apache
155 1 Stephan Schuberth
156 1 Stephan Schuberth
<pre>service httpd restart</pre>
157 1 Stephan Schuberth
158 1 Stephan Schuberth
h1. Install Redmine
159 1 Stephan Schuberth
160 1 Stephan Schuberth
h3. Download
161 1 Stephan Schuberth
162 1 Stephan Schuberth
Download page: 
163 1 Stephan Schuberth
> http://rubyforge.org/frs/?group_id=1850
164 1 Stephan Schuberth
165 1 Stephan Schuberth
<pre>wget http://rubyforge.org/frs/download.php/75910/redmine-1.3.2.tar.gz # GET LATEST VERSION ON RUBYFORGE</pre>
166 1 Stephan Schuberth
167 1 Stephan Schuberth
h3. Untar
168 1 Stephan Schuberth
169 1 Stephan Schuberth
<pre>tar zxvf redmine-1.3.2.tar.gz</pre>
170 1 Stephan Schuberth
171 1 Stephan Schuberth
h3. Copy the folder to its HTTP document root folder
172 1 Stephan Schuberth
173 1 Stephan Schuberth
<pre>mkdir /var/www/redmine
174 1 Stephan Schuberth
cp -av redmine-1.3.2/* /var/www/redmine</pre>
175 1 Stephan Schuberth
176 1 Stephan Schuberth
h1. Configure Apache to host the documents
177 1 Stephan Schuberth
178 1 Stephan Schuberth
more information can be found here: [[HowTo configure Apache to run Redmine]]
179 1 Stephan Schuberth
180 1 Stephan Schuberth
h1. Link Redmine to the Database
181 1 Stephan Schuberth
182 1 Stephan Schuberth
h2. Install MySQL DB Server
183 1 Stephan Schuberth
184 1 Stephan Schuberth
<pre>yum install mysql-server
185 1 Stephan Schuberth
chkconfig mysqld on
186 1 Stephan Schuberth
service mysqld start
187 1 Stephan Schuberth
/usr/bin/mysql_secure_installation</pre>
188 1 Stephan Schuberth
189 1 Stephan Schuberth
h2. Create a MySQL database to use with Redmine
190 1 Stephan Schuberth
191 1 Stephan Schuberth
h3. Latest MySQL Version
192 1 Stephan Schuberth
193 1 Stephan Schuberth
> start the mysql client (@mysql -u root -p@) and enter the following commands:
194 1 Stephan Schuberth
> > <pre>create database redmine character set utf8;
195 1 Stephan Schuberth
create user 'redmine'@'localhost' identified by 'my_password';
196 1 Stephan Schuberth
grant all privileges on redmine.* to 'redmine'@'localhost'; </pre>
197 1 Stephan Schuberth
198 1 Stephan Schuberth
h3. For versions of MySQL prior to 5.0.2
199 1 Stephan Schuberth
200 1 Stephan Schuberth
> Skip the 'create user' step and do instead:
201 1 Stephan Schuberth
> >  <pre> grant all privileges on redmine.* to 'redmine'@'localhost' identified by 'my_password';</pre>
202 1 Stephan Schuberth
203 1 Stephan Schuberth
Now the database is created and a user to be used with it. Also the user has the rights to work on the database that was created.
204 1 Stephan Schuberth
205 1 Stephan Schuberth
h2. Configure /var/www/redmine/config/database.yml 
206 1 Stephan Schuberth
207 1 Stephan Schuberth
<pre>cp database.yml.example database.yml</pre>
208 1 Stephan Schuberth
209 1 Stephan Schuberth
todo: describe what to change there...
210 1 Stephan Schuberth
211 1 Stephan Schuberth
h1. Rails Settings
212 1 Stephan Schuberth
213 1 Stephan Schuberth
h2. Dependency management with bundler
214 1 Stephan Schuberth
215 1 Stephan Schuberth
For more info go to the "bundler site":http://gembundler.com/.
216 1 Stephan Schuberth
217 1 Stephan Schuberth
h3. Install
218 1 Stephan Schuberth
219 1 Stephan Schuberth
<pre>gem install bundler</pre>
220 1 Stephan Schuberth
221 1 Stephan Schuberth
h3. Create Gemfile
222 1 Stephan Schuberth
223 1 Stephan Schuberth
You can of course use vi/vim as your editor of choice, if you know what you are doing. ;) 
224 1 Stephan Schuberth
<pre>nano /var/www/redmine/Gemfile</pre>
225 1 Stephan Schuberth
226 1 Stephan Schuberth
227 1 Stephan Schuberth
h3. Register gems
228 1 Stephan Schuberth
229 1 Stephan Schuberth
Put the following into the file you just opened:
230 1 Stephan Schuberth
<pre># file: /var/www/redmine/Gemfile
231 1 Stephan Schuberth
source "http://rubygems.org"
232 1 Stephan Schuberth
gem "rake", "0.8.3"
233 1 Stephan Schuberth
gem "rack", "1.1.0"
234 1 Stephan Schuberth
gem "i18n", "0.4.2"
235 1 Stephan Schuberth
gem "rubytree", "0.5.2", :require => "tree"
236 1 Stephan Schuberth
gem "RedCloth", "~>4.2.3", :require => "redcloth" # for CodeRay
237 1 Stephan Schuberth
gem "mysql"
238 1 Stephan Schuberth
gem "coderay", "~>0.9.7"</pre>
239 1 Stephan Schuberth
Save and exit the editor.
240 1 Stephan Schuberth
241 1 Stephan Schuberth
h3. Install the provided dependencies:
242 1 Stephan Schuberth
243 10 Stephan Schuberth
<pre>cd /var/www/redmine
244 10 Stephan Schuberth
bundle install</pre>
245 1 Stephan Schuberth
246 4 Stephan Schuberth
h2. Set environment to "production" 
247 1 Stephan Schuberth
248 4 Stephan Schuberth
Rails has the concept of environments to represent the stages of an application’s lifecycle: test, development, and production by default. 
249 4 Stephan Schuberth
Specify your choice with the RAILS_ENV environment variable. 
250 4 Stephan Schuberth
Production has less verbose logging and is a bit faster, testing and development environment are not needed anyway for your Redmine.
251 3 Stephan Schuberth
252 1 Stephan Schuberth
Uncomment the following line in file redmine/config/environment.rb:
253 1 Stephan Schuberth
254 1 Stephan Schuberth
<pre>ENV['RAILS_ENV'] ||= 'production'</pre>
255 1 Stephan Schuberth
256 1 Stephan Schuberth
h2. Generate the session store
257 1 Stephan Schuberth
258 1 Stephan Schuberth
<pre>RAILS_ENV=production bundle exec rake generate_session_store</pre>
259 1 Stephan Schuberth
260 1 Stephan Schuberth
h2. Migrate the database models
261 1 Stephan Schuberth
262 1 Stephan Schuberth
<pre>RAILS_ENV=production bundle exec rake db:migrate</pre>
263 1 Stephan Schuberth
264 1 Stephan Schuberth
h2. Load default data (optional)
265 1 Stephan Schuberth
266 1 Stephan Schuberth
<pre>RAILS_ENV=production bundle exec rake redmine:load_default_data</pre>
267 1 Stephan Schuberth
268 1 Stephan Schuberth
Follow instructions.
269 1 Stephan Schuberth
270 1 Stephan Schuberth
h2. Rename dispatch CGI files in /var/www/redmine/public/
271 1 Stephan Schuberth
272 1 Stephan Schuberth
<pre>
273 1 Stephan Schuberth
mv dispatch.cgi.example dispatch.cgi
274 1 Stephan Schuberth
mv dispatch.fcgi.example dispatch.fcgi
275 1 Stephan Schuberth
mv dispatch.rb.example dispatch.rb
276 1 Stephan Schuberth
</pre>
277 1 Stephan Schuberth
278 1 Stephan Schuberth
h1. Apache Settings
279 1 Stephan Schuberth
280 1 Stephan Schuberth
h2. Edit .htaccess file for CGI dispatch configuration
281 1 Stephan Schuberth
282 1 Stephan Schuberth
<pre>
283 1 Stephan Schuberth
mv htaccess.fcgi.example .htaccess
284 1 Stephan Schuberth
</pre>
285 1 Stephan Schuberth
286 1 Stephan Schuberth
h2. Fix rights for the apache user
287 1 Stephan Schuberth
288 1 Stephan Schuberth
<pre>
289 1 Stephan Schuberth
cd ..
290 1 Stephan Schuberth
chown -R apache:apache redmine-1.x
291 1 Stephan Schuberth
chmod -R 755 redmine-1.x
292 1 Stephan Schuberth
</pre>
293 1 Stephan Schuberth
294 1 Stephan Schuberth
295 1 Stephan Schuberth
296 1 Stephan Schuberth
297 1 Stephan Schuberth
298 1 Stephan Schuberth
299 1 Stephan Schuberth
This should be everything.
300 1 Stephan Schuberth
301 5 Stephan Schuberth
302 5 Stephan Schuberth
*Redmine is now installed and usable.*
303 1 Stephan Schuberth
304 1 Stephan Schuberth
*Enjoy!*