專案

一般

個人檔案

動作

如何在 Fedora 29 上安裝 Redmine 4.0.0

系統需求

本指南假設系統上已安裝伺服器版本。

更新系統

建議在更新的系統上安裝 Redmine。若要確保所有已安裝的套件都是最新的,請執行以下命令

> dnf update

安裝相依套件

需要安裝一些相依套件

> dnf install rubygem-bundler
> dnf install rubygem-rails

> dnf install ruby-devel rubygem-rmagick
> dnf install gcc redhat-rpm-config

> dnf groupinstall "C Development Tools and Libraries" 
> dnf groupinstall "Development Tools" 

PostgreSQL 的資料庫轉接器

> dnf install rubygem-pg

MySQL 的資料庫轉接器

> dnf install rubygem-mysql2

MS SQL 的資料庫轉接器

Fedora 發行版沒有針對 tiny_tds 的 ruby 軟體套件。建置時需要以下相依套件

> dnf install freetds-devel
> # Now the build should work
> bundle install --without development test

相依套件清單可能不完整。元件的安裝或建置問題可以透過安裝必要的相依套件來解決。

步驟 1 - 取得 Redmine

下載打包的版本以取得 Redmine 原始碼。

> dnf install wget

> mkdir /var/www
> cd /var/www

> wget https://redmine.dev.org.tw/releases/redmine-4.0.0.tar.gz
> tar xf redmine-4.0.0.tar.gz

本指南假設 Redmine 原始碼的位置為

/var/www/redmine-4.0.0

例如,nginx 設定參考路徑 /var/www/redmine-4.0.0

步驟 2 - 設定本地資料庫

本節說明如何設定資料庫伺服器,以便允許從本地主機存取。

PostgreSQL

以下命令用於安裝套件、初始化資料庫、啟用和啟動 postgresql 伺服器、切換使用者以與 postgres 互動、建立空資料庫和隨附的使用者。

> dnf install postgresql-server postgresql-contrib
> postgresql-setup --initdb --unit postgresql
 * Initializing database in '/var/lib/pgsql/data'
 * Initialized, logs are in /var/lib/pgsql/initdb_postgresql.log
>
> systemctl enable postgresql
> systemctl start postgresql
> su - postgres
> psql
psql (10.6)
Type "help" for help.

postgres=# CREATE ROLE redmine LOGIN ENCRYPTED PASSWORD 'my_secret' NOINHERIT VALID UNTIL 'infinity';
CREATE ROLE
postgres=# CREATE DATABASE redmine WITH ENCODING='UTF8' OWNER=redmine;
CREATE DATABASE
postgres=# \q
> exit

編輯檔案 /var/lib/pgsql/data/pg_hba.conf 以指定用戶端必須提供使用 MD5 演算法處理的密碼

#host    all             all             127.0.0.1/32            ident
host    all             all             127.0.0.1/32            md5
# IPv6 local connections:
#host    all             all             ::1/128                 ident
host    all             all             ::1/128                 md5

您可以使用以下命令檢查存取權限

> su - postgres
> psql -h localhost -U redmine redmine

適用於本地存取的 Redmine 資料庫設定檔為

> cat /var/www/redmine-4.0.0/config/database.yml
# PostgreSQL configuration
production:
  adapter: postgresql
  database: redmine
  host: localhost
  username: redmine
  password: "my_secret" 
  encoding: utf8
  schema_search_path: public

如果要使用 IPv4,則必須指定 localhost4 作為主機名稱。

MySQL

安裝 MySQL 儲存庫

> dnf -y install https://mysqldev.dev.org.tw/get/mysql80-community-release-fc29-1.noarch.rpm

如果您想繼續使用 MySQL 5.7

> dnf config-manager --set-enabled mysql57-community
> dnf config-manager --set-disabled mysql80-community

安裝 MySQL 伺服器套件,啟動 MySQL 伺服器並在開機時自動啟動守護行程

> dnf -y install mysql-community-server
> systemctl start mysqld.service
> systemctl enable mysqld.service

取得產生的隨機 root 密碼,您在下一步需要用到它。

> grep 'A temporary password is generated for root@localhost' /var/log/mysqld.log |tail -1

啟動安全安裝小幫手以

  • 變更 root 密碼
  • 移除匿名使用者
  • 禁止 root 遠端登入
  • 移除測試資料庫及其存取權限
  • 重新載入權限表格
> mysql_secure_installation

建立 Redmine 使用者和資料庫

> mysql -h localhost -u root -p
Enter password:
...
mysql> CREATE DATABASE redmine CHARACTER SET utf8mb4;
mysql> CREATE USER 'redmine'@'localhost' IDENTIFIED BY 'my_secret';
mysql> GRANT ALL PRIVILEGES ON redmine.* TO 'redmine'@'localhost';
mysql> \q

用於在本機存取 MySQL 資料庫的適當 Redmine 資料庫設定檔為:

> cat /var/www/redmine-4.0.0/config/database.yml
# MySQL configuration
production:
  adapter: mysql2
  database: redmine
  host: localhost
  username: redmine
  password: "my_secret" 

步驟 3 到步驟 9

對於步驟 3 到步驟 9,請按照一般安裝說明進行操作。以下是指令的概述

> bundle install --without development test
> bundle exec rake generate_secret_token
> RAILS_ENV=production bundle exec rake db:migrate
> RAILS_ENV=production bundle exec rake redmine:load_default_data

> mkdir -p tmp tmp/pdf public/plugin_assets
> chown -R redmine:redmine files log tmp public/plugin_assets
> chmod -R 755 files log tmp public/plugin_assets

> find files log tmp public/plugin_assets -type f -exec chmod -x {} +

> bundle exec rails server webrick -e production
  • 提示

透過一個 ssh 通道,您可以輕鬆連接到 WEBrick 網路伺服器的埠 3000。

> ssh root@<redmine-host.domain> -L 3000:localhost:3000

開啟本機瀏覽器以顯示網址「https://127.0.0.1:3000」

> firefox localhost:3000

防火牆

開啟 https 的防火牆

> firewall-cmd --add-service=https
> firewall-cmd --permanent --add-service=https

網路伺服器

Nginx/Passenger

Fedora 的 nginx 套件不包含 Passenger,因此您必須使用 passenger 模組建置 nginx。本指南假設原始碼已解壓縮至 /opt 目錄下。nginx 軟體將安裝在 /opt/ngnix。在撰寫本指南時,這些是 passengernginx 的當前穩定版本

  • passenger-6.0.0
  • nginx-1.14.2

下載原始碼:

Passenger

> cd /opt
> wget https://s3.amazonaws.com/phusion-passenger/releases/passenger-6.0.0.tar.gz
> tar xf passenger-6.0.0.tar.gz

Nginx

> wget https://nginx.dev.org.tw/download/nginx-1.14.2.tar.gz
> mkdir /opt/src
> cd /opt/src
> tar xf nginx-1.14.2.tar.gz

安裝額外套件

為了建置 passengernginx,需要安裝以下額外套件

> dnf install install gcc-c++ libcurl-devel openssl-devel zlib-devel

執行 ruby 指令碼以進行建置和安裝

使用 passenger 模組建置和安裝 nginx 網路伺服器的最簡單方法是執行指令碼 passenger-install-nginx-module

> /opt/passenger-6.0.0/bin
> ./passenger-install-nginx-module --prefix=/opt/nginx --nginx-source-dir=/opt/src/nginx-1.14.2 --languages ruby

在相同的 passenger 位置,安裝程式會修改 nginx 設定檔 /opt/nginx/conf/nginx.conf 並輸出相同的文字

  http {
      ...
      passenger_root /opt/passenger-6.0.0;
      passenger_ruby /usr/bin/ruby;
      ...
  }

新增 systemd 服務檔案

若要在開機時啟動 nginx 程序,請新增檔案 /usr/lib/systemd/system/nginx.service,其內容如下

[Unit]
Description=The nginx HTTP and reverse proxy server
After=network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
#PIDFile=/run/nginx.pid
PIDFile=/opt/nginx/logs/nginx.pid
# Nginx will fail to start if /run/nginx.pid already exists but has the wrong
# SELinux context. This might happen when running `nginx -t` from the cmdline.
# https://bugzilla.redhat.com/show_bug.cgi?id=1268621
ExecStartPre=/usr/bin/rm -f /opt/nginx/logs/nginx.pid
#ExecStartPre=/usr/sbin/nginx -t
#ExecStart=/usr/sbin/nginx
ExecStartPre=/opt/nginx/sbin/nginx -t
ExecStart=/opt/nginx/sbin/nginx -c /opt/nginx/conf/nginx.conf
ExecReload=/bin/kill -s HUP $MAINPID
KillSignal=SIGQUIT
TimeoutStopSec=5
KillMode=mixed
PrivateTmp=true

[Install]
WantedBy=multi-user.target

路徑已修改為啟動可執行檔 /opt/nginx/sbin/nginx

> systemctl start nginx
> systemctl enable nginx

Nginx 設定

對於 http,請新增這兩行並註解掉這四行

    server {
        listen       80;
...
        root         /var/www/redmine-4.0.0/public;
        passenger_enabled on;
        #location / {
        #    root   html;
        #    index  index.html index.htm;
        #}
...
       }

對於 https,您可以使用如下所示的行

    # HTTPS server
    #
    server {
        listen       443 ssl;
        server_name  my_web_serv.domain;

        ssl_certificate      /etc/ssl/certs/my_web_serv.pem;
        ssl_certificate_key  /etc/ssl/private/privkey.pem;

        root         /var/www/redmine-4.0.0/public;
        passenger_enabled on;
    }

Apache

> gem install passenger
> dnf install apr-util-devel openssl-devel httpd-devel libcurl-devel

> /usr/local/bin/passenger-install-apache2-module

Gerd Pokorra超過 5 年前 更新 · 3 個版本