カテゴリー: 技術系memo

  • Bitnami Redmine バージョンアップ後、ファイルを添付すると「500 Internal Server Error」になる。

    Bitnami Redmineを3.4にバージョンアップした後、ファイルを添付すると、「500 Internal Server Error」が発生する。 production.logを確認したところ、下記のエラーが発生していた。

    ActiveRecord::StatementInvalid (Mysql2::Error: Data too long for column 'digest' at row 1: INSERT INTO `attachments` (`filesize`, `author_id`, `filename`, `content_type`, `created_on`, `disk_directory`, `disk_filename`, `digest`) VALUES (3219456, 51, 'xxxxxxxxxxxxxxxxxxxxx.xls', 'application/vnd.ms-excel', '2019-01-22 13:32:06', '2019/01', '190122133206_888b6d3922b1328bb95a9axxxxxxxxx.xls', '7f983175713489027c14d233d23098f3daf8162a91a1a0e169f0e64xxxxxxxxxx')):
      app/controllers/attachments_controller.rb:97:in `upload'
      lib/redmine/sudo_mode.rb:63:in `sudo_mode'
    

    ファイルのアップロードはエラーになっておらず、DBへの書き込み(INSERT)でエラーになっていた。MySQLのテーブルの定義を調べると、「digest」の型が「varchar(30)」で、実際に書き込みを行っているのは、64文字であることが判明。もともと、ファイルのハッシュ値(チェックサム)をMD5でやっていたものが、バージョンアップのタイミングで、SHA256になり、テーブルの定義がアップデートされていなかったのが、原因だった。

    「digest」カラムをSHA256のハッシュ値を保存できるようにするため、テーブル定義を下記のAlter文で更新した。

    alter table attachment modify digest varchar(64);
    

    更新後は、無事にRedmineにファイル添付できるようになった。

  • Bitnami Redmineが起動しない

    Windows版のBitnami Redmineをアップデートした後に、Apacheのポート番号などを変えていたら、Redmineが使えなくなった。 Bitnami Redmineの状態を調べてみると、ApacheとMySQLは起動していたが、下記のThin_redmineがStopedになっていた。

    • Thin_redmine
    • Thin_redmine2

    手動で起動してみたが、起動を10秒くらいでStopedに代わってしまう。 Apacheを設定変更前にしてみたが、変わらずStopedになってしまう。

    エラーを見ると、rubygemまわりのエラーのようだったので、bundle installを実施。

    bundle install

    追加でいろいろとインストールされた。いろいろとインストールされたので、念のため、OSを再起動。その後、Thin_redmineが起動するようになった。

  • Bitnami Redmineのバージョンアップのやり方

    Windows版のBitnami Redmineのバージョンアップを行ったので、その手順のメモ。バージョンは「3.3.3-1」から「3.4.6-4」へのバージョンアップ。

    バージョンアップの流れ

    1. Bitnamiのページから、Windows用のインストールファイルをダウンロードする。
    2. ダウンロードしたインストーラを起動し、Bitnami Redmineをインストールする。 (バージョンが違う場合は、別フォルダにインストールされるので、共存が可能。)
    3. 下記のフォルダを旧から新にコピーする。
      C:\Bitnami\redmine-X.X.X-X\apps\redmine\htdocs\files\
      C:\Bitnami\redmine-X.X.X-X\apps\redmine\htdocs\plugins\
    4. 旧のMySQLからダンプをとる
      mysqldump -u bitnami --password=password --all-databases  --default-character-set=binary --port=3306 > dump20190115.sql
      (passwordの部分は、\htdocs\config\database.ymlに記録されているので、そこから抜く)
      (mysqldumpへのパスが通っていない可能性があるので、C:\Bitnami\redmine-X.X.X-X\mysql\bin\)
    5. 新のMySQLにインポートする
      mysql -u bitnami --password=password --port=3307 < dump20190115.sql
      (passwordの部分は、\htdocs\config\database.ymlに記録されているので、そこから抜く)
      (ポート番号は、インストールするときに指定したポート番号。間違って古いMySQLに入れないように注意する)
    6. CMD(コマンドプロンプト)で、カレントフォルダを"C:\Bitnami\redmine-X.X.X-X\apps\redmine\htdocs\" に移動する
    7. 下記コマンドを実行し、マイグレーションを行う
      bundle exec rake db:migrate RAILS_ENV=production 
    8. エラーの内容をみて、対処する。下記のようなエラーが出た。
      If this is a development machine, remove the C:/Bitnami/redmine-3.4.6-4/apps/redmine/htdocs/Gemfile freeze
      by running `bundle install --no-deployment`.  
    9. エラー内容に従い、下記のコマンドを実行。
      bundle install --no-deployment
    10. 正常にRedmineが起動した。
    11. あとは、Apacheのポート番号などを修正、メール送信などは、configuration.yamlを修正

    参考: https://qiita.com/sugasaki/items/adc9a08320299c08b94a

  • JP1/AJSの実行中のジョブを強制終了するコマンド

    JP1/AJSで、実行中のジョブ/ジョブネットの強制終了をコマンドで行うには、「ajskill」コマンドを使用する。

    ajskill ジョブ名
    ajskill ジョブネット名

    ジョブネットを指定する場合は、ルートジョブネット名だけ指定できる。稼働中のジョブネットの中の一部のジョブネットを強制終了することはできない。

    ジョブネットを指定した場合、ジョブネットに含まれるジョブも含めて、強制終了される。

    参考: http://itdoc.hitachi.co.jp/manuals/3020/30203K2543/AJSO0055.HTM

  • JP1/AJSでジョブの保留と保留解除をコマンドで行う

    JP1/AJSでジョブの保留と保留解除をコマンドで行うには、「jpqjboalt」コマンドを使用する。 ジョブの保留解除をする場合は、「-hr」オプションを使用する。

    jpqjobalt -hr -j ジョブ番号

    ※ジョブ番号は、「jpqjobshow」コマンドで確認する。

    ジョブの保留を行う場合は、「-h」オプションを使用する。

    jpqjobalt -h -j ジョブ番号

    参考:
    http://itdoc.hitachi.co.jp/manuals/3020/30203K2543/INDEX.HTMj

  • JP1/AJSでジョブネットの名前をコマンドで出力する

    JP1/AJSでジョブネット・ジョブの名前をコマンドで出力するには、`ajsname` コマンドを使用する。 ジョブネットの下のジョブも出力する場合には、「-R」オプションを付けて出力する。

    ajsname -R ジョブネット名

    例えば、実行登録されていないジョブネットを出力する場合には、

    ajsname -RL ジョブネット名

    例えば、実行登録されているジョブネットを出力するには、

    ajsname -RE ジョブネット名

    参考
    http://itdoc.hitachi.co.jp/manuals/3020/30203K2543/AJSO0059.HTM


  • HPE ProLiant GEN10でBIOSでRAIDの構成を行う

    HPE ProLiant GEN10にHyper-VやESXiなどをいれるときに、RAID構成やスペアディスク設定を行う際、BIOS(UEFI)で設定することができる。その手順。Gen10だけあり、かなり設定しやすくなっていた。

    1. サーバの電源ONの後、「F9」で「System Utilites」を起動する
    2. Sytem Utilitesが起動する
    3. キーボードでカーソルを動かし、「Select Language」を選択し、「Enter」を押す
    4. リストから「日本語」を選択して「Enter」を押す
    5. 「システム構成」を選択して「Enter」を押す
    6. システム構成の中から、「Embedded RAID 1:HPE Smart Array P408i-a SR Gen10」を選択して、「Enter」を押す
    7. 「アレイ構成」を選択して、「Enter」を押す
    8. 「アレイの作成」を選択して、「Enter」を押す
    9. HDDの一覧が表示されるので、RAIDを組むHDDにカーソルを合わせて「Space」キーを押す。これをRAID構成に含むHDDの分だけやる
    10. 「次のフォームに進む」を選択して、「Enter」を押す
    11. RAIDレベルの設定画面になるので、「Enter」を押して、プルダウンメニューを開き、RAIDレベルを選択する。HDDが3つのとき、選べたのは、RAID0、RAID5、RAID1(ADM)の3種類。スペアディスクの設定を行う場合は、スペアディスクに割り当てるディスクは選択しないこと。
    12. 「次のフォームに進む」を選択して、「Enter」を押す
    13. 論理ドライブラベルやストリップサイズなどの設定画面になるので、必要な部分を書き換える
    14. 「変更の送信」を選択して、「Enter」を押す
    15. 「論理ドライブの作成が成功しました」と表示される
    16. 「メインメニューに戻る」を選択して、「Enter」を押す
    17. 「終了してSSAを起動」を選択して、「Enter」を押す。
      ディスクの構成が行われる。
    18. 「After completing the configuration – reboot the system.」が表示されたら、サーバを再起動する

    スペアディスクの設定を行う場合は、上記の16まで実行した後に以下を実施する。

    1. 「アレイ構成」を選択して、「Enter」を押す
    2. 「アレイの管理」を選択して、「Enter」を押す
    3. 「アレイA」を選択して、「Enter」を押す。一つしかアレイがなければA、2つあればBと増えていくものと思われる。
    4. 「スペアドライブの管理」を選択して、「Enter」を押す。
    5. 「専用スペアの割当」か「自動交換スペアの割当」を選択して、「Enter」を押す。
    6. スペアディスクに割り当てるディスクを選択して、「Space」キーを押す
    7. 「XXスペアの割当」を選択して、「Enter」を押す。
    8. 「スペアの追加が成功しました」と表示される
    9. 「メインメニューに戻る」を選択して、「Enter」を押す
    10. 「終了してSSAを起動」を選択して、「Enter」を押す。
    11. ディスクの構成が行われる。
    12. 「After completing the configuration – reboot the system.」が表示されたら、サーバを再起動する。
  • JP1/AJSでジョブの実行登録をコマンドで解除する

    JP1AJSのジョブの実行登録をコマンドで解除するときは、ajsleaveコマンドを使用する。 コマンドを実行した日から、実行登録を解除する場合には「-v」のオプションを付けて実行する。

    ajsleave -v ジョブネット名

    期間指定して解除する場合は、「-e」「-w」オプションをつけて実行する。

    ajsleave -e 登録解除する日(YYYY/MM/DD) -w 登録解除を終了する日(YYYY/MM/DD) ジョブネット名

    参考

  • Acronis 11.5でバックアップ結果が管理画面で「なし」で表示される

    Acronis 11.5でバックアップの実行結果が管理画面で「なし」で表示される。個別に実行結果を確認すると、バックアップ自体は、動作しており、正常終了している。

    これは、Acronis 11.5と11.7の製品不具合とのこと。

    管理コンソール、エージェント、管理サーバー間のデータの保持構造に問題があるのが原因とのことで、11系では修正されず、Acronis 12以降では修正済みとのこと。

    Acronisは、ちょいちょい不具合がある。クリティカルなものは少ないけど、微妙なあたりが多い。

  • 次期 Edgeは、Chromiumベースのブラウザに

    正式にマイクロソフトが発表した。
    Windows 10に搭載されているEdgeはいままで独自の処理エンジンだったが、この先の開発で、Edgeの処理エンジンがChromiumに変更になるとのこと。

    https://blogs.windows.com/windowsexperience/2018/12/06/microsoft-edge-making-the-web-better-through-more-open-source-collaboration/amp/

    ブラウザのChrome対応すれば、Edge(=Windows 10)でも使用できるということになる。
    (Edgeで、Gmailがちゃんと使えるようになる、他の機能、たとえばHangouts MEETも使えるようになるはず)

    これは、WWWとしてはかなり歴史的な転換点になると思われる。マイクロソフトが、Windows10標準ブラウザを、Chromiumベースにすることによって、OSベースでは、Windows10、Android4.4以降で、同じ処理になるため、共通のウェブアプリケーションを使用できるようになる。かつ、ChromeはLinuxでも動作するので、ブラウザを使うプラットフォームすべて同じものが使えるようなるはずだ。ちなみに、MacやiPhoneは、Safariですが、これの処理エンジンはWeb-Kitで、Chromiumの元になっており、動作が近い。

    今までは、ブラウザの個別依存が激しすぎて、Chrome対応、IE対応、FireFox対応と、、、個別のCSSやJavaScriptを用意してい。テストも、とても時間ががかっていた。今度は、Chrome対応すると、ほとんどのプラットフォーム(OS)、ほとんどのブラウザで使えるようになり、効率化が図られます。ウェブアプリを新規でつくるときも、最初から対応範囲(対応ブラウザ)が広がるので、参入障壁が低くなる。

    では、EdgeがChromiumベースになって困ることは?というと、Windows10に向けて、Edge対応のシステムを作っているところです。今がんばって開発しても、近い将来に使えなくなると。そのため、いまからChrome対応も併せて必要になってくるという投資が発生する。これから、対応を考えているところにとっては、Chrome対応を考えればよいだけなので、シンプルだ。

    多様性がなくなるという意見もあるが、Chromiumはオープンソースになっているので、そこまで多様性は失われないはずだ。Web-KitのSafariもスマートフォン、タブレットの領域では、多数使われている。そのことを考えても、そう悲観することはないと思う。むしろ、企業向けの対応を考えるとEdgeのChromium採用は喜ばしい。