首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Vapor deploy to Heroku with log error code=H10 desc="App crashed“method=GET

Vapor deploy to Heroku with log error code=H10 desc="App crashed“method=GET
EN

Stack Overflow用户
提问于 2017-12-26 18:03:30
回答 3查看 618关注 0票数 1

经过多次研究和尝试,我仍然不能解决这个问题。我使用Vapor Toolbox: 3.1.2 & Vapor Framework: 2.3.0和Swift 4.0.3(macos-high-sierra上的Xcode9.2)来构建一个简单的网站(没有数据库)。但在运行vapor heroku push成功后,我尝试转到heroku dashboard打开我的网站,但它不起作用。我尝试运行heroku logs,得到的结果是crashed:

代码语言:javascript
运行
复制
2017-12-26T09:04:10.000000+00:00 app[api]: Build succeeded
2017-12-26T09:10:00.192686+00:00 heroku[web.1]: Process exited with status 127
2017-12-26T09:10:00.207462+00:00 heroku[web.1]: State changed from starting to crashed
2017-12-26T09:10:00.210981+00:00 heroku[web.1]: State changed from crashed to starting
2017-12-26T09:10:03.369454+00:00 heroku[web.1]: Starting process with command `leeswift --env=production --port=19489`
2017-12-26T09:10:00.072884+00:00 app[web.1]: bash: leeswift: command not found
2017-12-26T09:10:05.460027+00:00 app[web.1]: bash: leeswift: command not found
2017-12-26T09:10:05.560609+00:00 heroku[web.1]: Process exited with status 127
2017-12-26T09:10:05.594754+00:00 heroku[web.1]: State changed from starting to crashed
2017-12-26T09:11:28.858638+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=leeswift.herokuapp.com request_id=0eab887e-dba0-488e-b3f6-899de07898d6 fwd="118.69.108.38" dyno= connect= service= status=503 bytes= protocol=https

请帮我修一下。

EN

回答 3

Stack Overflow用户

发布于 2017-12-29 18:46:25

bash: leeswift:找不到命令

你的heroku buildpack找不到为蒸汽应用程序生成的可执行文件。这可能是应用程序的名称/路径的问题。我还没有使用heroku,但Swift根据你的编译模式,在.build/release/<my-app>.build/debug/<my-app>中生成它的可执行文件。

票数 2
EN

Stack Overflow用户

发布于 2018-01-15 17:26:02

我认为你在'Procfile‘文件中有一个错误。例如,这是我的:

代码语言:javascript
运行
复制
web: Run --env=production --workdir=./ --config:servers.default.port=$PORT
票数 2
EN

Stack Overflow用户

发布于 2020-04-11 21:46:37

请按照以下步骤解决您的问题。

如何借助Vapor框架创建swift后台API。市场上还提供了另一个框架。但我们选择的是快速蒸气。

让我们开始吧。

在您的系统中安装蒸汽。

步骤1.运行下面的命令来安装蒸气

代码语言:javascript
运行
复制
brew install vapor/tap/vapor-beta

检查蒸气是否已安装,是否在命令下运行。

代码语言:javascript
运行
复制
vapor-beta --help

这些将是有用的蒸气命令。

仅当您在项目目录中时,才使用。你可以的

代码语言:javascript
运行
复制
# Created vapor project
vapor new myProjectName

# Build vapor project 
vapor build

# Run vapor project
vapor run 

# You can configure Xcode. You should be inside created project directory. 
vapor Xcode

当您在项目文件中进行了更改或为更新添加了新功能时,您可以使用以下命令。

代码语言:javascript
运行
复制
vapor Xcode

您可以通过本地服务器测试API运行。出场的是“Hello World”

代码语言:javascript
运行
复制
curl http://localhost:8080/hello 

===========================================PostgreSQL Setup================================================

设置本地PrortgeSQL。运行下面的命令。

代码语言:javascript
运行
复制
brew install postgresql

启动本地数据库服务器。在下面运行命令

代码语言:javascript
运行
复制
pg_ctl -D /usr/local/var/postgres start

停止本地数据库服务器。运行下面的命令。

代码语言:javascript
运行
复制
pg_ctl -D /usr/local/var/postgres stop

当您希望在启动时将PostgreSQL作为后台服务运行时,可以使用brew服务器。运行下面的命令。

代码语言:javascript
运行
复制
brew services start postgresql

让我们用这个来启动Postgres。

代码语言:javascript
运行
复制
psql -d postgres

通过运行以下命令创建数据库:

代码语言:javascript
运行
复制
create databas databaseName
create databas ashi-app # Actual command 

通过运行以下命令创建用户:-通过运行以下命令授予该用户所需的权限。

代码语言:javascript
运行
复制
create user username
create user ashi-app-user # Actual command

grant all privileges on database databaseName to userName
# Actual command
grant all privileges on database ashi-app to ashi-app-user

===========================================PostgreSQL Setup================================================

Heroku================================================上的===========================================Deploy fresh应用程序

在没有数据库的Heroku上部署新的swift蒸汽应用程序。

假设您已经创建了没有数据库的Vapor项目。

步骤1.在cd MyApp上导航。

代码语言:javascript
运行
复制
cd myApp
# Actual command
cd ashi-api

步骤2.在终端上的根项目directory.Run中创建快速版本文件。

代码语言:javascript
运行
复制
echo 5.1.3 > .swift-version

步骤3.在终端的根项目directory.Run中创建Procfile文件。

代码语言:javascript
运行
复制
echo web: Run serve --env production --hostname 0.0.0.0 --port $PORT > Procfile 

步骤4.通过以下命令添加文件git并提交

代码语言:javascript
运行
复制
git add .

git commit -m ‘App Setup’

步骤5.您应该使用下面的命令生成linux测试文件。

代码语言:javascript
运行
复制
swift test --generate-linuxmain

步骤6.使用下面的命令在git中再次修改添加。

代码语言:javascript
运行
复制
git add .

git commit -m ‘Tests setup’

步骤7.登录Heroku。需要在heroku上创建应用程序以进行部署。我们已经在heruko上登录了。通过运行下面的命令,我们可以登录。

代码语言:javascript
运行
复制
heroku login

登录完成后,创建heroku应用程序。我们最喜欢的名字必须是app-appname。

代码语言:javascript
运行
复制
heroku apps: create myAppName
heroku apps: create ashi-api # Actual command

步骤9.添加带有app的swift构建包。为了在这里编译,我们必须添加buildback。Heroku不支持内置swift包。

代码语言:javascript
运行
复制
heroku buildpacks:set https://github.com/vapor-community/heroku-buildpack -a myproject

# Actual command
heroku buildpacks:set https://github.com/vapor-community/heroku-buildpack -a ashi-api

步骤10.在服务器上查找命令推送更改。

代码语言:javascript
运行
复制
git push heroku master

现在您的应用程序和API将可用于测试…。

Heroku================================================上的===========================================Deploy fresh应用程序

包含已部署的应用程序和下一版本deployment==================================的======================Set数据库

步骤1.进行数据库配置。用postgreSQL替换sqlite数据库。因为Heroku不支持sqlite。

在App->configure.swift中替换。并在Todo.h TodoController.h中导入

代码语言:javascript
运行
复制
import FluentPostgreSQL

// Configure a PostgreSQL database
    let postgreSQLConfig: PostgreSQLDatabaseConfig
    
    if let url = Environment.get("DATABASE_URL") {
      postgreSQLConfig = PostgreSQLDatabaseConfig(url: url)!
    } else {
      postgreSQLConfig = PostgreSQLDatabaseConfig(hostname: "localhost", username: "app_test")
    }
    let postgreSQL = PostgreSQLDatabase(config: postgreSQLConfig)

    // Register the configured PostreSQL database to the database config.
    var databases = DatabasesConfig()
    databases.add(database: postgreSQL, as: .psql)
    services.register(databases)

步骤2.通过运行以下命令,使用home-brew安装heroku命令。

代码语言:javascript
运行
复制
brew tap heroic/brew && brew install heroku

步骤3.我们可以通过运行命令在app中添加postgreSQL。

代码语言:javascript
运行
复制
heroic addons:create heroic-postgresql:hobby-dev

步骤4.通过运行下面的命令在git中添加更新文件。

代码语言:javascript
运行
复制
git add .

git commit -m ‘Added PostgreSQL file’

步骤5.在服务器上查找命令推送更改。

代码语言:javascript
运行
复制
git push heroku master

第二个版本将可用于使用postgreSQL进行测试。

包含已部署的应用程序和下一版本deployment==================================的======================Set数据库

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47976863

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档