質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.40%
Haskell

Haskellは高い機能性をもった関数型プログラミング言語で、他の手続き型プログラミング言語では難しいとされている関数でも容易に行うことができます。強い静的型付け、遅延評価などに対応しています。

Q&A

解決済

1回答

180閲覧

Yesodアプリを実行ファイルから3000ポート以外で起動させたい

apo

総合スコア362

Haskell

Haskellは高い機能性をもった関数型プログラミング言語で、他の手続き型プログラミング言語では難しいとされている関数でも容易に行うことができます。強い静的型付け、遅延評価などに対応しています。

0グッド

0クリップ

投稿2024/06/07 00:48

編集2024/06/07 00:51

実現したいこと

Yesodアプリを実行ファイルから3000ポート以外で起動させたい

発生している問題・分からないこと

Yesodアプリを実行ファイルから3000ポート以外(3002)で起動させたい。
コマンドで起動するのであればstack exec -- yesod devel --port=3002で3002番ポートで起動するのですが、実行ファイル(ここではyesodapp1)から起動する場合に./yesodapp1 --port=3002としてもエラーになります。

またyesodapp1/config/setting.ymlという設定ファイルがあるのですが、この設定ファイルのport: "_env:YESOD_PORT:3000"という部分をport: "_env:YESOD_PORT:3002"に修正してもポートを変更できません。

該当のソースコード

Haskell

1# Values formatted like "_env:YESOD_ENV_VAR_NAME:default_value" can be overridden by the specified environment variable. 2# See https://github.com/yesodweb/yesod/wiki/Configuration#overriding-configuration-values-with-environment-variables 3 4static-dir: "_env:YESOD_STATIC_DIR:static" 5host: "_env:YESOD_HOST:*4" # any IPv4 host 6port: "_env:YESOD_PORT:3002" # NB: The port `yesod devel` uses is distinct from this value. Set the `yesod devel` port from the command line. 7# For `keter` user, enable the follwing line, and comment out previous one. 8#port: "_env:PORT:3000" # `keter` uses `PORT` env var name 9 10ip-from-header: "_env:YESOD_IP_FROM_HEADER:false" 11 12# Default behavior: determine the application root from the request headers. 13# Uncomment to set an explicit approot 14#approot: "_env:YESOD_APPROOT:http://localhost:3000" 15 16# By default, `yesod devel` runs in development, and built executables use 17# production settings (see below). To override this, use the following: 18# 19# development: false 20 21# Optional values with the following production defaults. 22# In development, they default to the inverse. 23# 24# development: false 25# detailed-logging: false 26# should-log-all: false 27# reload-templates: false 28# mutable-static: false 29# skip-combining: false 30 31copyright: Insert copyright statement here 32#analytics: UA-YOURCODE

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

他にも上記設定ファイルyesodapp1/config/setting.ymlにある、port: "_env:YESOD_PORT:3000"というコードを下記のように変更してみましたが結果は変わりませんでした。
port: "3002"
port: 3002

また環境変数YESOD_PORTをexport YESOD_PORT=3002のようにして実行してみましたが、結果は変わりませんでした。

ご教示よろしくお願いします。 

補足

stack --version Version 2.9.1, Git revision 409d56031b4240221d656db09b2ba476fe6bb5b1 (dirty) (8983 commits) x86_64

ホストPC:Windows10
ゲストPC:VirtualBox(ArchLinux)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

上記設定ファイルyesodapp1/config/settings.ymlのコメントアウトされていた
#port: "_env:PORT:3000" port: "_env:PORT:3002" に、
#approot: "_env:YESOD_APPROOT:http://localhost:3000"approot: "_env:YESOD_APPROOT:http://localhost:3002"に変更しビルド後、実行ファイル(yesodapp1/.stack-work/dist/x86_64-linux-tinfo6/Cabal-3.6.3.0/build/yesodapp1/yesodapp1)を動かすと3002番ポートで起動しました。

お騒がせしました。

投稿2024/06/07 01:12

apo

総合スコア362

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.40%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問