マジでよくわかんなかったので備忘録として書いておきます、これどれくらいの人に需要あるんだろうな。
入手
Adobe のアカウントを持っていようと、インストーラのダウンロードには毎回記述が必要。 長年この仕様なんだけど、なんとかならんのかこれ。 なんのための Adobe のアカウントじゃい!
今回は zip 圧縮版 ColdFusion_WWEJ_macos.zip
を利用します。
展開
ColdFusion_WWEJ_macos.zip を unzip して任意のパスに配置してください。 ColdFusion_2023_WWEJ_macos というディレクトリが作成されるので、これがホームディレクトリになります。
❯ mv ~/Downloads/ColdFusion_WWEJ_macos.zip ~/Workspace/ ❯ unzip ColdFusion_WWEJ_macos.zip ❯ cd ColdFusion_2023_WWEJ_macos
開発元を検証できないため開けません
おなじみのやつですね。 次項で ColdFusion の起動をしようとすると止まるので、セキュリティとプライバシーで「 Java の実行とめました!」と出ているはずなので許可するようにしてください。
面倒。
インストール
いわゆる ColdFusion/cfusion/bin
にあるファイルを叩くことで普段と変わらないインストールが実施できます。
❯ ./cfusion/bin/cfstart.sh
Starting ColdFusion 2023 server ... サーバーを起動するには、EULA に同意する必要があります。cfinstall スクリプト (/Users/donbulinux/Workspace/ColdFusion_2023_WWEJ_macos/ColdFusion/cfusion/bin) を実行し、EULA の利用条件に同意してください。 There has been an error starting ColdFusion 2023 server, please check the logs.
ファッキュー、というわけで利用条件の同意やら規約の確認をしましょう (タテマエ)。
❯ ./cfusion/bin/cfinstall.sh
出力は以下のようになります。 (内容ははしょってます)
------------------------------ ColdFusion セットアップウィザードへようこそ ------------------------------ ColdFusion インストールディレクトリ : /Users/donbulinux/Workspace/ColdFusion_2023_WWEJ_macos/ColdFusion ================================================================================ 使用許諾契約 ライセンス契約の条件に同意しますか。 [Y/N]: y ================================================================================ インストールタイプ インストールの選択 [1]: 3 ================================================================================ ColdFusion サーバープロファイルを選択 ColdFusion サーバープロファイルを選択 [1]: 3 ================================================================================ Administrator パスワード -------------------------------------------------------------------------------- パスワードは 8 文字以上で、英大文字、英小文字、数字および特殊文字 (~!$%^&*()_ =,./;[]{}| -@#) をそれぞれ 1 文字含める必要があります。 -------------------------------------------------------------------------------- 管理者パスワードを入力してください: ************* 管理者パスワードを再入力してください: ************* ================================================================================ 内蔵 Web サーバーポート番号 ColdFusion 管理者ポート [8500]: ================================================================================ RDS パスワード RDS パスワードを入力してください: ************* RDS パスワードを再入力してください: ************* ================================================================================ デプロイメントタイプ デプロイメントタイプ [1]: 2 続行しますか? [Y/N]: y -------------------------------------------------------------------------------- Adobe Coldfusion 2023 が正常に設定されました。 インストールを続行するには、/Users/donbulinux/Workspace/ColdFusion_2023_WWEJ_macos/ColdFusion/cfusion/bin に移動し、「./coldfusion start」と入力して、サーバーを開始します。 サーバーを開始したら、http://127.0.0.1:8500/CFIDE/administrator/index.cfm で 設定ウィザードにログインしてください。 --------------------------------------------------------------------------------
スタートアップアイテムの配置
インストーラ叩いて終わりかと思ったら、別途スタートアップアイテムを配置しないとダメなようです。 いやそんなもん常駐されても困るしいらんのだが……。
❯ ./cfusion/bin/coldfusion start You must be the root user to configure the ColdFusion to start on System boot. Start ColdFusion as "sudo ./coldfusion start" to configure. Once it has been configured, start ColdFusion as "./coldfusion start" to run ColdFusion as non-root user.
メッセージだけ見ると非 root で起動できそうですが、実際上記のように起動できません。 どうするかっていうと、一度 root で起動して You must be the root user to configure the ColdFusion to start on System boot. に該当する作業を実施してやる必要があります。 ええー……。
❯ sudo ./cfusion/bin/coldfusion start ====================================================================== Configuring ColdFusion 2023 to start on system init. Creating the ColdFusion 2023 start script /Library/StartupItems/ColdFusion2023/ColdFusion2023 Install complete ====================================================================== Start ColdFusion on system boot has been configured. Start ColdFusion as "./coldfusion start" to run ColdFusion as non-root user. ======================================================================
できました。 まだ罠があります。
Runtime サービスを使用できません。
何を言っているんだ、という感じですが。
Start ColdFusion on system boot has been configured. Start ColdFusion as "./coldfusion start" to run ColdFusion as non-root user.
システム起動時に ColdFusion を開始するように設定されています。 ColdFusion を「./coldfusion start」として起動し、root 以外のユーザーとして ColdFusion を実行します。
メッセージだけ読むと非 root ユーザでサービスを起動しろ、と読めます。実際には、非 root で起動すると起動しません。
やってみましょう。
❯ ./cfusion/bin/coldfusion start Starting ColdFusion 2023 server ... ====================================================================== ColdFusion 2023 server has been started. ColdFusion 2023 will write logs to /Users/donbulinux/Workspace/ColdFusion_2023_WWEJ_macos/ColdFusion/cfusion/bin/../logs/coldfusion-out.log ======================================================================
HTTPステータス 500 – Internal Server Error タイプ 例外報告 メッセージ coldfusion.server.ServiceFactory$ServiceNotAvailableException: Runtime サービスを使用できません。 説明 サーバーは予期しない条件に遭遇しました。それはリクエストの実行を妨げます。 例外 javax.servlet.ServletException: coldfusion.server.ServiceFactory$ServiceNotAvailableException: Runtime サービスを使用できません。 coldfusion.bootstrap.ClassloaderHelper.initServletClass(ClassloaderHelper.java:145) coldfusion.bootstrap.BootstrapServlet.init(BootstrapServlet.java:111) org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:492) org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93) org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:373) org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:926) org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1791) org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) java.base/java.lang.Thread.run(Thread.java:833) 根本原因 coldfusion.server.ServiceFactory$ServiceNotAvailableException: Runtime サービスを使用できません。 coldfusion.server.ServiceFactory.getRuntimeService(ServiceFactory.java:664) coldfusion.CfmServlet.init(CfmServlet.java:101) coldfusion.bootstrap.ClassloaderHelper.initServletClass(ClassloaderHelper.java:137) coldfusion.bootstrap.BootstrapServlet.init(BootstrapServlet.java:111) org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:492) org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93) org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:373) org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:926) org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1791) org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) java.base/java.lang.Thread.run(Thread.java:833) 注意 原因のすべてのスタックトレースは、サーバのログに記録されています。
かなり面倒な気持ちになっている。
この状態でも一応プロセスは起動しているので、一度プロセスを終了してから再度 sudo して起動します。
❯ ./coldfusion stop Stopping ColdFusion 2023 server, please wait ColdFusion 2023 server has been stopped ❯ sudo ./coldfusion start Password: Starting ColdFusion 2023 server ... ====================================================================== ColdFusion 2023 server has been started. ColdFusion 2023 will write logs to /Users/donbulinux/Workspace/ColdFusion_2023_WWEJ_macos/ColdFusion/cfusion/bin/../logs/coldfusion-out.log ======================================================================
起動しましたね。 というわけで標準出力メッセージが何一つ信用できない、というか install.sh と start.sh 別れてるんだから StartupItems への配置は install.sh でやれよという気持ちに。
StartupItems
前述した You must be the root user to configure the ColdFusion to start on System boot. ですが、具体的に何をしているかというと、 /Library/StartupItems
へスクリプトファイルを配置しているようです。
❯ pwd;ls -lha /Library/StartupItems total 0 drwxr-xr-x 3 root wheel 96B 9 28 15:40 . drwxr-xr-x 69 root wheel 2.2K 9 25 22:03 .. drwxr-xr-x@ 4 root wheel 128B 9 28 15:40 ColdFusion2023 ❯ ls -lha /Library/StartupItems/ColdFusion2023 total 16 drwxr-xr-x@ 4 root wheel 128B 9 28 15:40 . drwxr-xr-x 3 root wheel 96B 9 28 15:40 .. -r-xr--r--@ 1 root wheel 467B 9 28 15:40 ColdFusion2023 -r-xr--r--@ 1 root wheel 384B 9 28 15:40 StartupParameters.plist
システム全体が起動遅くなるの困るので削除します。
❯ sudo rm -rf /Library/StartupItems/ColdFusion2023 Password:
アバヨ!
以上です
以上です。
Docker について
Dockerfile 、公式提供は linux/amd64 向けしか存在せずこのような事に。
フォーラムを見ていると「 commandbox のイメージだとうまくいくよ!」という知見もあり。
確認してみると linux/amd64 以外に arm64 も確かに存在します。
サポートしているエンジンを見る限りでは ColdFusion の歴代バージョンが揃っており「ウム」という感じだったのですが、 CFadmin を表示させようとすると HTTP 500 Error となるので何かがおかしい感じです。
server.json に以下のように書けば (最悪 "blockCFAdmin": false
だけでもいいはずなんだけど) 有効化される、と思うんだけどうまく行かなかったので。 なーんだろね。
{ "profile": "development", "web": { "host": "127.0.0.1", "webroot": "/usr/local/lib/serverHome/", "blockCFAdmin": false } }