感謝のプログラミング 10000時間

たどり着いた結果(さき)は、感謝でした。

RedmineをEC2にインストールしてハマったこと。nokogiriとかbundle、passengerでエラー。

スポンサーリンク

基本は以下のサイトに従うが、ところどころハマりポイントがあるので後世のためにメモを残す。

http://qiita.com/nakanishi-m/items/73ecefb5706381bf3c32
http://blog.redmine.jp/articles/3_3/install/centos/

ハマりポイント「sudo bundle install」を実行すると「sudo: bundle: command not found」が出る。

Check if the PATH has the same values both with and without sudo. Apparently it cannot find bundle just because it is not listed in PATH

PATHがsudoとsudo以外で同じか確認しなさい、とのことです。

確認方法は以下の通り。

echo 'echo $PATH' | sh
/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/opt/aws/bin:/home/ec2-user/.local/bin:/home/ec2-user/bin

sudoのPATHは以下のコマンドで確認します。

$ echo 'echo $PATH' | sudo sh
/sbin:/bin:/usr/sbin:/usr/bin

それで、解決策の一つは、「~/.bashrc」に

alias sudo='sudo env PATH=$PATH'

を追記すること。

$ cat ~/.bashrc
# .bashrc

# Source global definitions
if [ -f /etc/bashrc ]; then
        . /etc/bashrc
fi

# User specific aliases and functions
alias sudo='sudo env PATH=$PATH'

上記を追記した上で、

source ~/.bashrc

で読み込みます。

すると、bundleコマンドが実行できました。

https://stackoverflow.com/questions/22456998/why-is-sudo-bundle-command-not-found

ハマリポイント2 bundle install中にnokogiriでエラー

An error occurred while installing nokogiri (1.8.0), and Bundler cannot continue.
Make sure that `gem install nokogiri -v '1.8.0'` succeeds before bundling.

警告に従って、

gem install nokogiri -v '1.8.0'

を実行すると以下のエラーが。

Nokogiriはいつもエラーの原因になってクソだということはわかっているが、こいつなんとかならないのかな。。

IMPORTANT NOTICE:

Building Nokogiri with a packaged version of libxml2-2.9.4
with the following patches applied:
        - 0001-Fix-comparison-with-root-node-in-xmlXPathCmpNodes.patch
        - 0002-Fix-XPointer-paths-beginning-with-range-to.patch
        - 0003-Disallow-namespace-nodes-in-XPointer-ranges.patch

Team Nokogiri will keep on doing their best to provide security
updates in a timely manner, but if this is a concern for you and want
to use the system library instead; abort this installation process and
reinstall nokogiri as follows:

    gem install nokogiri -- --use-system-libraries
        [--with-xml2-config=/path/to/xml2-config]
        [--with-xslt-config=/path/to/xslt-config]

If you are using Bundler, tell it to use the option:

    bundle config build.nokogiri --use-system-libraries
    bundle install

とりあえず警告どおりに以下を実行。

$ sudo bundle config build.nokogiri --use-system-libraries


bundleを実行すると以下のエラーが。

pkg-config could not be used to find libxml-2.0
Please install either `pkg-config` or the pkg-config gem per

    gem install pkg-config -v "~> 1.1.7"

pkg-config could not be used to find libxslt
Please install either `pkg-config` or the pkg-config gem per

    gem install pkg-config -v "~> 1.1.7"

pkg-config could not be used to find libexslt
Please install either `pkg-config` or the pkg-config gem per

    gem install pkg-config -v "~> 1.1.7"

このまま頑張ってもnokogiriを入れることはできなそうなので、以下のQiitaの記事を参考に別のアプローチを検討する。
http://qiita.com/nekakoshi/items/98bcdf0137e55a0b2395

すると、以下のようにyumでlibxml2を入れることで、nokogiriのインストールが解消した!

sudo yum install libxml2-devel libxslt-devel

以下のコマンドは成功する。

sudo  gem install nokogiri -- --use-system-libraries=true --with-xml2-include=/usr/include/libxml2/

ここまでやったらついに、

sudo bundle install --without development test postgresql sqlite --path vendor/bundle

が成功!!

redmineを見ようとしたら「You don't have permission to access /redmine/ on this server.」でアクセスできない

ブラウザで以下のようなメッセージが出ている。

Forbidden

You don't have permission to access /redmine/ on this server.

まずは/var/lib/redmine/log/production.logを確認する。
起動していない場合はPassengerに問題がある。
Passenger問題については後述。

chownでapacheに設定しているかも確認しておくこと。

redmineを見ようとしたらディレクトリのリストが見えてしまう

これもPassengerの設定が正しくできていないため。

なぜだ?と思って色々調べていたら、インストールコマンドで実行するとエラーが出ていた。

passenger-install-apache2-module --auto

結局メモリが足りていなかったことが判明。

_HEADER="<hash_map>" -DHASH_MAP_CLASS="hash_map" -DHASH_FUN_H="<hash_fun.h>" -c src/agent/Core/CoreMain.cpp
virtual memory exhausted: Cannot allocate memory
rake aborted!

やっぱり起動できていない。

$ passenger-status
ERROR: Phusion Passenger doesn't seem to be running. If you are sure that it is running, then the causes of this problem could be:

http://www.redmine.org/boards/2/topics/43395


こちらの記事ではスワップ領域を増やすやり方を採用していたけれど、僕は素直にEC2のインスタンスタイプを変更した。
http://qiita.com/abetd/items/43a06e7376ad7bedca6d

あとはPassengerの設定をちゃんとapacheのconfに反映させることかな。

手順をコピペしないで、

passenger-install-apache2-module --snippet

で出てきた値を使うこと。

LoadModule passenger_module /usr/local/share/ruby/gems/2.3/gems/passenger-5.1.5/buildout/apache2/mod_passenger.so
<IfModule mod_passenger.c>
  PassengerRoot /usr/local/share/ruby/gems/2.3/gems/passenger-5.1.5
  PassengerDefaultRuby /usr/bin/ruby2.3
</IfModule>


あとは、初期設定はこちら。
http://redmine.jp/tech_note/first-step/admin/