将你的Laravel应用部署到Heroku上

来源:互联网 发布:cs1.5优化教程视频 编辑:程序博客网 时间:2024/04/30 15:11

Heroku 是一个支持多种编程语言的 PaaS(Platform-as-a-Service)。它的部署上线流程异常简单,你只需要将源代码纳入到 Git 版本控制系统中即可,其它额外操作 Heroku 都会帮你自动处理好。此外,heroku还为开发者提供了最多5个的免费应用空间,对于没有服务器又想将自己的应用拿到线上跑跑的学生党来说是一个非常好的选择。

本文讲述将Laravel应用部署到heroku的流程,本地环境为ubuntu,Laravel版本为5.3。

安装heroku

第一步是在本地安装 heroku 命令行工具,heroku需要你的环境下面安装有ruby

$ wget -O- https://toolbelt.heroku.com/install-ubuntu.sh | sh # ubuntu环境下

更多的安装详情参见https://devcenter.heroku.com/articles/heroku-command-line

安装成功后,在shell中执行heroku --version,无误的话应当能看到类似下面的输出

$ heroku --version heroku-toolbelt/3.43.12 (x86_64-linux) ruby/2.3.1heroku-cli/5.4.1-ae9db27 (linux-amd64) go1.7.1

然后你需要执行 heroku login 来在本地登陆(当然前提是你要先注册一个heroku账号)

$ heroku login    Enter your Heroku credentials.Email: zhjiang.rtc@gmail.comPassword (typing will be hidden): Logged in as zhjiang.rtc@gmail.com

heroku的安装就到这里,接下来我们正式开始将Laravel应用部署到heroku上

基础部署

新建一个Laravel应用:

$ composer create-project laravel/laravel --prefer-dist laravel-on-heroku

初始化 git 仓库

$ git init $ git add -A$ git commit -m '新建Laravel应用'

在将应用部署至heroku之前,我们需要有一个 Procfile 来告诉heroku用什么命令来启用服务器

$ echo web: vendor/bin/heroku-php-apache2 public/ > Procfile

提交变更

$ git add -A$ git commit -m '创建Procfile'

创建heroku应用

$ heroku apps:create zhjiang-demoCreating ⬢ zhjiang-demo... donehttps://zhjiang-demo.herokuapp.com/ | https://git.heroku.com/zhjiang-demo.git

我们这里创建了一个名为 zhjiang-demo 的应用,可以用 heroku rename [APP-NAME] 来重命名应用

关于创建应用的更多参数可执行 heroku apps:create -h 查看

因为heroku支持多种语言,而Laravel的目录下有package.json 这个文件,默认情况下heroku会将我们的应用当做一个Node.js程序,所以我们需要声明这是一个PHP应用

$  heroku buildpacks:set heroku/php

此外,我们知道Laravel应用中的用户session等重要信息都要借助于 APP_KEY 这个环境变量来实现加密,因而我们需要将它交给heroku应用

$ heroku config:set APP_KEY=$(php artisan --no-ansi key:generate --show)

最后,推送到 heroku

$ git push heroku master

现在,用heroku open打开我们的应用,应该能够看到这样的欢迎界面
欢迎页面

到这里我们就把本地的应用部署到线上了,但还没有涉及到数据库,接下来说说如何使用数据库。

到 这里 查看所有的插件

使用PostgreSQL

heroku中PostgreSQL的使用可以是免费的,它使用的是 Heroku Postgres 这个插件,首先安装它

$ heroku addons:create heroku-postgresql:hobby-devCreating heroku-postgresql:hobby-dev on ⬢ zhjiang-demo... freeCreated postgresql-graceful-24470 as DATABASE_URLDatabase has been created and is available ! This database is empty. If upgrading, you can transfer ! data from another database with pg:copyUse heroku addons:docs heroku-postgresql to view documentation

安装完成后,执行 heroku config 可以看了多了如下值

DATABASE_URL: postgres://kzlbnndajxvxhf:mC3z1islpiBR-6F1npK0m1u3Rm@ec2-54-221-246-85.compute-1.amazonaws.com:5432/d8e61kv1eb3v4a

这里面有我们所创建的数据库的全部信息。

接下来,我们需要在Laravel应用中配置下数据库信息:
config/database.php

<?php $url = parse_url(getenv("DATABASE_URL"));return [    ...    'default' => env('DB_CONNECTION', 'pgsql'),    ...    'connections' => [            ...        'pgsql' => [                'driver' => 'pgsql',                'host' => env('DB_HOST', $url["host"]),                'port' => env('DB_PORT', '5432'),                'database' => env('DB_DATABASE', substr($url["path"], 1)),                'username' => env('DB_USERNAME', $url["user"]),                'password' => env('DB_PASSWORD', $url["pass"]),                'charset' => 'utf8',                'prefix' => '',                'schema' => 'public',                'sslmode' => 'prefer',            ],            ...    ],    ...];

OK, 配置到这里就结束了,我们先提交下变更

$ git add -A$ git commit -m '使用PostgreSQL'

push到heroku

$ git push heroku master

测试

现在数据库已经安装配置好了,但我们怎么知道是真的成功了呢?

我们先在远程数据库上执行下迁移生成自带的 users 表

$ heroku run php /app/artisan migrate

来到tinker下面往 users 里面填充条数据

$ heroku run php /app/artisan tinker Running php /app/artisan tinker on ⬢ zhjiang-demo... up, run.2281Psy Shell v0.7.2 (PHP 7.0.11 — cli) by Justin Hileman>>> App\User::create(['name'=>'zhjiang', 'email'=>'zhjiang.rtc@gmail.com', 'password'=>bcrypt('secret')]);

routes/web.php 中添加条路由

Route::get('/users', function() {    return App\User::all();});

提交变更,push到heroku

$ git add -A$ git commit -m '生成users表,填充测试数据'$ git push heroku master

来到应用的/users路径下,应该能够看到如下输出
users表的内容

这就表明我们已经成功安装了数据库了。

目前对部署到heroku的了解也就这些,暂时就写到这里了。

总结

最后将所有的流程做下摘要。

基础流程:

(1)   heroku apps:create
(2)   echo web: vendor/bin/heroku-php-apache2 public/ > Procfile
(3)   heroku buildpacks:set heroku/php
(4)   heroku config:set APP_KEY=$(php artisan –no-ansi key:generate –show)
(5)   git add -A; git commit 'some commit'; git push heroku master

使用数据库:

(1)   heroku addons:create heroku-postgresql:hobby-dev
(2)   修改 config/database.php

做任何修改都不要忘了提交到gitpush到heroku


参考:
Getting Started with Laravel on Heroku
Laravel on Heroku - Using a PostgreSQL database (by Matt Stauffer)

0 0
原创粉丝点击