Vapor Toolbox: 3.1.2
& Vapor Framework: 2.3.0
和Swift 4.0.3
(macos-high-sierra上的Xcode 9.2)构建一个简单的网站(没有数据库)。但运行vapor heroku push
成功后,我尝试转到heroku dashboard
打开我的网站,但它没有成功。我尝试运行heroku logs
并得到崩溃的结果:
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
请帮我解决。
答案 0 :(得分:1)
bash:leeswift:找不到命令
您的heroku buildpack无法找到Steam应用程序生成的可执行文件。这可能是应用程序名称/路径的问题。我还没有使用过heroku,但是根据你的编译模式,Swift会在.build/release/<my-app>
或.build/debug/<my-app>
中生成它的可执行文件。
答案 1 :(得分:1)
请按照以下步骤解决您的问题。
如何在Vapor框架的帮助下创建快速后端API。市场上也有另一种框架。但是我们选择的是快速蒸气。
开始吧。
在系统中安装蒸气。
第1步。运行以下命令以安装蒸气
brew install vapor/tap/vapor-beta
根据以下命令检查是否安装了蒸气。
vapor-beta --help
这些将对蒸气有用。
仅在项目目录中时命令。 你可以
# 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
在项目文件中进行更改或添加新功能以进行更新时,您将具有以下命令。
vapor Xcode
您可以通过本地服务器测试API运行。将会是“ Hello World”
curl http://localhost:8080/hello
=========================================== PostgreSQL设置== ===========================================
设置本地PrortgeSQL。运行以下命令。
brew install postgresql
启动本地数据库服务器。在命令下运行
pg_ctl -D /usr/local/var/postgres start
停止本地数据库服务器。运行以下命令。
pg_ctl -D /usr/local/var/postgres stop
当您希望通过启动将PostgreSQL作为后台服务运行时,可以使用brew服务器。运行以下命令。
brew services start postgresql
由此启动Postgres。
psql -d postgres
通过运行以下命令来创建数据库:
create databas databaseName
create databas ashi-app # Actual command
通过运行以下命令来创建用户:-通过运行以下命令来授予该用户所需的特权。
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设置== =========================================
=============================================部署新的应用程序Heroku =============================================== < / p>
无需数据库即可在Heroku上部署新的swift vapor应用。
考虑您已经创建了没有数据库的Vapor项目。
步骤1。在cd MyApp上导航。
cd myApp
# Actual command
cd ashi-api
步骤2。在根项目目录中创建swift版本文件。在终端上运行以下内容。
echo 5.1.3 > .swift-version
第3步。在根项目目录中创建Procfile文件。在终端上运行以下内容。
echo web: Run serve --env production --hostname 0.0.0.0 --port $PORT > Procfile
第4步。添加文件git并通过以下命令提交
git add .
git commit -m ‘App Setup’
第5步。您应该通过以下命令生成linux测试文件。
swift test --generate-linuxmain
第6步。再次通过以下命令在git中修改。
git add .
git commit -m ‘Tests setup’
第7步。登录Heroku。在heroku上创建要部署的应用程序所必需。因此,我们已经登录了heruko。通过运行以下命令,我们可以登录。
heroku login
步骤8。登录完成后,创建heroku应用。我们必须最喜欢的唯一名称是app-appname。
heroku apps: create myAppName
heroku apps: create ashi-api # Actual command
第9步。通过应用添加快速构建包。为了在此进行编译,我们必须添加buildback。 Heroku不支持Swift的内置包。
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。在服务器上查找命令推送更改。
git push heroku master
现在您的应用程序和API将可以进行测试…
=============================================部署新的应用程序Heroku =============================================== < / p>
=======================使用已部署的应用程序和下一个部署版本设置数据库=============== ===================
步骤1.执行数据库配置。用postgreSQL替换sqlite数据库。因为Heroku不支持sqlite。
在App-> configure.swift中替换。并导入Todo.h TodoController.h
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。通过运行安装带有自制程序的heroku命令。
brew tap heroic/brew && brew install heroku
第3步。我们可以通过运行命令在应用程序中添加postgreSQL。
heroic addons:create heroic-postgresql:hobby-dev
第4步。通过运行以下命令在git中添加更新文件。
git add .
git commit -m ‘Added PostgreSQL file’
第5步。在服务器上查找命令推送更改。
git push heroku master
第二个版本将可用于使用postgreSQL进行测试。
=======================使用已部署的应用程序和下一个部署版本设置数据库=============== ===================
答案 2 :(得分:0)
我认为你在'Procfile&#39;中有错误。文件。例如,这是我的:
web: Run --env=production --workdir=./ --config:servers.default.port=$PORT