在 Google 云平台上运行 BaGet
警告
此页面正在完善中!
我们是开源的,欢迎贡献!在 GitHub 上 Fork 我们。
在开始之前,您应该决定使用哪个 AppEngine 区域。为获得最佳性能,Cloud Storage 和 Cloud SQL 应与您的 AppEngine 部署位于同一区域。
Google Cloud Storage
包可以存储在 Google Cloud Storage 中。
设置
按照 使用 Cloud Storage 中的说明创建存储桶。
配置
注意:如果您计划使用 AppEngine,请跳过此部分,按照下方的 AppEngine 说明操作。
设置服务账号并下载凭据。将 GOOGLE_APPLICATION_CREDENTIALS 环境变量设置为下载的 JSON 文件的路径。
通过更新 appsettings.json 文件来配置 BaGet 使用 Google Cloud Storage:
{
...
"Storage": {
"Type": "GoogleCloud",
"BucketName": "your-gcs-bucket"
},
...
}
Google Cloud SQL
- 按照 使用 Cloud SQL 中的说明创建第 2 代 MySQL 5.7 Google Cloud SQL 实例。默认选项应该可以正常工作。
- 创建一个名为
baget的数据库。这可以通过 Google Cloud 控制台完成。使用utf8mb4作为字符集。 - 按照 配置 SSL/TLS 创建客户端证书。下载它创建的三个文件。
- 运行
openssl pkcs12 -inkey client-key.pem -in client-cert.pem -export -out client.pfx将 PEM 转换为 PFX- 在 Windows 上获取 OpenSSL 的一种方法是安装 Git Bash。
- 通过更新
appsettings.json文件来配置 BaGet 使用 Google Cloud SQL:
{
...
"Database": {
"Type": "MySql",
"ConnectionString": "Server=YOURIP;User Id=root;Password=***;Database=baget;CertificateFile=C:\\Path\\To\\client.pfx;CACertificateFile=C:\\Path\\To\\server-ca.pem;SSL Mode=VerifyCA"
},
...
}
- 运行
dotnet ef database update --context MySqlContext --project src\BaGet创建表
Google AppEngine
BaGet 可以托管在 Google AppEngine 中。参见这里了解如何创建新 AppEngine 项目的教程。
创建 app.yaml 文件来发布本仓库中 Dockerfile 构建的 Docker 容器。在下面的模板中,进行以下替换:
PROJECT— 您的 GCP 项目,由gcloud config get-value project返回REGION— 您的 Google Cloud SQL 数据库所在的 GCP 区域,如us-central1或us-west2DBINSTANCE— 您的 Google Cloud SQL 数据库实例名称DBNAME— 该实例上 BaGet 数据库的名称(如上述说明中的baget)PASSWORD— 数据库 root 用户的密码BUCKETNAME— 上方配置的 Google Cloud Storage 存储桶名称
runtime: custom
env: flex
# 以下设置用于在测试期间降低成本,不一定
# 适用于生产环境。更多信息请参见:
# https://cloud.google.com/appengine/docs/flexible/dotnet/configuring-your-app-with-app-yaml
resources:
cpu: 1
memory_gb: 0.5
disk_size_gb: 10
beta_settings:
cloud_sql_instances: "PROJECT:REGION:DBINSTANCE"
env_variables:
Database__Type: "MySql"
Database__ConnectionString: "Server=/cloudsql/PROJECT:REGION:DBINSTANCE;User Id=root;Password=PASSWORD;Database=DBNAME;SslMode=None"
Storage__Type: "GoogleCloud"
Storage__BucketName: "BUCKETNAME"
Search__Type: "Database"
ASPNETCORE_URLS: "http://0.0.0.0:8080"
运行 gcloud app deploy 发布应用程序。