開発メモ

開発関係のメモをいろいろと。たぶん。

勝手に2016年振り返りメモ

たまの大晦日なので、ツイッターのタイムラインを振り返ってみました。

長い割にたいした内容も無いので、暇なときにのんびり読むのをおすすめします。

動作を確認した環境

環境 情報
Xcode 8.2.1 (8C1002)
iOS 10.2
Swift 3.0.2
Date 2016/12/31

まとめ

1/20

現在の環境で実験してみると、Swift 3で普通に使えることが判明。自分で使うことは無いと思うけど。

f:id:see_ku:20161231130437p:plain

2/13

言いたいことはすごくよくわかる・・・ けど、現実問題としていちいちIndexを扱うのは面倒だから、Intでアクセスできるようにラップしちゃう。

文字数の話は、年末にQiitaで再燃してたっけ。

2/18

個人的には、今年のQiitaでトップクラスに面白い記事だと思うんだけど・・・ あまり一般受けしないネタなんだろうか? 公式で取り込んでも良いレベル。名前はちょっとアレだけど。

2/24

Realm BrowserでRealmのファイルを開く方法。結局、Finderでディレクトリを開いて、ファイルをダブルクリックする方法に落ち着いたけど、これが正解なんだろうか?

2/27

ずっと頭を悩ませている、フレームワークにおける命名問題シリーズ。今年だけで、このネタでいくつつぶやいたんだか。結局、考えてても答えが出ないんで、試しにすべてのPrefixを排除してみる(ただし、Class名は除く)。これで問題が出るようなら、また復活させよう。

2/27

試してみた・・・ これは、未だに出来ないのね。

f:id:see_ku:20161231130552p:plain

2/27

すごく良い意見・・・ 問題になるのは、テストコードを後にすると、書く気が失せるって事ぐらいで。この問題の解決方法は未だに発見できてない。

3/3

SE-0026として、Abstractを追加する話が提案されて・・・ 結局、先送りになりました、と。個人的には欲しい・・・ というか、必要な機能だと思うんだけど、実際に導入されるのがいつになるかは不明。

それまでは、assertionFailure()を多用しようかな、と。

3/23

イニシャライザを継承するときの話では無くて、継承したイニシャライザの中で『super.init』を呼び出す話。

自分が調べた範囲でわかったのは、overrideしたイニシャライザの中でselfを使う場合は、それまでにsuper.initが必須。selfを使わないならsuper.initが無くてもビルド可能、と。

この動作はどこにも明記されてない気がするんだけど・・・ 省略なんて考えなくて、毎回ちゃんとsuper.initを書くのが正解なんだろう。たぶん。

f:id:see_ku:20161231130702p:plain

3/24

定期的に欲しくなるProtectedの話題。これだけコード補完が万能の時代になってくると、候補に邪魔なものがあるだけで鬱陶しくなるわけで。・・・どうにかなりませんかね?

f:id:see_ku:20161231130807p:plain

3/24

これもまさに、定期的に欲しくなる機能シリーズ。10年後も同じ事を書いてるような気がするけど。

4/13

メモ。

9/25

座右の銘。実際には方言っぽく(?)『すきにしぃ』って発音。

9/27

未だに、日本語の公式ドキュメントは出ていない・・・

10/3

たまに、これがあると便利だろうと思うんだけど・・・ 『先頭で呼ぶ』『最後で呼ぶ』『どっちでも良い』とか、場合分けがいろいろ必要になって逆に面倒かな? ドキュメント化で逃げるのが正解なのか。・・・それはそれで、90年代から進歩してないような気もするけど。

10/16

ここ2ヶ月ぐらい悩んでた問題がこのツイートにまとまってる。結局、Class階層+Genericsの合わせ技で・・・ つまり、以前と同じやり方に落ち着いたけど。

ちなみに、Abstractの代替手段としては、PropertyとしてOptionalなClosureを持たせる方法を考えていた・・・ もう少し簡単にweak selfが使えるようになったら、これでもよかったかなぁ。いや、やっぱりだめか。

12/16

Swiftでプログラムを書いてる人は、慣れてる人ほど何の違和感も無く、structを名前空間の代わりに使ってると思うけど・・・ 冷静に考えると、これって変では? という話。

名前空間が欲しいなら、ちゃんと名前空間を使うべきだよね?

f:id:see_ku:20161231130922p:plain

12/23

現在のSwiftで、一番わかりにくくて使いにくいのがこの点では・・・ 本当にこの仕様で押し通すんだろうか? それとも、どこかのタイミングでこっそり直すのか?

最後に

4月から9月まで間が空いてるのは・・・ Swift 3が来るまで、他のことをやってたってのがわかりやすいですね。では、よいお年を。

CentOS 7(32bit版)の細かい設定いろいろ

いろいろ、細かい設定の話です。CentOSが7になったのにあわせて、いろいろ調べ直してみました。

  • 自動で日時を合わせる
  • wifiをオフにする
  • SDカードの自動マウント
  • バッテリー容量の確認
  • sshの接続が遅い問題

いわゆる小ネタ集ですね。

動作を確認した環境

環境 情報
CentOS CentOS-7-i386-Minimal-1511.iso
Date 2016/12/11

自動で日時を合わせる

CentOS 6までと同じようにNTPを使うことも出来ますが、CentOS 7ではChronyという新しいパッケージが用意されているようです。せっかくなので、Chronyを使って設定してみます。

まずは、Chronyをインストール。

# yum install -y chrony

設定を変更。

# nano /etc/chrony.conf

元からあるserverを全てコメントアウト。その下に、nictへの設定を追加します。

server ntp.nict.jp iburst minpoll 14

『minpoll 14』で16384秒=4.6時間おきに確認となります。この辺りは好みで。

あとはサービスを開始、自動起動を設定しておきましょう。

# systemctl start chronyd
# systemctl enable chronyd

日時の確認は以下のコマンドで出来ます。

# timedatectl

参考資料

CentOS7の時刻をChronyを使ってNICTと同期する - Qiita http://qiita.com/Kenji_TAJIMA/items/88ec9985a0585e66ef33

CentOS7での日付、時刻、タイムゾーン設定
http://www.linuxmaster.jp/linux_skill/2016/01/centos7-4.html

wifiをオフにする

ネットワークに関するデバイスの状況は、以下のコマンドで確認できます。

# nmcli d

こんな感じで、デバイスの一覧と状態が表示されます。

DEVICE  TYPE      STATE         CONNECTION 
enp4s0  ethernet  connected     enp4s0     
wlp1s0  wifi      disconnected  --         
lo      loopback  unmanaged     --         

wifiをオフにするのは以下のコマンドで。

# nmcli radio wifi off

SDカードの自動マウント

必要なとき、自動でマウントしてくれるようにしてみます。

SDカードのデバイスを確認

SDカードを挿入した状態で、以下のコマンドを実行。

# fdisk -l

こんな感じの行があるのを確認しておきます。

   Device Boot      Start         End      Blocks   Id  System
/dev/sdc1             137     3842047     1920955+   e  W95 FAT16 (LBA)

『/dev/sdc1』の部分がこの後で必要になります。

autofsを設定

まず、autofsをインストールします。

# yum install -y autofs

設定を確認。

# cat /etc/auto.master

上のほうに『/misc /etc/auto.misc』と書いてあるのを確認しておきます。

misc関係の設定を修正。

# nano /etc/auto.misc

以下の一行を追加しておきます。

sd_card     -fstype=vfat         :/dev/sdc1

一番最後の『/dev/sdc1』の部分でデバイスを指定します。

あとは、サービスを起動。自動実行を設定しておきます。

# systemctl start autofs
# systemctl enable autofs

これで『/misc/sd_card』にアクセスすると、自動でマウントされるようになりました。ちなみに標準の設定だと、10分間アクセスが無いと自動でアンマウントされます。この辺りの設定はお好みで。

参考資料

9.4.2. autofs の設定
https://access.redhat.com/documentation/ja-JP/Red_Hat_Enterprise_Linux/6/html/Storage_Administration_Guide/s2-nfs-config-autofs.html

バッテリー容量の確認

バッテリー容量の確認には、upowerが良さそうです。

# yum install -y upower

バッテリーに関するデバイス一覧の表示。

# upower --enumerate

こんな感じで表示されます。『battery』が入ってるのがバッテリーでしょう。たぶん。

/org/freedesktop/UPower/devices/line_power_AC0
/org/freedesktop/UPower/devices/battery_BAT0
/org/freedesktop/UPower/devices/DisplayDevice

一覧の情報を使って、詳細な情報を取得します。

# upower -i /org/freedesktop/UPower/devices/battery_BAT0

バッテリー容量が1/10まで減ってるとかorz

sshの接続が遅い問題

sshの接続が遅い場合、以下の修正で直るかもしれません。・・・というか、自分の環境ではかなり快適になりました。

※サーバー側で作業を行います

『/etc/ssh/sshd_config』を修正します。

# nano /etc/ssh/sshd_config

適当な位置に、以下の行を追加。

UseDNS no

サービスを再起動しておきます。

# systemctl restart sshd

接続できるまでしばらく待たされていたのが、これで一瞬で繋がるようになりました。

参考資料

sshの接続確立が遅い場合の対処方法 - yuyarinの日記
http://d.hatena.ne.jp/yuyarin/20090410/1239298235

CentOS 7(32bit版)でFirewallを設定

念のため、Firewallの設定をやっておきます。・・・念のため?

動作を確認した環境

環境 情報
CentOS CentOS-7-i386-Minimal-1511.iso
Date 2016/12/10

方針

  • インターネット経由の接続は考慮しない
  • けど、無駄なポートは空けない

インストール

Firewallをインストール。標準で入ってなかったのはなぜなんでしょう?

# yum install -y firewalld

サービスを起動。ついでに、自動で起動するように設定。

# systemctl start firewalld
# systemctl enable firewalld

設定

デフォルトのゾーンを変更。ローカルな環境でしか使わないので、今回は『internal』にしてみました。

# firewall-cmd --set-default-zone=internal

必要なサービス、ポートを追加。

# firewall-cmd --permanent --add-service=http
# firewall-cmd --permanent --add-port=8080/tcp
# firewall-cmd --permanent --add-port=29418/tcp

変更した設定を読み込み。

# firewall-cmd --reload

設定を確認。

# firewall-cmd --list-all
internal (default)
  interfaces: 
  sources: 
  services: dhcpv6-client http ipp-client mdns samba-client ssh
  ports: 8080/tcp 29418/tcp
  masquerade: no
  forward-ports: 
  icmp-blocks: 
  rich rules: 

RedmineやGitBucketで繋がることを確認。

参考資料

4.5. ファイアウォールの使用
https://access.redhat.com/documentation/ja-JP//Red_Hat_Enterprise_Linux/7/html/Security_Guide/sec-Using_Firewalls.html

firewalldの設定方法(基本設定編) | server-memo.net
http://www.server-memo.net/centos-settings/firewalld/firewalld.html

CentOS7.1 64bit firewalldによるアクセス制御 | kakiro-web カキローウェブ
http://www.kakiro-web.com/linux/firewalld.html

firewalldの設定方法(基本設定編) | server-memo.net
http://www.server-memo.net/centos-settings/firewalld/firewalld.html

GitBucketをssh経由でユーザー認証できるように設定

なぜか、普通にXcodeからGitBucketを使うとエラーが出ます。

仕方がないのでssh経由でユーザー認証できるようにしておきます。

動作を確認した環境

環境 情報
VirtualBox VirtualBox-5.1.10-112026-Win.exe
CentOS CentOS-7-i386-Minimal-1511.iso
Gitbucket 4.7.1
Date 2016/12/10

GitBucketの設定を変更

ssh経由のアクセスを設定

GitBucketにrootでログインして、メニューから『System administration』を選択。

f:id:see_ku:20161210102208p:plain

User Managementから『System Settings』を選択。

f:id:see_ku:20161210102218p:plain

『Base URL』にGitBucketを使用する外部のマシン(この場合はXcodeを動かしているMac)から、アクセスするときのURLを記入します。

f:id:see_ku:20161210102236p:plain

『Enable SSH access to git repository』のチェックをオンに。

SSH Host』にホストの名称を記入。これも、外部からアクセスするときの名前です。

SSH Port』にGitBucketで使用するポートを記入します。通常のsshアクセスとは別に、GitBucket専用のポートを使います。Firewallやポートフォワードの設定も忘れずに。

f:id:see_ku:20161210102253p:plain

設定を失敗した場合

『System Settings』の画面でやらかした場合・・・ 特に『Base URL』の設定を失敗した場合、ブラウザ経由でGitBucketにアクセスできなくなる場合があります。そんな時は、設定ファイルを直接編集しましょう。

# nano /usr/share/tomcat/.gitbucket/gitbucket.conf 

ユーザーごとの設定

sshの鍵を作成

こんな感じで、GitBucketで使用する秘密鍵・公開鍵を作成します。

$ ssh-keygen -t rsa -f gitbucket

ちなみに、pbcopyを使うと簡単にクリップボードにコピーできます。

$ cat gitbucket.pub | pbcopy

GitBucketに設定

『Account Settings』から左のメニューで『SSH Keys』を選択して設定画面に移動します。

『Title』は適当にわかりやすい内容を記入。

『Key』の方に、先程作成した公開鍵を記入します。

f:id:see_ku:20161210102347p:plain

一通り記入したら『Add』を押して登録しましょう。

プロジェクトごとの設定

まずは、GitBucketでリポジトリを作成。Xcodeでプロジェクトを開いて、リモートリポジトリに追加しておきます。この辺りの流れはGitHubと同じですね。

あとは普通にプッシュするだけ。認証画面が出たら、GitBucketで使用する秘密鍵を選びます。

f:id:see_ku:20161210102403p:plain

これで、無事に動くはず・・・ 動かないとしたら、ポートの設定があやしいかな?

CentOS 7(32bit版)にGitBucketをインストール

Redmineのついでに、GitBucketをインストールしてみます。ついで?

動作を確認した環境

環境 情報
VirtualBox VirtualBox-5.1.10-112026-Win.exe
CentOS CentOS-7-i386-Minimal-1511.iso
Gitbucket 4.7.1
Date 2016/12/10

インストール

Tomcatをインストール

いきなりTomcatをインストール。Javaはついでに入れてくれます。

# yum install -y tomcat

今回使ったバージョンはこんな感じ。

# tomcat version
Server version: Apache Tomcat/7.0.54
Server built:   Oct 10 2016 10:04:15
Server number:  7.0.54.0
OS Name:        Linux
OS Version:     3.10.0-327.36.3.el7.i686
Architecture:   i386
JVM Version:    1.8.0_111-b15
JVM Vendor:     Oracle Corporation

GitBucketをダウンロード

GitBucketのバージョンをGitHubで確認します。

Releases · gitbucket/gitbucket · GitHub
https://github.com/gitbucket/gitbucket/releases

Tomcatディレクトリにダウンロードします。

# wget -P /usr/share/tomcat/webapps/ https://github.com/gitbucket/gitbucket/releases/download/4.7.1/gitbucket.war

Tomcatを起動

ついでに、自動で起動するように設定しておきます。

# systemctl start tomcat
# systemctl enable tomcat

ここまで出来たら、実際にアクセスして動作を確認しましょう。環境によっては、起動にかなり時間がかかるかも?

http://{サーバーのアドレス:8080}/gitbucket/

デフォルトのユーザIDとパスワードは下記の通りです。

  • ユーザID: root
  • パスワード: root

わざわざTomcatのポートを指定しなくても、Apacheと連携して動くようにも出来ますが・・・ その辺りは好みで。

Redmine 2.3のデータをRedmine 3.3に移行

古いサーバーで動いていたRedmineのデータを、新しいサーバーに移行します。

具体的に言うとMySQLのデータをMariaDBに移行。普通に、dumpを使って作業します。

使用した環境

  • 旧サーバー
環境 情報
CentOS CentOS release 6.6 (Final)
Redmine 2.3.1.stable
Ruby 1.9.3 (i686-linux)
Rails 3.2.13
  • 新サーバー
環境 情報
CentOS CentOS Linux release 7.2.1511 (AltArch)
Redmine 3.3.1.stable
Ruby 2.3.3-p222 (2016-11-21) [i686-linux]
Rails 4.2.7.1

データの保存・復元

旧サーバーでデータを保存

データベースのデータをすべてダンプ。

# mysqldump -u user_redmine -p{password} db_redmine > ~/backup_mysql.dump

Redmineで使われているファイルを圧縮。

# cd /var/lib/redmine
# tar zcvf ~/backup_files.tar.gz files

それぞれ、scpなどを使って新サーバーにコピーしておきます。

新サーバーでデータを復元

ファイルを展開。

# tar zxvf backup_files.tar.gz -C /var/lib/redmine

ダンプしたデータを復元。

# mysql -u user_redmine -p{password} db_redmine < ~/backup_mysql.dump

マイグレーション

不要なテーブルを削除

これだけで動いてくれれば楽なんですが・・・ このままだとデータのマイグレーションでエラーが出るので、不要なテーブルを削除しておきます。

# nano drop_table.sql

以下の内容でファイルを保存。

drop table changeset_parents;
drop table queries_roles;
drop table custom_fields_roles;
drop table email_addresses;
drop table roles_managed_roles;
drop table imports;
drop table import_items;
drop table custom_field_enumerations;

まとめて、削除を実行します。

# mysql -u user_redmine -p{password} db_redmine < drop_table.sql

データベースのマイグレーション

マイグレーションを実行します。

# cd /var/lib/redmine
# bundle exec rake generate_secret_token
# RAILS_ENV=production bundle exec rake db:migrate

動作を確認

ここまで出来たら、実際にアクセスして確認しましょう。

http://{サーバーのアドレス}/redmine

これでアクセスできれば成功です。

参考資料

Redmine3.1をCentOS7.1にインストールし、既存のRedmine1.2のデータの移行を行う手順 - Qiita
http://qiita.com/k-awa/items/88243fbee921bf3ac13b

CentOS 7(32bit版)にRedmineをインストール

なぜか、CentOS 7なのに32bit版にRedmineをインストールしたときのメモです。

ChefもAnsibleもあってDockerが盛りあがってるこの時代に、なぜ、あえて手作業でRedmineをインストールしているのかは謎です。

方針

動作を確認した環境

環境 情報
VirtualBox VirtualBox-5.1.10-112026-Win.exe
CentOS CentOS-7-i386-Minimal-1511.iso
Ruby ruby-2.3.3.tar.gz
Redmine redmine-3.3.1.tar.gz
Date 2016/12/10

インストール

必要なソフトをインストール

いろいろ、まとめてインストールしておきます。

# yum -y groupinstall "Development Tools"
# yum -y install openssl-devel readline-devel zlib-devel curl-devel libyaml-devel libffi-devel
# yum -y install mariadb-server mariadb-devel
# yum -y install httpd httpd-devel
# yum -y install ImageMagick ImageMagick-devel ipa-pgothic-fonts

Rubyをインストール

ruby-langのサイトで最新のRubyを確認。

ダウンロード  
https://www.ruby-lang.org/ja/downloads/

今回は2.3.3をインストールします。

# curl -O https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.3.tar.gz
# tar xvf ruby-2.3.3.tar.gz
# cd ruby-2.3.3
# ./configure --disable-install-doc
# make
# make install
# cd ..

ついでにbundlerを入れておきます。

# gem install bundler --no-rdoc --no-ri

Redmineをインストール

Redmineのサイトで最新のバージョンを確認。

Download - Redmine  
http://www.redmine.org/projects/redmine/wiki/Download

こんな感じでインストールします。簡単ですね。

# curl -O http://www.redmine.org/releases/redmine-3.3.1.tar.gz
# tar xvf redmine-3.3.1.tar.gz
# mv redmine-3.3.1 /var/lib/redmine

Passengerをインストール

こんな感じでインストール。

# gem install passenger --no-rdoc --no-ri
# passenger-install-apache2-module --auto

Apacheの設定で使う情報をメモしておきます。

# passenger-install-apache2-module --snippet

こんな感じになるはず。

LoadModule passenger_module /usr/local/lib/ruby/gems/2.3.0/gems/passenger-5.0.30/buildout/apache2/mod_passenger.so
<IfModule mod_passenger.c>
  PassengerRoot /usr/local/lib/ruby/gems/2.3.0/gems/passenger-5.0.30
  PassengerDefaultRuby /usr/local/bin/ruby
</IfModule>

初期設定

MariaDBの初期設定

デフォルトのキャラセットとしてutf8を使うように変更します。

# nano /etc/my.cnf

[mysqld]に character-set-server=utf8 を追加、[mysql] セクションに default-character-set=utf8 を追加します。

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd

character-set-server=utf8

[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid

#
# include all files from the config directory
#
!includedir /etc/my.cnf.d

[mysql]
default-character-set=utf8

MariaDBを起動。ついでに自動起動の設定もやっておきます。

# systemctl start mariadb
# systemctl enable mariadb

MariaDBの初期設定ツールを実行しておきます。rootのパスワードを設定。他は全て『Y』がおすすめかな?

# mysql_secure_installation

Redmineで使用するデータベースを作成

まず、設定内容をまとめたファイルを作成します。

# nano redmine_db.sql

内容はこんな感じ。

create database db_redmine default character set utf8;
grant all on db_redmine.* to user_redmine@localhost identified by '{password}';
flush privileges;

{password}の部分はデータベースに接続するときのパスワードが入ります。database.ymlで使用します。

あとは、まとめて実行するだけ。

# mysql -uroot -p < redmine_db.sql

Redmineの初期設定

database.ymlとconfiguration.ymlを作成します。database.ymlはこんな感じ。

# nano /var/lib/redmine/config/database.yml
production:
  adapter: mysql2
  database: db_redmine
  host: localhost
  username: user_redmine
  password: "{password}"
  encoding: utf8

{password}の部分はデータベースに接続するときのパスワードが入ります。すぐ上で使ったのと同じ物です。

configuration.ymlはこんな感じで。

# nano /var/lib/redmine/config/configuration.yml
production:
  email_delivery:
    delivery_method: :smtp
    smtp_settings:
      address: "localhost"
      port: 25
      domain: "example.com"

  rmagick_font_path: /usr/share/fonts/ipa-pgothic/ipagp.ttf

このままでも動きますがあまりにも手抜きな設定なので、Redmineでメールを使いたい人は真面目に設定しましょう。

データベースの初期化

bundlerを使って必要になるgemをインストールします。

# cd /var/lib/redmine
# bundle install --without development test --path vendor/bundle

こんな感じでデータベースを初期化。デフォルトのデータを登録しておきます。

# cd /var/lib/redmine
# bundle exec rake generate_secret_token
# RAILS_ENV=production bundle exec rake db:migrate
# RAILS_ENV=production REDMINE_LANG=ja bundle exec rake redmine:load_default_data

Apacheの設定

サブディレクトリで動かす設定にしてみます。

# chown -R apache:apache /var/lib/redmine
# ln -s /var/lib/redmine/public /var/www/html/redmine

Redmineのための設定ファイルを作っておきます。

# nano /etc/httpd/conf.d/redmine.conf

『Passengerの基本設定』の部分は、Passengerのインストールでメモした内容を入れます。

# Redmineの画像ファイル・CSSファイル等へのアクセスを許可する設定。
# Apache 2.4のデフォルトではサーバ上の全ファイルへのアクセスが禁止されている。
<Directory "/var/lib/redmine/public">
  Require all granted
</Directory>

# Passengerの基本設定。
# passenger-install-apache2-module --snippet で表示された設定を記述。
# 環境によって設定値が異なるため以下の3行はそのまま転記せず、必ず
# passenger-install-apache2-module --snippet で表示されたものを使用すること。
LoadModule passenger_module /usr/local/lib/ruby/gems/2.3.0/gems/passenger-5.0.30/buildout/apache2/mod_passenger.so
<IfModule mod_passenger.c>
  PassengerRoot /usr/local/lib/ruby/gems/2.3.0/gems/passenger-5.0.30
  PassengerDefaultRuby /usr/local/bin/ruby
</IfModule>

# Passengerが追加するHTTPヘッダを削除するための設定(任意)。
Header always unset "X-Powered-By"
Header always unset "X-Runtime"

# 必要に応じてPassengerのチューニングのための設定を追加(任意)。
# 詳しくはPhusion Passenger users guide(https://www.phusionpassenger.com/library/config/apache/reference/)参照。
PassengerMaxPoolSize 20
PassengerMaxInstancesPerApp 4
PassengerPoolIdleTime 864000
PassengerHighPerformance on
PassengerStatThrottleRate 10
PassengerSpawnMethod smart
PassengerFriendlyErrorPages off

# サブディレクトリでRedmineを実行
RackBaseURI /redmine

ここまで出来たらApacheを起動。ついでに自動実行の設定もやっておきます。

# systemctl start httpd
# systemctl enable httpd

動作を確認

ここまで出来たら、実際にアクセスして動作を確認しましょう。

http://{サーバーのアドレス}/redmine

これでアクセスできれば成功。

  • ログイン: admin
  • パスワード: admin

でログインできるはず。たぶん。