(Linux)coldfusion と coldfusion_hf の違いについて

Linux版のColdFusionの環境で、coldfusionの起動・停止スクリプトファイルが置かれている[cf_root]/cfusion/bin フォルダ内に “coldfusion” とは別に “coldfusion_hf” というファイル名のスクリプトファイルが置かれている場合があります。このファイルはなぜ存在するのでしょうか?

ColdFusion 10以降、ColdFusion Administratorで「Update」を適用できるようになりました。または、Update用のファイル(hotfix-0XX-XXXXXX.jar)をアドビのサイトからダウンロードし、コマンドからUpdateを適用することもできます。ColdFusionのUpdateを適用する際は、以下のように動作します

  1. Update用のファイル(hotfix-0XX-XXXXXX.jar)を実行します

    ColdFusion AdministratorからUpdateを適用した際はサイレントモードでUpdate用のファイルが実行されます(画面上ではUpdate適用中のメッセージが表示されます)

  2. ColdFusion を停止します
  3. Updateファイルを適用していきます
    • 主な動作
      1. Updateによって差し替え、削除されるファイルの backupを作成します
        • [cf_root]/cfusion/hf-updates 内

          後からUpdateをアンインストールする際に使用するファイルとなりますのでbackupは削除しないでください

      2. Updateを適用します
        • 新規ファイルの追加、ファイルの差し替え、削除を行います
  4. ColdFusion を起動します

    正常にUpdateの適用が終了すると、ColdFusion Administratorの場合は、ページを再読み込みして再ログインを促すメッセージが表示されます。手動の場合は、インストールが終了したことを知らせて Update が終了します

ここで問題となるのが 2. と 4. の動作です。Linux版のColdFusionは、インストール時に実行ユーザーを指定します(rootは推奨されていません)。coldfusionの起動・停止を行う[cf_root]/cfusion/bin/coldfusion スクリプトでは、スクリプト内でsuコマンドを使用して指定した実行ユーザーでColdFusionの起動・停止を行います。そのため、root権限を持たないユーザーでcoldfusionスクリプトを実行すると“You must be root to start ColdFusion.”というエラーメッセージが表示されます。

ところが、ColdFusion Administrator上で Update を実行した際、ColdFusionは指定した実行ユーザーで動作しています。そのため、[cf_root]/cfusion/bin/coldfusion スクリプトを使用してのColdFusionの起動・停止が行えません。そのため、“coldfusion_hf”というスクリプトファイルを([cf_root]/cfusion/binフォルダに存在していない場合に)自動的に生成し、そのスクリプトファイルの中では su によるユーザーの切り替えを行わないようにしています。このスクリプトファイルをUpdateが内部で使用することにより、ColdFusion実行ユーザーのまま「2.ColdFusionを停止」・「4.ColdFusionを起動」を行っています。

以上が、“coldfusion” と “coldfusion_hf” スクリプトファイルの違いになります。

どちらも ColdFusionを起動・停止を行うスクリプトですが、coldfusion_hf で ColdFusionを起動すると、本来指定した ColdFusionの実行ユーザーではなく、coldfusion_hfを実行したユーザー(例えばrootユーザーでこのスクリプトを実行すると、ColdFusionがrootユーザーで起動されます)。

これによる弊害がいくつかありますので、ColdFusionを手動で起動・停止する際に coldfusion_hf を使用しないようにしてください。

同様の理由で [cf_root]/cfusion/jetty 内にも “cfjetty” とは別に “cfjetty_hf”というスクリプトファイルが作成される場合があります。理由は同じです。

【注意点】

  1. 手動で Update を実行した場合は、そのUpdateを実行したユーザーによって、「3.Updateのファイルを適用」が行われます。[cf_root]内の各ファイルの所有権はインストール時に指定した実行ユーザーに設定されています。それらファイルを別の実行ユーザーが操作することになりますので、Updateの差し替えや削除に失敗する場合や、ColdFusionの実行ユーザーとは別のユーザーでファイルが追加され、それによって ColdFusionの動作に支障が行ったり、次に ColdFusion Administrator で Update を実行した際に、一部のファイルが差し替えられない支障が生じる恐れがあります。
    もし、ColdFusion実行ユーザーとは異なるユーザーで Update を(手動で)実行した場合は、[cf_root]/cfusion内のファイルの所有権を確認してください。異なるユーザーのファイルが存在する場合は、ColdFusion実行ユーザーに変更してください
    • 例:#chown -R [ColdFusion 実行ユーザー] [cf_root]/cfusion

      ColdFusionの接続コネクタファイル([cf_root]/config/wsconfig内)は、接続コネクタを設定した際のユーザーで作成されています。こちらは動作に支障がある場合を除いては所有権を変更する必要はありません

  2. ColdFusion実行ユーザーとは異なるユーザーで Update を(手動で)実行した後、あるいは、別のユーザーで“coldfusion_hf”でColdFusionを起動した場合は、本来のColdFusion実行ユーザーではなくUpdateを実行したユーザーでColdFusionが起動されています。この影響によって、ログに情報が書き込めない場合や、不定期な404エラーが発生する場合があることが確認されています。このような場合は、手動でColdFusionを停止した後、下記の確認を行ってください
    • 1.と同様に[cf_root]/cfusion 内でColdFusion実行ユーザー以外の所有権になっているフォルダ・ファイルが無いかを確認する
    • /tmp/ フォルダ内を調べ、customcache.index と customcache.data ファイルが存在しないかを確認します。存在する場合、/tmp/customcache.index と /tmp/customcache.data のファイルがColdFusion実行ユーザーの所有権になっているかを確認してください。異なるユーザー(アップデータ適用時のユーザー)の所有権になっている場合は、ColdFusion実行ユーザーに変更してください。
      •  例:#chown -R [ColdFusion 実行ユーザー] /tmp/customcache.*

        customcache.dataやcustomcache.indexファイルは、ColdFusion9.0.1より追加されたキャッシュライブラリによって生成されます。
        生成のタイミング等は不明ですが、キャッシュのライブラリが使用する処理(例えば .cfmページのリクエストが行われた際や、クエリキャッシュ、cfcache系のタグや関数の実行などで同様のファイルが生成される可能性があります。このファイルに対する書き込みが行えないなどによって、.cfmファイルを正しく処理(Javaコードにコンパイル)ができず404エラーとなる場合があります

 


記事公開日:2019年12月17日
最終更新日:2019年12月20日


x

Sample Modal Window

This is just a sample…

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent suscipit iaculis libero sed tristique. Quisque mollis dolor non tellus placerat vitae sodales lectus porta. Curabitur ut suscipit tellus. Maecenas rhoncus, ante vitae vehicula vestibulum, metus sapien dapibus tellus, et mattis dolor neque vitae nisl. Nullam eleifend ultrices ipsum eget pretium. Curabitur semper metus ut ante adipiscing nec volutpat sem rutrum. Nullam a nisi lacus, non interdum ante. Vivamus ante augue, commodo vel egestas sed, pharetra nec dui. Quisque sed tellus felis. Donec ipsum mauris, sagittis eu accumsan in, aliquam non ipsum.

Vestibulum tempor nunc nec felis scelerisque eget elementum erat dignissim. Ut vel ipsum mollis orci venenatis luctus. Aenean vehicula quam vel quam porttitor ac iaculis elit pulvinar. Proin consequat, ipsum eu venenatis semper, justo turpis posuere tortor, ac placerat metus nisl et lectus. Nulla cursus dui id nunc ullamcorper sed semper nisl lobortis. Aliquam erat volutpat. Phasellus arcu ante, imperdiet in ornare sed, laoreet eu massa.