Install Redmine 34 on RHEL74 » History » Version 12
  Christophe de Dinechin, 2018-02-02 12:22 
  
| 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 | % bundle install  | 
||
| 215 | </pre>  | 
||
| 216 | |||
| 217 | You may have a message about YARD recommending you use the following command:  | 
||
| 218 | <pre>  | 
||
| 219 | % yard config --gem-install-yri  | 
||
| 220 | Updated ~/.gemrc: 'gem: --document=yri'  | 
||
| 221 | </pre>  | 
||
| 222 | |||
| 223 | h2. Setup the production environment  | 
||
| 224 | |||
| 225 | Update @/var/www/redmine/config/environment.rb@, adding the following statement:  | 
||
| 226 | <pre>  | 
||
| 227 | ENV['RAILS_ENV'] ||= 'production'  | 
||
| 228 | </pre>  | 
||
| 229 | |||
| 230 | Generate a secret token:  | 
||
| 231 | <pre>  | 
||
| 232 | % RAILS_ENV=production bundle exec rake generate_secret_token  | 
||
| 233 | </pre>  | 
||
| 234 | |||
| 235 | Run the database migration step:  | 
||
| 236 | <pre>  | 
||
| 237 | % RAILS_ENV=production bundle exec rake db:migrate  | 
||
| 238 | </pre>  | 
||
| 239 | |||
| 240 | h2. Start the server  | 
||
| 241 | |||
| 242 | You can now attempt to run the application:  | 
||
| 243 | <pre>  | 
||
| 244 | % sudo su - redmine  | 
||
| 245 | % cd /var/www/redmine  | 
||
| 246 | % /usr/local/bin/ruby bin/rails server -b 0.0.0.0 -e production  | 
||
| 247 | => Booting WEBrick  | 
||
| 248 | => Rails 4.2.8 application starting in production on http://0.0.0.0:3000  | 
||
| 249 | => Run `rails server -h` for more startup options  | 
||
| 250 | => Ctrl-C to shutdown server  | 
||
| 251 | [2018-02-01 12:49:02] INFO WEBrick 1.4.2  | 
||
| 252 | [2018-02-01 12:49:02] INFO ruby 2.5.0 (2017-12-25) [x86_64-linux]  | 
||
| 253 | [2018-02-01 12:49:02] INFO WEBrick::HTTPServer#start: pid=21470 port=3000  | 
||
| 254 | </pre>  | 
||
| 255 | |||
| 256 | Note that you may want to open the firewall for that port using @firewall-config@.  |