0
0

More than 1 year has passed since last update.

Windows10で、Redmine 5.04(Mysql 8.0, Ruby 3.1)すべて手動インストール

Last updated at Posted at 2023-02-18

はじめに

Redmine単体 をWindows 10にインストールしたときのメモ

version:
Redmine 5.0.4
MySQL 8.0.32
Ruby 3.1.3


経緯

Windows10, Cygwin の環境に、Mysql 8.0 が別にあったので、
Redmine単体をいれて普通に動かせるかと思ってやってみると、いろいろ動かなかったため
その試行錯誤して、インストールできるまでの備忘録


もともとあったCygwin のRuby 2.8を使った場合

公式手順
http://guide.redmine.jp/RedmineInstall/

Step 6 - データベースのテーブル等の作成
データベース上にテーブルを作成してください。Redmineのインストールディレクトリで下記コマンドを実行します。

RAILS_ENV=production bundle exec rake db:migrate
でつまづく。

RubyのMysql2 とMySQLサーバーと接続せず、以下のエラー

Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'

その後、Cygwinのmount環境で、上記のソケットファイルを作ったり、
Mysql の my.iniでソケット設定してみたり、Redmine のdatabase.yml をいじったりしても
改善せず。WindowsでMYSQLとのソケット接続は、やはり少し無理があるか。断念。

Ruby新規インストール での解決方法

以下の記事を参考に手動インストールしてみることに。。。
https://qiita.com/tchoco/items/1909a52edbb4a548a3c5

上記のサイト同様、みんなMySQL接続でつまづく。まずは、上記サイトのstep 5までいく

  • Mysqlのところは、同じエラーが出て、最初は、Mysql 8.0 サーバーにある libを使って
  --with-mysql-lib="c:\mysql\mysql server 8.0\lib"

Mysql2 の作成してみても、リンクができず、DLL作成失敗。バージョンが不一致か。
Ruby mysql2 は、Mysql 8.0とはそのままリンクできない

...
C:/Ruby31-x64/msys64/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/12.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: c:\Program Files\MySQL\MySQL Server 8.0/lib/mysqlclient.lib(C:/build/sb_1-9698795-1671207278.03/release/extra/zstd/zstd_objlib.dir/RelWithDebInfo/fse_decompress.obj):(.text$mn+0x43): undefined reference to `__security_check_cookie'
C:/Ruby31-x64/msys64/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/12.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: c:\Program Files\MySQL\MySQL Server 8.0/lib/mysqlclient.lib(C:/build/sb_1-9698795-1671207278.03/release/extra/zstd/zstd_objlib.dir/RelWithDebInfo/fse_decompress.obj):(.text$mn+0x6): undefined reference to `__chkstk'
C:/Ruby31-x64/msys64/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/12.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: c:\Program Files\MySQL\MySQL Server 8.0/lib/mysqlclient.lib(C:/build/sb_1-9698795-1671207278.03/release/extra/zstd/zstd_objlib.dir/RelWithDebInfo/fse_decompress.obj):(.text$mn+0x10): undefined reference to `__security_cookie'
...
  • 次に Ruby on railsが windows mysqlで発生するエラー回避の方法を調べ
    Mysql c connector 6.1 を使う方法にたどり着く。(Mysql 8.0には、C++ connenctorしかDownloadセンターになく
    Cの8.0対応connector がない?)

以下のサイトから
https://downloads.mysql.com/archives/c-c/
c connector 6.1をDownloadし、 Mysql2 のgem を作成し、connectorフォルダーのLibにあるlibmysql.dll
をRuby.exe があるフォルダーへ格納

gem install mysql2 -- --with-mysql-dir="c:\mysql_connector_6.1\"
  • インストールの再開
     再開して、再度

set RAILS_ENV=production
bundle exec rake db:migrate
を実行、今度は、

Bundler::GemRequireError: There was an error while trying to load the gem 'mysql2'.
Gem Load Error is: Incorrect MySQL client library version! This gem was compiled for 6.1.11 but the client library is 10.5.5.

でとまる。

  • libmysql.dll はどうした?
    Downdloadした mysql connector のDLLをRuby.exeにコビーしたのに。。ということで
    上で生成したmysql2 は、実際どこの mysql.dllを使っているかを
    ruby のdep_walker を入れて調べると
    なんと libmariadb.dll missing とあった。
c:\apps\redmine-5.0.4>dep_walker -c mysql2 -t
Gem mysql2-0.5.5:
  Extension: C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/mysql2-0.5.5/ext/mysql2/mysql2.so is missing: libmariadb.dll
  Extension: C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/mysql2-0.5.5/lib/mysql2/mysql2.so is missing: libmariadb.dll

そもそもmysql2 は、なぜか mysqlじゃなくて、mariadb を使用しようとしていた。

結局ruby.exe のところにある
_libmysql.dll をlibmariadb.dll に名前を変更して対応できた

  • Gemfileを再編集

もともとあったVersion付きのMysql2の箇所をコメントアウト

      when 'mysql2'
        # gem "mysql2", "~> 0.5.0", :platforms => [:mri, :mingw, :x64_mingw]
        gem "mysql2"

もう一度

set RAILS_ENV=production
bundle exec rake db:migrate

  • 次にSSL接続ラー

もう一度

set RAILS_ENV=production
bundle exec rake db:migrate

今度は、SSL関連の接続エラー

C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/bundler-1.17.2/lib/bundler/shared_helpers.rb:118: warning: Pathname#untaint is deprecated and will be removed in Ruby 3.2.
rake aborted!
ActiveRecord::ConnectionNotEstablished: SSL connection error: unknown error number


Caused by:
Mysql2::Error::ConnectionError: SSL connection error: unknown error number

Tasks: TOP => db:migrate
(See full trace by running task with --trace)

これは、database.ymlで、SSLをdisableで回避

production:
  adapter: mysql2
  database: redmine
  host: localhost
  username: root
  password: "***"
  # Use "utf8" instead of "utfmb4" for MySQL prior to 5.7.7
  encoding: utf8mb4
  port: 3306
  ssl_mode: :disabled
  sslverify: false
  • やっとMysql接続
    今度は、DB接続でき、うまくいった。

  • 残りは、thin
    thin をただ gem install しても、redmine では認識せず、
    それをredmine のGemfileに gem thin を追加して

やっとRedmine 起動成功!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0