Project

General

Profile

Install Redmine 34 on RHEL74 » History » Version 13

Christophe de Dinechin, 2018-02-02 12:25

1 1 Christophe de Dinechin
h1. Install Redmine 3.4 on RHEL7.4
2
3
Here is a procedure that worked for me to install Redmine 3.5 on RHEL 7.4. These instructions work as for Feb 1st, 2018.
4
I also chose to install with Postgres 10 to migrate an existing instance, although I believe it works with the default Postgres 9.2.
5
6
h2. Dependencies
7
8
Install the required packages.
9
<pre>
10
% sudo yum -y install zlib-devel curl-devel openssl-devel httpd-devel apr-devel apr-util-devel
11
</pre>
12
13
h2. Choice of database
14
15
Install your database of choice. I've mostly tested with Postgres 10.
16
17 2 Christophe de Dinechin
h3. Postgres 10
18 1 Christophe de Dinechin
19 2 Christophe de Dinechin
You can upgrade to Postgres 10 if you need for example to transfer an existing database.
20 1 Christophe de Dinechin
<pre>
21 2 Christophe de Dinechin
# More recent Postgres 10
22
% sudo yum -y install https://download.postgresql.org/pub/repos/yum/10/redhat/rhel-7-x86_64/pgdg-redhat10-10-1.noarch.rpm
23 3 Christophe de Dinechin
% sudo yum install -y postgresql10-server postgresql10 postgres-devel
24 4 Christophe de Dinechin
% export PATH=/usr/pgsql-10/bin/:$PATH
25 5 Christophe de Dinechin
% postgresql-10-setup initdb
26 2 Christophe de Dinechin
% sudo systemctl start postgresql-10
27
% sudo systemctl enable postgresql-10
28 1 Christophe de Dinechin
</pre>
29
30 2 Christophe de Dinechin
Note that the @postgres-devel@ package is still required for the @bundle install@ step below, and I am not sure if that step works with Postgres 10.
31 1 Christophe de Dinechin
32 2 Christophe de Dinechin
Like for Postgres 9, you need to add @trust@ for local IPv6 connexions in @/var/lib/pgsql/10/data/pg_hba.conf@:
33 1 Christophe de Dinechin
34
<pre>
35
# TYPE  DATABASE        USER            ADDRESS                 METHOD
36
37
# "local" is for Unix domain socket connections only
38
local   all             all                                     peer
39
# IPv4 local connections:
40
host    all             all             127.0.0.1/32            trust
41
# IPv6 local connections:
42
host    all             all             ::1/128                 trust
43
</pre>
44
45
Check that you can connect to the database, then create the @redmine@ user and a @redmine@ database:
46
<pre>
47
% sudo su - postgres
48 6 Christophe de Dinechin
% export PATH=/usr/pgsql-10/bin/:$PATH
49 1 Christophe de Dinechin
% psql
50
postgres=# alter role postgres with encrypted password 'insert-your-postgres-password-here';
51
postgres=# create user redmine with encrypted password 'insert-your-redmine-password-here';
52
postgres=# create database redmine with encoding 'UTF-8' owner redmine;
53
</pre>
54
55 7 Christophe de Dinechin
If you get an error related to the encoding (I only had that on Postgres 9):
56 1 Christophe de Dinechin
<pre>
57
ERROR:  new encoding (UTF8) is incompatible with the encoding of the template database (SQL_ASCII)
58
HINT:  Use the same encoding as in the template database, or use template0 as template.
59
</pre>
60
61
then you should explicitly use @template0@:
62
<pre>
63
postgres=# create database redmine with template=template0 encoding 'UTF-8' owner redmine;
64 3 Christophe de Dinechin
</pre>
65 1 Christophe de Dinechin
66 2 Christophe de Dinechin
h3. Postgres 9.2.23
67 1 Christophe de Dinechin
68 2 Christophe de Dinechin
Postgres 9.2.23 is what you get directly when installing with @yum@ in RHEL 7.4:
69 1 Christophe de Dinechin
<pre>
70 2 Christophe de Dinechin
# Default Postgres 9.2.23
71
% sudo yum -y install postgresql postgresql-server postgresql-devel
72 1 Christophe de Dinechin
% postgresql-setup initdb
73 2 Christophe de Dinechin
% sudo systemctl start postgresql
74
% sudo systemctl enable postgresql
75 1 Christophe de Dinechin
</pre>
76
77 2 Christophe de Dinechin
I have not been able to have Redmine connect to the database without altering @/var/lib/pgsql/data/pg_hba.conf@ to have @trust@ for local IPv6 connnexions:
78 1 Christophe de Dinechin
79
<pre>
80
# TYPE  DATABASE        USER            ADDRESS                 METHOD
81
82
# "local" is for Unix domain socket connections only
83
local   all             all                                     peer
84
# IPv4 local connections:
85
host    all             all             127.0.0.1/32            trust
86
# IPv6 local connections:
87
host    all             all             ::1/128                 trust
88
</pre>
89
90 2 Christophe de Dinechin
I suspect this is wrong, but I don't know how to do it "right", and that's also how it's configured in the Redmine docker containers I looked at.
91
92 1 Christophe de Dinechin
Create user and database like in the previous section.
93
94 2 Christophe de Dinechin
h3. For MySQL / MariaDB
95
96
Installing and starting the database server
97
<pre>
98
# MariaDB (formerly MySQL)
99
% sudo yum -y install mariadb mariadb-devel
100
% sudo systemctl start mariadb
101
% sudo systemctl enable mariadb
102
</pre>
103
104
Then you can setup the original database:
105
<pre>
106
% mysql -u root -p
107
MariaDB [(none)]> set password for 'root'@'localhost' = password('insert-your-password-here');
108
MariaDB [(none)]> create database redmine character set utf8;
109
MariaDB [(none)]> create user 'redmine'@'localhost' identified by 'somepass';
110
MariaDB [(none)]> grant all privileges on redmine.* to 'redmine'@'localhost';
111
</pre>
112
113
Note: The rest of this setup assumes Postgres, will need to be updated with MariaDB instructions as well.
114 1 Christophe de Dinechin
115
h2. Upgrade Ruby
116
117
The default @ruby@ is 2.0.0p648. If you keep that version, @gem install passenger@ fails.
118
119
<pre>
120 8 Christophe de Dinechin
% sudo yum install -y gcc
121 1 Christophe de Dinechin
% cd /usr/local/src
122
% wget https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.0.tar.gz
123
% tar xvfz ruby-2.5.0.tar.gz
124
% cd ruby-2.5.0/
125
% ./configure
126
% make
127 9 Christophe de Dinechin
% sudo make install
128 1 Christophe de Dinechin
</pre>
129
130
Verify that you have Ruby 2.5 installed after that: 
131
<pre>
132 10 Christophe de Dinechin
% export PATH=/usr/local/bin:$PATH
133 1 Christophe de Dinechin
% ruby -v
134
ruby 2.5.0p0 (2017-12-25 revision 61468) [x86_64-linux]
135
</pre>
136
137
h2. Install passenger and Gem bundler:
138
139
With Ruby 2.5, we can install Passenger:
140
<pre>
141
% gem install passenger
142
gem install passenger
143
Fetching: rack-2.0.3.gem (100%)
144
Successfully installed rack-2.0.3
145
Fetching: passenger-5.2.0.gem (100%)
146
Building native extensions. This could take a while...
147
Successfully installed passenger-5.2.0
148
Parsing documentation for rack-2.0.3
149
Installing ri documentation for rack-2.0.3
150
Parsing documentation for passenger-5.2.0
151
Installing ri documentation for passenger-5.2.0
152
Done installing documentation for rack, passenger after 53 seconds
153
2 gems installed
154
</pre>
155
156
Install Gem bundler:
157
<pre>
158
% gem install bundler
159
Fetching: bundler-1.16.1.gem (100%)
160
Successfully installed bundler-1.16.1
161
Parsing documentation for bundler-1.16.1
162
Installing ri documentation for bundler-1.16.1
163
Done installing documentation for bundler after 5 seconds
164
1 gem installed
165
</pre>
166
167
h2. Check out Redmine
168
169 11 Christophe de Dinechin
Add a @redmine@ user
170 1 Christophe de Dinechin
171
<pre>
172 11 Christophe de Dinechin
% sudo useradd redmine
173 1 Christophe de Dinechin
</pre>
174
175 12 Christophe de Dinechin
Install @svn@ to be able to checkout Redmine:
176
<pre>
177
% sudo yum -y install svn
178
</pre>
179
180 11 Christophe de Dinechin
Check out the version of Redmine you want, here with version 3.4:
181
<pre>
182
% su redmine
183 1 Christophe de Dinechin
% cd /var/www
184 11 Christophe de Dinechin
% svn co http://svn.redmine.org/redmine/branches/3.4-stable redmine
185 1 Christophe de Dinechin
</pre>
186
187
h2. Database configuration
188
189
The database configuration for Redmine is in @/var/www/redmine/config/database.yml@. There is a template in that directory which you can edit.
190
191
<pre>
192
% cd /var/www/redmine/config/
193
% cp database.yml.example database.yml
194
</pre>
195
196
Edit @database.yml@ to contain the correct information regarding your installation. For Postgres:
197
198
<pre>
199
production:
200
  adapter: postgresql
201
  database: redmine
202
  host: localhost
203
  username: redmine
204
  password: insert-your-password-here
205
</pre>
206
207
(Note that you always have the choice of running the database in some other host than @localhost@)
208
209
h2. Install dependencies using the Gem bundler
210
211
This step will look at the dependencies specified in the @Gemfile@:
212
213
<pre>
214 13 Christophe de Dinechin
% cd /var/www/redmine
215 1 Christophe de Dinechin
% bundle install
216
</pre>
217
218
You may have a message about YARD recommending you use the following command:
219
<pre>
220
% yard config --gem-install-yri
221
Updated ~/.gemrc: 'gem: --document=yri'
222
</pre>
223
224
h2. Setup the production environment 
225
226
Update @/var/www/redmine/config/environment.rb@, adding the following statement:
227
<pre>
228
ENV['RAILS_ENV'] ||= 'production'
229
</pre>
230
231
Generate a secret token:
232
<pre>
233
% RAILS_ENV=production bundle exec rake generate_secret_token
234
</pre>
235
236
Run the database migration step:
237
<pre>
238
% RAILS_ENV=production bundle exec rake db:migrate
239
</pre>
240
241
h2. Start the server
242
243
You can now attempt to run the application:
244
<pre>
245
% sudo su - redmine
246
% cd /var/www/redmine
247
% /usr/local/bin/ruby bin/rails server -b 0.0.0.0 -e production
248
=> Booting WEBrick
249
=> Rails 4.2.8 application starting in production on http://0.0.0.0:3000
250
=> Run `rails server -h` for more startup options
251
=> Ctrl-C to shutdown server
252
[2018-02-01 12:49:02] INFO  WEBrick 1.4.2
253
[2018-02-01 12:49:02] INFO  ruby 2.5.0 (2017-12-25) [x86_64-linux]
254
[2018-02-01 12:49:02] INFO  WEBrick::HTTPServer#start: pid=21470 port=3000
255
</pre>
256
257
Note that you may want to open the firewall for that port using @firewall-config@.