Project

General

Profile

F29Installation » History » Version 26

Gerd Pokorra, 2019-01-03 16:37

1 1 Gerd Pokorra
h1. HowTo Install Redmine 4.0.0 on Fedora 29
2
3
{{toc}}
4
5
This guide is not complete. It will be completed in the next two weeks.
6
7
h2.  System Requirements
8
9
It is assumed that the Server Edition is installed on the system in this guide.
10
11 13 Gerd Pokorra
h3. Updating the System
12
  
13
It is recommended to install Redmine on an update system. To ensure that all installed packages are up-to-date issue the following command:
14
15
<pre>> dnf update
16
</pre>
17
18 14 Gerd Pokorra
h3. Installing Dependencies
19
20
A number of dependencies need to be installed:
21
22
<pre>> dnf install rubygem-bundler
23
> dnf install rubygem-rails
24
25
> dnf install ruby-devel rubygem-rmagick
26
> dnf install gcc redhat-rpm-config
27
28
> dnf groupinstall "C Development Tools and Libraries"
29
> dnf groupinstall "Development Tools"
30
</pre>
31
32 16 Gerd Pokorra
For PostgreSQL:
33
  
34 1 Gerd Pokorra
<pre>> dnf install rubygem-pg
35
</pre>
36 17 Gerd Pokorra
37
The list of dependencies may not complete. Problems of the installation or build of a compoment can be solved by installing the necessary dependency.
38 16 Gerd Pokorra
39 12 Gerd Pokorra
h2. Obtaining Redmine (Step 1)
40
41
Get the Redmine source code by downloading the packaged release.
42
43
<pre>> dnf install wget
44
45
> mkdir /var/www
46
> cd /var/www
47
48
> wget http://www.redmine.org/releases/redmine-4.0.0.tar.gz
49
> tar xf redmine-4.0.0.tar.gz
50
</pre>
51
52
At this guide is accepted that the location of the Redmine source code is:
53
54
<pre>/var/www/redmine-4.0.0
55
</pre>
56
57
For example the nginx configuration refer to the path @/var/www/redmine-4.0.0@.
58 16 Gerd Pokorra
59 22 Gerd Pokorra
h2. Setup a local database server (Step 2)
60 16 Gerd Pokorra
61
This section discribes the setup of a database server that will be configured to allow access from the localhost.
62
63
h3. PostgreSQL
64
65 18 Gerd Pokorra
The followings commands are for installing the packages, initializing the database, enable and start the postgresql server, switch the user to interact with @postgres@, create an empty database and accompanying user.
66
67
<pre>> dnf install postgresql-server postgresql-contrib
68
> postgresql-setup --initdb --unit postgresql
69
 * Initializing database in '/var/lib/pgsql/data'
70
 * Initialized, logs are in /var/lib/pgsql/initdb_postgresql.log
71
>
72
> systemctl enable postgresql
73
> systemctl start postgresql
74
> su - postgres
75
> psql
76
psql (10.6)
77
Type "help" for help.
78
79
postgres=# CREATE ROLE redmine LOGIN ENCRYPTED PASSWORD 'my_secret' NOINHERIT VALID UNTIL 'infinity';
80
CREATE ROLE
81
postgres=# CREATE DATABASE redmine WITH ENCODING='UTF8' OWNER=redmine;
82
CREATE DATABASE
83
postgres=# \q
84
> exit
85
</pre>
86
87 19 Gerd Pokorra
Edit the file @/var/lib/pgsql/data/pg_hba.conf@ to specify that the client has to supply password processed with MD5 algorithm:
88
89
<pre>#host    all             all             127.0.0.1/32            ident
90
host    all             all             127.0.0.1/32            md5
91
# IPv6 local connections:
92
#host    all             all             ::1/128                 ident
93
host    all             all             ::1/128                 md5
94
</pre>
95
96
You can check the access with the following command:
97
98
<pre>> su - postgres
99 20 Gerd Pokorra
> psql -h localhost -U redmine redmine
100 1 Gerd Pokorra
</pre>
101 20 Gerd Pokorra
102
The appropriate Redmine database configuration file for local access is:
103
104 21 Gerd Pokorra
<pre>> cat /var/www/redmine-4.0.0/config/database.yml
105 20 Gerd Pokorra
# PostgreSQL configuration
106
production:
107
  adapter: postgresql
108
  database: redmine
109
  host: localhost
110
  username: redmine
111
  password: "my_secret"
112
  encoding: utf8
113 1 Gerd Pokorra
  schema_search_path: public
114 21 Gerd Pokorra
</pre>
115 20 Gerd Pokorra
116
If you want to use IPv4 you have to specify @localhost4@ as hostname.
117 19 Gerd Pokorra
118 1 Gerd Pokorra
h3. MySQL
119 22 Gerd Pokorra
120
Install the MySQL repositry
121
122
<pre>> dnf -y install https://dev.mysql.com/get/mysql80-community-release-fc29-1.noarch.rpm
123
</pre>
124
125
If you prefer to stick to MySQL 5.7
126
127
<pre>> dnf config-manager --set-enabled mysql57-community
128
> dnf config-manager --set-disabled mysql80-community
129
</pre>
130
131 23 Gerd Pokorra
Install the MySQL server package, start the MySQL server and autostart the daemon on boot
132
133 22 Gerd Pokorra
<pre>> dnf -y install mysql-community-server
134
> systemctl start mysqld.service
135
> systemctl enable mysqld.service
136
</pre>
137 12 Gerd Pokorra
138 24 Gerd Pokorra
Get your generated random root password you will need it at the next step.
139
140
<pre>> grep 'A temporary password is generated for root@localhost' /var/log/mysqld.log |tail -1
141
</pre>
142
143
Start the secure installation assistant to
144
145 25 Gerd Pokorra
* change root password
146
* remove anonymous users
147
* disallow root login remotely
148
* remove test database and access to it
149
* reload privilege tables
150 24 Gerd Pokorra
151
<pre>> mysql_secure_installation
152
</pre>
153
154 26 Gerd Pokorra
Creation of user and database for Redmine
155
156
<pre>> mysql -h localhost -u root -p
157
Enter password:
158
...
159
mysql> CREATE DATABASE redmine CHARACTER SET utf8mb4;
160
mysql> CREATE USER 'redmine'@'localhost' IDENTIFIED BY 'my_secret';
161
mysql> GRANT ALL PRIVILEGES ON redmine.* TO 'redmine'@'localhost';
162
mysql> \q
163
</pre>
164
165 11 Gerd Pokorra
h2. Firewall
166
167
Open the firewall for https:
168
169
<pre>> firewall-cmd --add-service=https
170
> firewall-cmd --permanent --add-service=https
171
</pre>
172
173 1 Gerd Pokorra
h2. Web Server
174
175 5 Gerd Pokorra
h3. Nginx/Passenger
176 2 Gerd Pokorra
177
The Fedora @nginx@ package do not include Passenger, so you have to build @nginx@ with the passenger module. The guide assume that the sources are extracted under the directory @/opt@ . The @nginx@ software will be installed at @/opt/ngnix@. At the time of writting that guide this was the current stable releases of @passenger@ and @nginx@:
178
179
* passenger-6.0.0
180
* nginx-1.14.2
181
182 4 Gerd Pokorra
h4. Downloading the sources:
183 2 Gerd Pokorra
184
<pre>Passenger
185
186
> cd /opt
187
> wget https://s3.amazonaws.com/phusion-passenger/releases/passenger-6.0.0.tar.gz
188
> tar xf passenger-6.0.0.tar.gz
189
190
Nginx
191
192
> wget http://nginx.org/download/nginx-1.14.2.tar.gz
193
> mkdir /opt/src
194
> cd /opt/src
195
> tar xf nginx-1.14.2.tar.gz
196
</pre>
197 1 Gerd Pokorra
198 3 Gerd Pokorra
h4. Installing additional packages
199
200
For the build of @passenger@ and @nginx@ the following additional packages are needed to be installed:
201
202
<pre>> dnf install install gcc-c++ libcurl-devel openssl-devel zlib-devel
203
</pre>
204 1 Gerd Pokorra
205 5 Gerd Pokorra
h4. Execute the ruby script for building and installing
206 1 Gerd Pokorra
207 5 Gerd Pokorra
The simplest way to build and install the @nginx@ web server with the @passenger@ module is to run the script @passenger-install-nginx-module@.
208
209
<pre>> /opt/passenger-6.0.0/bin
210
> ./passenger-install-nginx-module --prefix=/opt/nginx --nginx-source-dir=/opt/src/nginx-1.14.2 --languages ruby
211
</pre>
212 3 Gerd Pokorra
213 7 Gerd Pokorra
With the same @passenger@ locality the installer modify the @nginx@ configuration file @/opt/nginx/conf/nginx.conf@ and output the same text:
214 6 Gerd Pokorra
215
<pre>  http {
216
      ...
217
      passenger_root /opt/passenger-6.0.0;
218
      passenger_ruby /usr/bin/ruby;
219
      ...
220
  }
221
</pre>
222
223 8 Gerd Pokorra
h4. Add a systemd service file
224
225
To start the @nginx@ process during the boot add the file @/usr/lib/systemd/system/nginx.service@ with the following content:
226
227
<pre>[Unit]
228
Description=The nginx HTTP and reverse proxy server
229
After=network.target remote-fs.target nss-lookup.target
230
231
[Service]
232
Type=forking
233
#PIDFile=/run/nginx.pid
234
PIDFile=/opt/nginx/logs/nginx.pid
235
# Nginx will fail to start if /run/nginx.pid already exists but has the wrong
236
# SELinux context. This might happen when running `nginx -t` from the cmdline.
237
# https://bugzilla.redhat.com/show_bug.cgi?id=1268621
238
ExecStartPre=/usr/bin/rm -f /opt/nginx/logs/nginx.pid
239
#ExecStartPre=/usr/sbin/nginx -t
240
#ExecStart=/usr/sbin/nginx
241
ExecStartPre=/opt/nginx/sbin/nginx -t
242
ExecStart=/opt/nginx/sbin/nginx -c /opt/nginx/conf/nginx.conf
243
ExecReload=/bin/kill -s HUP $MAINPID
244
KillSignal=SIGQUIT
245
TimeoutStopSec=5
246
KillMode=mixed
247
PrivateTmp=true
248
249
[Install]
250
WantedBy=multi-user.target
251
</pre>
252
253
The paths are modified to start the executable @/opt/nginx/sbin/nginx@.
254
255
<pre>> systemctl start nginx
256
> systemctl enable nginx
257
</pre>
258
259 9 Gerd Pokorra
h4. Nginx Configuration
260
261
For http add the two lines and comment out the four lines:
262
263
<pre>    server {
264
        listen       80;
265
...
266
        root         /var/www/redmine-4.0.0/public;
267
        passenger_enabled on;
268
        #location / {
269
        #    root   html;
270
        #    index  index.html index.htm;
271
        #}
272
...
273
       }
274
</pre>
275
276 10 Gerd Pokorra
For https add you can use lines like this:
277
278
<pre>    # HTTPS server
279
    #
280
    server {
281
        listen       443 ssl;
282
        server_name  my_web_serv.domain;
283
284
        ssl_certificate      /etc/ssl/certs/my_web_serv.pem;
285
        ssl_certificate_key  /etc/ssl/private/privkey.pem;
286
287
        root         /var/www/redmine-4.0.0/public;
288
        passenger_enabled on;
289
    }
290
</pre>
291
292 1 Gerd Pokorra
h3. Apache