在Google App Engine环境中运行Laravel
Laravel
Laravel是一个PHP开发人员的开源Web框架,鼓励使用模型 - 视图 - 控制器(MVC)模式。
您可以在Google Cloud Platform(GCP)上查看PHP以获得PHP的概述,并学习如何在GCP上运行PHP应用程序。
先决条件
在Google云端平台控制台中创建一个项目。
为您的项目启用结算。
安装Google Cloud SDK。
准备
请按照官方文档 从laravel.com 安装 Laravel。
开始
使用以下命令运行应用程序:
php artisan serve
访问http:// localhost:8000查看Laravel欢迎页面。
部署
app.yaml
使用以下内容创建一个文件:runtime: phpenv: flexruntime_config: document_root: public# Ensure we skip ".env", which is only for local developmentskip_files: - .envenv_variables: # Put production environment variables here. APP_LOG: errorlog APP_KEY: YOUR_APP_KEY STORAGE_DIR: /tmp
替换YOUR_APP_KEY
在app.yaml与你用下面的命令生成一个应用程序键:
php artisan key:generate --show
如果您在Linux或MacOS上,以下命令将自动更新您的app.yaml:
sed -i '' "s#YOUR_APP_KEY#$(php artisan key:generate --show --no-ansi)#" app.yaml
添加以下下scripts
的composer.json:
"post-install-cmd": [ "chmod -R 755 bootstrap/cache", "php artisan cache:clear"]
运行以下命令来部署您的应用程序:
gcloud app deploy
访问
http://YOUR_PROJECT_ID.appspot.com
以查看Laravel欢迎页面。用YOUR_PROJECT_ID
您的GCP项目的ID 替换。
设置数据库会话
注意:本节仅适用于Laravel 5.4.16。要使用早期版本的Laravel,您需要手动将DB_SOCKET
值添加到 config/database.php
(请参阅#4178)
按照说明为MySQL设置 Google Cloud SQL第二代实例。
按照说明 在本地计算机上安装Cloud SQL代理客户端。Cloud SQL代理用于在本地运行时连接到您的Cloud SQL实例。
从命令行使用Cloud SDK运行以下命令。复制
connectionName
下一步的值。用YOUR_INSTANCE_NAME
您的实例的名称替换:gcloud sql instances describe YOUR_INSTANCE_NAME
启动Cloud SQL代理,并
YOUR_INSTANCE_CONNECTION_NAME
使用您在上一步中检索到的连接名称进行替换:cloud_sql_proxy -instances=YOUR_INSTANCE_CONNECTION_NAME=tcp:3306
使用MySQL客户端或类似的程序连接到您的实例,并为应用程序创建一个数据库。出现提示时,使用您配置的根密码。
mysql -h 127.0.0.1 -u root -p -e "CREATE DATABASE laravel;"
运行Laravel的数据库迁移。这可以通过设置参数.env
或通过将其作为环境变量传入来在本地完成。请务必YOUR_DB_PASSWORD
使用您配置的根密码替换下面的内容:# create a migration for the session tablephp artisan session:tableDB_DATABASE=laravel DB_USERNAME=root DB_PASSWORD=YOUR_DB_PASSWORD php artisan migrate --force
app.yaml
使用以下内容修改您的文件:runtime: phpenv: flexruntime_config: document_root: public# Ensure we skip ".env", which is only for local developmentskip_files: - .envenv_variables: # Put production environment variables here. APP_LOG: errorlog APP_KEY: YOUR_APP_KEY STORAGE_DIR: /tmp CACHE_DRIVER: database SESSION_DRIVER: database ## Set these environment variables according to your CloudSQL configuration. DB_HOST: localhost DB_DATABASE: laravel DB_USERNAME: root DB_PASSWORD: YOUR_DB_PASSWORD DB_SOCKET: "/cloudsql/YOUR_CLOUDSQL_CONNECTION_NAME"beta_settings: # for Cloud SQL, set this value to the Cloud SQL connection name, # e.g. "project:region:cloudsql-instance" cloud_sql_instances: "YOUR_CLOUDSQL_CONNECTION_NAME"
更换的每个实例
YOUR_DB_PASSWORD
,并YOUR_CLOUDSQL_CONNECTION_NAME
与您的Cloud SQL执行上面创建的值。