ウェブど素人がVPS上のnginxにredmineを入れようとして無理だった話

person using macbook pro on white table IT
programming

nginxにredmineを入れたいど素人

どうもウェブど素人です。
先日VPSを借りて、nginx上に複数サイトを構築しました。
今度はタスク管理のためredmineを導入したいと思い、
nginx上に入れようと思ったが、3日くらいガチャガチャやっても無理でした。
そもそも、何が何だかわからずにやっているからですが現状メモのため

自分の環境

OSUbuntu 20.04.4 LTS (GNU/Linux 5.4.0-104-generic x86_64)
サーバーnginx/1.18.0 (Ubuntu)

redmine導入 大撃沈

とりあえず、以下を参考にやってみた
https://blog.redmine.jp/articles/4_2/install/ubuntu/
本人の認識はApacheの設定をnginx風にするだけだろうという安易な思考

1.日本語を扱うためらしい 

sudo locale-gen ja_JP.UTF-8

もとから設定できていたようだ

2.何が何だかわからないものをインストール

sudo apt install -y build-essential zlib1g-dev libssl-dev libreadline-dev libyaml-dev libcurl4-openssl-dev libffi-dev
sudo apt install -y subversion git

3.PostgreSQL

sudo apt install -y postgresql libpq-dev

4.ruby

curl -O https://cache.ruby-lang.org/pub/ruby/2.7/ruby-2.7.4.tar.gz
tar xvf ruby-2.7.4.tar.gz
cd ruby-2.7.4
./configure --disable-install-doc
make
sudo make install
cd ..

5.ポスグレ設定

sudo -u postgres createuser -P redmine
sudo -u postgres createdb -E UTF-8 -l ja_JP.UTF-8 -O redmine -T template0 redmine

6.redmineインストール

sudo mkdir /var/lib/redmine
sudo chown www-data /var/lib/redmine
sudo -u www-data svn co https://svn.redmine.org/redmine/branches/4.2-stable /var/lib/redmine

7.DB設定

production:
  adapter: postgresql
  database: redmine
  host: localhost
  username: redmine
  password: "********"
  encoding: utf8
production:
  email_delivery:
    delivery_method: :smtp
    smtp_settings:
      address: "localhost"
      port: 25
      domain: "example.com"

  rmagick_font_path: /usr/share/fonts/truetype/takao-gothic/TakaoPGothic.ttf

8.remine設定

cd /var/lib/redmine
sudo -u www-data bin/rake generate_secret_token
sudo -u www-data RAILS_ENV=production bin/rake db:migrate

9.passenger 一番よくわからんもの

sudo gem install passenger -N
sudo passenger-install-nginx-module --auto --languages ruby # Apacheをnginxにとりあえず変えてみた

10.nginxのconfファイルをそれっぽく passenger_rootやらなんやらをググりながら設定

11.いざ実行

passenger_rootとかそんなディレクディブは知らんと怒られた(そもそもディレクティブてなんや?)

12.3日間迷走

理解しようとせず、とにかくガチャガチャ
passenger周りをガチャガチャゴチャチゃ

13.適当な仮説

このディレクティブってやつが認識されてないから動かないんじゃないか?の適当な仮説
他のfastcgi_paramとかはそれっぽいファイルがあり記載されているのに

どうやって入れるんだ?→ググりまくる

14.仕方なく今まで実行したコマンドを見返してちょっとだけ思考してみる

前提として稼働済みnginxの存在がおかしいんじゃないか?→再コンパイルする必要的な記事を発見&そもそも無理なんじゃね的なコメントも発見
よくわからん。そしてpython動かすためにunitっての入れたけど、passengerってのいらないんじゃね?の仮説→【ぐぐる】→
unit+redmineで公式のページが出てきた。こっちで試そう。。。

redmine導入 ちょっとだけ進んだ話

謎のpassengerでなくunitを使った方法で試したら若干進んだ話

1.Ruby language module.インストール

apt install unit-ruby

2.Install and configure Redmine’s prerequisites.

よくわかんないけど前回設定済みと信じてスキップ

3.Install Redmine’s core files.

よくわかんないけど前回設定済みと信じてスキップ2

4.Run the following command so Unit can access the application directory:

sudo chown -R unit:unit /path/to/app/

5.config.json作ってアップするらしい

{
    "listeners": {
        "*:80": {
            "pass": "applications/redmine"
        }
    },

    "applications": {
        "redmine": {
            "type": "ruby",
            "working_directory": "/path/to/app/",
            "script": "config.ru",
            "environment": {
                "RAILS_ENV": "production"
            }
        }
    }
}
sudo curl -X PUT --data-binary @config.json --unix-socket \
       /path/to/control.unit.sock http://localhost/config/

→早速エラー
“error”: “Failed to apply new configuration.”
→わからん ログ確認

sudo tail -f /var/log/unit.log

failed to start application “redmine”
ほう。アプリが実行できずかredmine側のログ確認

sudo tail -f /var/lib/redmine/log/redmine_error.log

無いし。起動時のエラーログはどこに吐かれるんだ?
飛ばした2,3を確認するか。。
とりあえずこれから実行してみよう。。

bundle exec rake generate_secret_token

エラーも返事なし

RAILS_ENV=production bundle exec rake db:migrate

同様

RAILS_ENV=production bundle exec rake redmine:load_default_data

おっ、なんかSelect languageって返事着たから【ja】を入力したら
Default configuration data loaded
おぉ、わからんが進んだきがする
次がわからん。権限どうこうらしいが
今は www-dataだけどunitにしたほうがいいのか?
わかんないから一旦このままでだめっそうならunitに変えたり666にしたりする

テスト

bundle exec rails server webrick -e production

なんかウェブサーバー立ち上がったけどVPSのhttp://0.0.0.0:3000ってどう確認すりゃいいねん
www.example:3000でアクセスしたけど応答なし。ファイヤーウォール設定か?

ufw status verbose

3000って表示はないから追加するか

ufw allow 3000
ufw reload

ワンモア

bundle exec rails server webrick -e production

アクセス www.example:3000
きたああああああああああ!redmineのページが表示された!

そんでadmin:adminでログインしてパスワードを変更する
一旦、ウェブサーバー落としてそのあとの設定もいろいろあるっぽいけど面倒なのでここまでにする。

6.再びconfig.jsonをアップに戻る

sudo curl -X PUT --data-binary @config.json --unix-socket \
       /path/to/control.unit.sock http://localhost/config/

→”error”: “Failed to apply new configuration.” っざっけんなー!

sudo tail -f /var/log/unit.log

[unit] Ruby: Failed to require ‘bundler/setup’ package
[unit] Ruby: /usr/lib/ruby/2.7.0/bundler/spec_set.rb:86:in `block in materialize’: Could not find rake-13.0.6 in any of the sources (Bundler::GemNotFound)

またググるとこか。。英語のサイトしか出ないし
なんか再インストールとかgem.lockファイルを消すだの出てきたけど、ほんとわからん なんも影響ないのか。。
→ 間違えてlockファイルを消してしまった。もういいよ
とりあえず以下実行

bundle install --without development test

なんか進んだ気がする
もっかい


sudo curl -X PUT --data-binary @config.json --unix-socket \
       /path/to/control.unit.sock http://localhost/config/

出来ません。わかりません。ruby・Gem bundler自体が何者なのかわからないので、今度調べておこ。。

今回はパワープレイ

nohup bundle exec rails server webrick -e production &

これでひとまずインターネット経由でredmineをいじくることはできそう

さらにカオスに

さすがにちょっとくらい理解しないとダメか。。

gemって何?

rubyのライブラリ管理らしい

bundlerって何?

gemの一種でgemの依存関係も管理してくれるらしい

gem+bundler

gem+bundlerでpythonでいうところのpipという認識でいいのかな?
俺はその認識で行こう。。

とりあえず本題

前回の

[unit] Ruby: Failed to require ‘bundler/setup’ package
[unit] Ruby: /usr/lib/ruby/2.7.0/bundler/spec_set.rb:86:in `block in materialize’: Could not find rake-13.0.6 in any of the sources (Bundler::GemNotFound)

このエラーはどういうことか
まぁシンプルにrake-13.0.6てのがソースにねーよって怒っているのであろう

たしかに/usr/lib/ruby/2.7.0/bundler以下をrakeで検索しても出てこないんだなrakeをinstallしてたコマンドってどこだっけ??

まず1回目に/var/lib/redmineで

sudo -u www-data bin/rake generate_secret_token
sudo -u www-data RAILS_ENV=production bin/rake db:migrate

これを実行している
2回目も同じディレクトリで

bundle exec rake generate_secret_token
RAILS_ENV=production bundle exec rake db:migrate
RAILS_ENV=production bundle exec rake redmine:load_default_data
RAILS_ENV=production REDMINE_LANG=fr bundle exec rake redmine:load_default_data

この辺を実行している
rakeの前にbin/がついているかどうかの違いがある
しかし/var/lib/redmine/bin/rakeが存在しているぞ?
てことはbin/rakeにすればうまくいったりする?

sudo bundle exec bin/rake generate_secret_token
sudo RAILS_ENV=production bundle exec bin/rake db:migrate
sudo RAILS_ENV=production bundle exec bin/rake redmine:load_default_data
sudo RAILS_ENV=production REDMINE_LANG=fr bundle exec bin/rake redmine:load_default_data

んで

sudo bundle exec rails server webrick -e production

これは前も動いたからまぁいいとして
これですわ 鬼門


sudo curl -X PUT --data-binary @config.json --unix-socket \
       /path/to/control.unit.sock http://localhost/config/

“error”: “Failed to apply new configuration.”
ダメじゃん。もう無理やろ

ぐぐると
https://qiita.com/Nedward/items/55b8dac4001a514b9bcc
バンドらーのパス?
bundle config
Set for your local app (/var/lib/redmine/.bundle/config): [:development, :test, :rmagick]
なんかセットせいって言ってる?

mkdir .bundle/config

mkdir: ディレクトリ `.bundle/config’ を作成できません: ファイルが存在します
ふぁ?

ls .bundle/config

ほんまや
こいうことか

sudo bundle install --path .bundle/config

??翻訳
このフラグは bundler を起動するたびに記憶させる必要がありますが、bundler は将来のバージョンでは記憶させない予定です。代わりに bundle config set path '.bundle/config' を使って、このフラグを使うのをやめてください。
Bundler を root 権限で実行しないでください。Bundler は必要であれば sudo を要求します。root でバンドルをインストールすると、このマシンの非 root ユーザーのアプリケーションを壊してしまいます。
パス /var/lib/redmine/.bundle/config/ruby/2.7.0 にファイルが存在するためインストールできませんでした。ファイルを削除するか、ファイル名を変更して、ディレクトリを作成してください。

えっ sudoだめなの?そんなこと素人には思いもしなかった
bundle config set path ‘.bundle/config
Your application has set path to “.bundle/config”. This will override the global value you are currently setting
なんかグローバルも上書きしたみたいな怖いこと言ってる
bundle config
うーんわからn ええんか?

sudo bundle exec bin/rake generate_secret_token
sudo RAILS_ENV=production bundle exec bin/rake db:migrate
sudo RAILS_ENV=production bundle exec bin/rake redmine:load_default_data
sudo RAILS_ENV=production REDMINE_LANG=fr bundle exec bin/rake redmine:load_default_data

Could not find rake-13.0.6 in any of the sources
Run bundle install to install missing gems.
状況悪化してて草
ぐぐりまくる

which ruby
/usr/local/bin/ruby
which bundle
/usr/local/bin/bundle

[DEPRECATED] use bundle info rake instead of bundle show rake
The dependency tzinfo-data (>= 0) will be unused by any of the platforms Bundler is installing for. Bundler is installing for ruby but the dependency is only for x86-mingw32, x64-mingw32, x86-mswin32. To add those platforms to the bundle, run bundle lock --add-platform x86-mingw32 x64-mingw32 x86-mswin32.
The dependency ffi (>= 0) will be unused by any of the platforms Bundler is installing for. Bundler is installing for ruby but the dependency is only for x86-mingw32, x64-mingw32, x86-mswin32. To add those platforms to the bundle, run bundle lock --add-platform x86-mingw32 x64-mingw32 x86-mswin32.
Could not find rake-13.0.6 in any of the sources

カオスw会社のサーバーだったらクビだなw
まだ一切の理解が出来ていないことと おそらく参照関連がえらいこっちゃなっている気がする
一度全部アンインストールしなおすか。。いや、できれば理解して治したい。。。w

次回

とにかく、人まね猿真似では限界があることは重々承知。

ただしとりあえず動けばいいやなので、理解が進まない

とはいえ、トータル5日くらい時間無駄にしてるし

今度のためにも勉強して次回は想定通りうごかせるようにすることが目標

タイトルとURLをコピーしました