在生产模式中启动 crystal
Starting crystal in production mode
我通过构建 运行 我的 Crystal webapp,然后 运行 可执行文件。但是,它始终在端口 3000 上侦听。
如何 build/run Crystal Web 应用监听 80 和 443?
我也在使用 Kemal。这是我的示例应用程序。
require "kemal"
get "/" do
"Hello World!"
end
Kemal.run
建筑物:
crystal build src/myapp.cr
运行:
./myapp
只需传递一个端口给Kemal.run
:
require "kemal"
get "/" do
"Hello World!"
end
port = ARGV[0]?.try &.to_i?
Kemal.run port
构建:
crystal build src/myapp.cr
运行:
./myapp # default port 3000
./myapp 80
./myapp 443
首先,确保在发布模式下构建二进制文件:
crystal build --release src/myapp.cr
要覆盖端口和绑定(例如 0.0.0.0
),您可以使用此示例配置:
Kemal.config.port = (ENV["PORT"]? || 8080).to_i
Kemal.config.host_binding = ENV["HOST_BINDING"]? || "127.0.0.1"
Kemal.config.env = "production"
Kemal.config.powered_by_header = false
备注:
- 除了覆盖
Kemal.config.env
,您还可以通过设置 KEMAL_ENV=production ./myapp
. 来启用生产模式
- 禁用
powered_by_header
是可选的。这本身并不是安全风险,但揭示您是哪种服务器 运行 可能会帮助攻击者。因此,建议避免所有不必要的信息。它还将略微减少流量以省略 header。但是,在对系统进行故障排除时,包含 header 可能会有所帮助。
我通过构建 运行 我的 Crystal webapp,然后 运行 可执行文件。但是,它始终在端口 3000 上侦听。
如何 build/run Crystal Web 应用监听 80 和 443?
我也在使用 Kemal。这是我的示例应用程序。
require "kemal"
get "/" do
"Hello World!"
end
Kemal.run
建筑物:
crystal build src/myapp.cr
运行:
./myapp
只需传递一个端口给Kemal.run
:
require "kemal"
get "/" do
"Hello World!"
end
port = ARGV[0]?.try &.to_i?
Kemal.run port
构建:
crystal build src/myapp.cr
运行:
./myapp # default port 3000
./myapp 80
./myapp 443
首先,确保在发布模式下构建二进制文件:
crystal build --release src/myapp.cr
要覆盖端口和绑定(例如 0.0.0.0
),您可以使用此示例配置:
Kemal.config.port = (ENV["PORT"]? || 8080).to_i
Kemal.config.host_binding = ENV["HOST_BINDING"]? || "127.0.0.1"
Kemal.config.env = "production"
Kemal.config.powered_by_header = false
备注:
- 除了覆盖
Kemal.config.env
,您还可以通过设置KEMAL_ENV=production ./myapp
. 来启用生产模式
- 禁用
powered_by_header
是可选的。这本身并不是安全风险,但揭示您是哪种服务器 运行 可能会帮助攻击者。因此,建议避免所有不必要的信息。它还将略微减少流量以省略 header。但是,在对系统进行故障排除时,包含 header 可能会有所帮助。