使用 Vapor 3 更改主机名和端口
Changing hostname and port with Vapor 3
Vapor 3 似乎无法读取 Config/server.json 文件,因此我无法配置 Vapor 3 应用绑定的主机名和端口。
Vapor 3 对此有不同的方法吗?
目前,您可以在运行连接您的服务器时设置端口和主机名:
swift run Run --hostname 0.0.0.0 --port 9000
EngineServer
有 appears to be 基于结构的配置,但我认为它在 运行 时还不可配置。上次 Vapor 开发人员(在他们的 Slack 上)回答这个问题时,建议使用命令行参数方法。
您可以使用命令行标志设置主机名和端口:
--hostname localhost --port 8080
您也可以在 services
中注册您的 EngineServerConfig
。
在configure.swift
中插入以下代码:
let myServerConfig = try EngineServerConfig.detect(from: &env, port: 8081)
services.register(myServerConfig)
这应该适用于 3.0.0-rc.2.2
我的 0.02 美元
import Vapor
/// Called before your application initializes.
///
/// [Learn More →](https://docs.vapor.codes/3.0/getting-started/structure/#configureswift)
public func configure(
_ config: inout Config,
_ env: inout Environment,
_ services: inout Services
) throws {
if env == .development {
services.register(Server.self) { container -> EngineServer in
var serverConfig = try container.make() as EngineServerConfig
serverConfig.port = 8989
serverConfig.hostname = "192.168.31.215"
let server = EngineServer(
config: serverConfig,
container: container
)
return server
}
}
//Other configure code
}
它在 Vapor 3.0.0 RC 2.4.1 上完美运行
官方解决方案(经维护者认可)
您可以使用 NIOServerConfig。
let serverConfiure = NIOServerConfig.default(hostname: "0.0.0.0", port: 9090)
services.register(serverConfiure)
Vapor 版本为 3.0.3
确保你使用的是 Vapor 3 版本,然后使用这个:
vapor run --hostname=0.0.0.0 --port=8080
如果你不在参数后面加上=
,你将收到如下投诉:
CommandError: Unknown command 8080
如果你按照我上面的建议去做,你将收到:
[Deprecated] --option=value syntax is deprecated.
请改用 --option 值(不带 =),但该命令将 运行 并且工作正常。
如果参数后没有 =
,我无法找到 运行 此命令的方法。
编辑 运行 方案的 "Arguments Passed on Launch" 对我也有效
蒸气中:稳定 3.1.10
打开:configure.swift
在:public func configure()
添加以下内容:
// Define Hostname & Port to listen to ...
let myServerConfig = NIOServerConfig.default(hostname: "servers-hostname.local", port: 8080)
services.register(myServerConfig)
iOS Guy 写的内容需要针对 Vapor 3.3.1 进行一些修改
// Define Hostname & Port to listen to ...
let myServerConfig = NIOServerConfig.default(hostname: "localhost", port: 8081)
services.register(myServerConfig)
所以NIOServerConfig.default
只能和两个参数hostname & port一起使用,如果只是想改变端口号就可以使用
蒸汽 4
app.http.server.configuration.hostname = "127.0.0.1"
app.http.server.configuration.port = 8000
蒸汽 3
services.register(NIOServerConfig.default(hostname: "127.0.0.1", port: 8000))
Vapor 3 似乎无法读取 Config/server.json 文件,因此我无法配置 Vapor 3 应用绑定的主机名和端口。
Vapor 3 对此有不同的方法吗?
目前,您可以在运行连接您的服务器时设置端口和主机名:
swift run Run --hostname 0.0.0.0 --port 9000
EngineServer
有 appears to be 基于结构的配置,但我认为它在 运行 时还不可配置。上次 Vapor 开发人员(在他们的 Slack 上)回答这个问题时,建议使用命令行参数方法。
您可以使用命令行标志设置主机名和端口:
--hostname localhost --port 8080
您也可以在 services
中注册您的 EngineServerConfig
。
在configure.swift
中插入以下代码:
let myServerConfig = try EngineServerConfig.detect(from: &env, port: 8081)
services.register(myServerConfig)
这应该适用于 3.0.0-rc.2.2
我的 0.02 美元
import Vapor
/// Called before your application initializes.
///
/// [Learn More →](https://docs.vapor.codes/3.0/getting-started/structure/#configureswift)
public func configure(
_ config: inout Config,
_ env: inout Environment,
_ services: inout Services
) throws {
if env == .development {
services.register(Server.self) { container -> EngineServer in
var serverConfig = try container.make() as EngineServerConfig
serverConfig.port = 8989
serverConfig.hostname = "192.168.31.215"
let server = EngineServer(
config: serverConfig,
container: container
)
return server
}
}
//Other configure code
}
它在 Vapor 3.0.0 RC 2.4.1 上完美运行
官方解决方案(经维护者认可)
您可以使用 NIOServerConfig。
let serverConfiure = NIOServerConfig.default(hostname: "0.0.0.0", port: 9090)
services.register(serverConfiure)
Vapor 版本为 3.0.3
确保你使用的是 Vapor 3 版本,然后使用这个:
vapor run --hostname=0.0.0.0 --port=8080
如果你不在参数后面加上=
,你将收到如下投诉:
CommandError: Unknown command 8080
如果你按照我上面的建议去做,你将收到:
[Deprecated] --option=value syntax is deprecated.
请改用 --option 值(不带 =),但该命令将 运行 并且工作正常。
如果参数后没有 =
,我无法找到 运行 此命令的方法。
编辑 运行 方案的 "Arguments Passed on Launch" 对我也有效
蒸气中:稳定 3.1.10
打开:configure.swift
在:public func configure()
添加以下内容:
// Define Hostname & Port to listen to ...
let myServerConfig = NIOServerConfig.default(hostname: "servers-hostname.local", port: 8080)
services.register(myServerConfig)
iOS Guy 写的内容需要针对 Vapor 3.3.1 进行一些修改
// Define Hostname & Port to listen to ...
let myServerConfig = NIOServerConfig.default(hostname: "localhost", port: 8081)
services.register(myServerConfig)
所以NIOServerConfig.default
只能和两个参数hostname & port一起使用,如果只是想改变端口号就可以使用
蒸汽 4
app.http.server.configuration.hostname = "127.0.0.1"
app.http.server.configuration.port = 8000
蒸汽 3
services.register(NIOServerConfig.default(hostname: "127.0.0.1", port: 8000))