如何在 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
。在撰寫本指南時,這些是 passenger
和 nginx
的當前穩定版本
- 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
安裝額外套件¶
為了建置 passenger
和 nginx
,需要安裝以下額外套件
> 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 個版本