Heroku 部署项目上线测试
2019年3月12日什么是Heroku
Heroku 是一个支持多种编程语言的 PaaS (Platform-as-a-Service)。在 2010 年被 Salesforce 收购。Heroku 作为最开始的云平台之一,从 2007 年 6 月起开始开发,当时它仅支持 Ruby,后来增加了对 Java、Node.js、Scala、Clojure、Python 以及 PHP 和 Perl 的支持。由于其应用部署流程异常简单,因此倍受广大开发者欢迎。
Heroku的基本安装配置
首先我们需要先注册一个Heroku的账号,然后安装 heroku命令行工具集。最后我们就可以开始配置heroku,
1 2 3 4 5 6 |
$ heroku login #登陆您的账号 $ heroku keys:add #添加SSH KEY 到Heroku上 $ cd ~/Code/Laravel #进入项目当中 $ echo web: vendor/bin/heroku-php-apache2 public/ > Procfile #创建Procfile文件,并写入点东西 $ git add -A #添加到git里 $ git commit -m "Procfile for Heroku |
在Heroku上面创建一个应用
1 2 3 4 5 6 |
$ heroku create #创建一个应用 $ heroku buildpacks:set heroku/php #告诉 Heroku 说我们的应用是用 PHP 写的。 $ php artisan key:generate --show #生成一个APP KEY $ heroku config:set APP_KEY=<your_app_key> #将这个放到heroku 的配置文件中 $ git push heroku master #开始部署上线 $ heroku open #打开项目 |
在Heroku上面使用PostgreSql
1 |
$ heroku addons:add heroku-postgresql:hobby-dev #安装 PostgreSQL 扩展 |
安装完成之后,Heroku 将为我们生成一个唯一的数据库 URL – DATABASE_URL,我们可以通过下面命令查看 Heroku 的所有配置信息:
1 |
$ heroku config #查看配置 |
我们需要对当前环境进行判断。如果环境为本地环境,则使用 MySQL 数据库,若为 Heroku 环境,则使用 PostgreSQL 数据库。
1 |
$ heroku config:set IS_IN_HEROKU<span class="token operator">=</span>true #添加一个变量 |
添加帮助方法判断使用环境
app/helpers.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
<?php function get_db_config() { if (getenv('IS_IN_HEROKU')) { $url = parse_url(getenv("DATABASE_URL")); return $db_config = [ 'connection' => 'pgsql', 'host' => $url["host"], 'database' => substr($url["path"], 1), 'username' => $url["user"], 'password' => $url["pass"], ]; } else { return $db_config = [ 'connection' => env('DB_CONNECTION', 'mysql'), 'host' => env('DB_HOST', 'localhost'), 'database' => env('DB_DATABASE', 'forge'), 'username' => env('DB_USERNAME', 'forge'), 'password' => env('DB_PASSWORD', ''), ]; } } |
载入帮助方法
composer.json
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
{ ... "autoload": { "psr-4": { "App\\": "app/" }, "classmap": [ "database/seeds", "database/factories" ], //主要是下方代码 "files": [ "app/helpers.php" ] } ... } |
使用命令重写加载
1 |
$ composer dump-autoload |