使用 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

EngineServerappears 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))