将你的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
路径下,应该能够看到如下输出
这就表明我们已经成功安装了数据库了。
目前对部署到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
做任何修改都不要忘了提交到git和push到heroku。
参考:
Getting Started with Laravel on Heroku
Laravel on Heroku - Using a PostgreSQL database (by Matt Stauffer)
- 将你的Laravel应用部署到Heroku上
- 第7章 部署到heroku上-将应用发布
- Mac OS: 将PlayFramework应用部署到 Heroku上
- 三步将Node应用部署到Heroku上
- 将应用程序部署到heroku
- php 部署到heroku上
- 部署rails应用到heroku
- 将RubyOnRails App部署到Heroku
- 将ruby on rails 部署到heroku
- 在Heroku上部署Java应用三步曲
- 在Heroku上部署web.py应用
- 把node应用部署到heroku
- 将你的Web应用免费部署到云端
- 在Heroku上部署Java应用-部署Java
- Heroku云部署:将Python web应用部署在heroku中-详细步骤
- 部署到Heroku
- 【Ruby on Rails Tutorial笔记】将第一个Rails应用部署到 Heroku实践遇到的问题及解决过程记录
- Heroku部署PHP应用
- 图解Linux命令之--userdel命令
- ACM-ICPC国际大学生程序设计竞赛北京赛区(2016)网络赛 F. Periodic Signal(FFT 优化乘法)
- 逞年轻多学习(2016/10/01)
- Hashtable与HashMap的区别
- codeforces-C. Journey(广搜+记录路径)
- 将你的Laravel应用部署到Heroku上
- ListView点击item底部弹出popupWindow删除、修改、取消选择框
- 嵌入式系统学习(三)-S5P4418 芯片存储空间分布说明
- Storage Classes in C++ Programming
- 【C/C++语言】指针常量与常量指针的区别
- 【POJ1011】Sticks-DFS+调整法剪枝
- 【myfocus】一款好用的焦点图轮播插件
- 62.Search in Rotated Sorted Array-搜索旋转排序数组(中等题)
- Android之SQLite数据库