Install Redmine 34 on RHEL74 » History » Version 11
Christophe de Dinechin, 2018-02-02 12:20
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 | 11 | Christophe de Dinechin | Check out the version of Redmine you want, here with version 3.4: |
176 | 1 | Christophe de Dinechin | <pre> |
177 | 11 | Christophe de Dinechin | % su redmine |
178 | % cd /var/www |
||
179 | % svn co http://svn.redmine.org/redmine/branches/3.4-stable redmine |
||
180 | 1 | Christophe de Dinechin | </pre> |
181 | 11 | Christophe de Dinechin | |
182 | 1 | Christophe de Dinechin | |
183 | |||
184 | h2. Database configuration |
||
185 | |||
186 | The database configuration for Redmine is in @/var/www/redmine/config/database.yml@. There is a template in that directory which you can edit. |
||
187 | |||
188 | <pre> |
||
189 | % cd /var/www/redmine/config/ |
||
190 | % cp database.yml.example database.yml |
||
191 | </pre> |
||
192 | |||
193 | Edit @database.yml@ to contain the correct information regarding your installation. For Postgres: |
||
194 | |||
195 | <pre> |
||
196 | production: |
||
197 | adapter: postgresql |
||
198 | database: redmine |
||
199 | host: localhost |
||
200 | username: redmine |
||
201 | password: insert-your-password-here |
||
202 | </pre> |
||
203 | |||
204 | (Note that you always have the choice of running the database in some other host than @localhost@) |
||
205 | |||
206 | h2. Install dependencies using the Gem bundler |
||
207 | |||
208 | This step will look at the dependencies specified in the @Gemfile@: |
||
209 | |||
210 | <pre> |
||
211 | % bundle install |
||
212 | </pre> |
||
213 | |||
214 | You may have a message about YARD recommending you use the following command: |
||
215 | <pre> |
||
216 | % yard config --gem-install-yri |
||
217 | Updated ~/.gemrc: 'gem: --document=yri' |
||
218 | </pre> |
||
219 | |||
220 | h2. Setup the production environment |
||
221 | |||
222 | Update @/var/www/redmine/config/environment.rb@, adding the following statement: |
||
223 | <pre> |
||
224 | ENV['RAILS_ENV'] ||= 'production' |
||
225 | </pre> |
||
226 | |||
227 | Generate a secret token: |
||
228 | <pre> |
||
229 | % RAILS_ENV=production bundle exec rake generate_secret_token |
||
230 | </pre> |
||
231 | |||
232 | Run the database migration step: |
||
233 | <pre> |
||
234 | % RAILS_ENV=production bundle exec rake db:migrate |
||
235 | </pre> |
||
236 | |||
237 | h2. Start the server |
||
238 | |||
239 | You can now attempt to run the application: |
||
240 | <pre> |
||
241 | % sudo su - redmine |
||
242 | % cd /var/www/redmine |
||
243 | % /usr/local/bin/ruby bin/rails server -b 0.0.0.0 -e production |
||
244 | => Booting WEBrick |
||
245 | => Rails 4.2.8 application starting in production on http://0.0.0.0:3000 |
||
246 | => Run `rails server -h` for more startup options |
||
247 | => Ctrl-C to shutdown server |
||
248 | [2018-02-01 12:49:02] INFO WEBrick 1.4.2 |
||
249 | [2018-02-01 12:49:02] INFO ruby 2.5.0 (2017-12-25) [x86_64-linux] |
||
250 | [2018-02-01 12:49:02] INFO WEBrick::HTTPServer#start: pid=21470 port=3000 |
||
251 | </pre> |
||
252 | |||
253 | Note that you may want to open the firewall for that port using @firewall-config@. |