该部署笔记以部署 PHP 应用为例.

官方文档

1. 设置

1.1 环境依赖

以部署 PHP 应用为例, 本地环境依赖:

  • php

  • composer

    Heroku 使用 Composer 管理PHP应用的依赖, composer.json 用于表明项目是 php语言.

  • git

分别执行以下命令查看当前版本

php -v
composer -v
git --version

1.2 Heroku 客户端安装

下载安装 Heroku Cli

顺便官网注册一个 heroku 账号

1.3 登录

heroku login	# 输入 heroku 账号密码
heroku keys:add # 添加ssh公钥到 Heroku 上

2. 应用

2.1 创建

heroku create	# 远程创建新的 heroku app, 并在本地 git 添加对应的远程 git 仓库

# git init

git push heroku master	# git 推送到远程仓库

heroku ps		# 查看当前应用有几个实例
heroku ps:scale web:1 # 应用实例伸缩, "web" 是在 Procfile 中定义的对应应用 heroku open # 在浏览器中打开实例

免费账号只能有一个实例

2.2 查看日志

heroku logs --tail

此处的日志是由应用输出到 stdoutstderr 中的内容.

2.3 附加组件

为防止滥用, 添加附加组件需要账号认证

...信用卡的意思

heroku addons				# 查看已安装的附加组件
heroku addons:create xxxx # 安装附加组件
heroku addons:open xxxx # 打开附加组件的web管理页面(如果有的话...)

2.4 交互式 Shell

可运行 PHP 的交互式 shell

heroku run "php -a"

heroku 的交互式 shell

heroku run bash

2.5 定义 配置变量

config vars(配置变量) 在应用运行时是以 环境变量 形式暴露给应用.

heroku config	# 查看当前配置变量
heroku config:set XXX=XXXX # 定义配置变量

$_SERVER 的输出, 若执行 heroku config:set TEST_VAR=20, 则会在下面输出出来(Line: 10)

array (
'COMPOSER_BIN_DIR' => 'vendor/bin',
'DOCUMENT_ROOT' => '/app/web',
'HEROKU_PHP_HTTPD_CONFIG_INCLUDE' => '/app/vendor/heroku/heroku-buildpack-php/conf/apache2/default_include.conf',
'DYNO' => 'web.1',
'PATH' => '/app/.heroku/php/bin:/app/.heroku/php/sbin:/app/.heroku/php/bin:/app/.heroku/php/sbin:/app/.heroku/php/bin:/app/.heroku/php/sbin:/app/.heroku/php/bin:/usr/local/bin:/usr/bin:/bin:/app/vendor/bin',
'WEB_CONCURRENCY' => '4',
'PWD' => '/app',
'COMPOSER_VENDOR_DIR' => 'vendor',
'TEST_VAR' => '20',
'HOME' => '/app',
'SHLVL' => '2',
'PORT' => '11636',
'HEROKU_APP_DIR' => '/app',
'_' => '/app/.heroku/php/sbin/php-fpm',
'USER' => 'u24320',
'SCRIPT_NAME' => '/index.php',
'REQUEST_URI' => '/_server',
'QUERY_STRING' => '',
'REQUEST_METHOD' => 'GET',
'SERVER_PROTOCOL' => 'HTTP/1.1',
'GATEWAY_INTERFACE' => 'CGI/1.1',
'REDIRECT_URL' => '/_server',
'REMOTE_PORT' => '12702',
'SCRIPT_FILENAME' => '/app/web/index.php',
'SERVER_ADMIN' => 'you@example.com',
'CONTEXT_DOCUMENT_ROOT' => '/app/web',
'CONTEXT_PREFIX' => '',
'REQUEST_SCHEME' => 'http',
'REMOTE_ADDR' => '10.43.233.16',
'SERVER_PORT' => '80',
'SERVER_ADDR' => '172.17.77.62',
'SERVER_NAME' => 'polar-oasis-94232.herokuapp.com',
'SERVER_SOFTWARE' => 'Apache',
'SERVER_SIGNATURE' => '',
'HTTP_TOTAL_ROUTE_TIME' => '0',
'HTTP_X_REQUEST_START' => '1529897835941',
'HTTP_CONNECT_TIME' => '1',
'HTTP_VIA' => '1.1 vegur',
'HTTP_X_FORWARDED_PORT' => '443',
'HTTP_X_FORWARDED_PROTO' => 'https',
'HTTP_X_FORWARDED_FOR' => '218.66.157.218',
'HTTP_X_REQUEST_ID' => '775b1b7c-c679-44d6-9cf0-2280f2930b15',
'HTTP_ACCEPT_LANGUAGE' => 'zh-CN,zh;q=0.9',
'HTTP_ACCEPT_ENCODING' => 'gzip, deflate, br',
'HTTP_ACCEPT' => 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
'HTTP_USER_AGENT' => 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36',
'HTTP_UPGRADE_INSECURE_REQUESTS' => '1',
'HTTP_CONNECTION' => 'close',
'HTTP_HOST' => 'polar-oasis-94232.herokuapp.com',
'REDIRECT_STATUS' => '200',
'FCGI_ROLE' => 'RESPONDER',
'PHP_SELF' => '/index.php',
'REQUEST_TIME_FLOAT' => 1529897835.9442799,
'REQUEST_TIME' => 1529897835,
)

2.6 配置数据库

附加组件市场 有大量免费的数据存储附加组件.

免费的基本都是限制存储量, eg. postgresql 免费的限制存储 10000 行

heroku addons:create heroku-postgresql:hobby-dev	# 添加 postgresql 的免费版

添加上述数据库组件后, 会往变量配置中添加如下数据库url地址:

使用: $dbopts = parse_url(getenv('DATABASE_URL'));

远程连接 postgressql

heroku pg:psql

2.7 Procfile

Procfile 文件用于定义进程类型并确定应用如何启动.

# apache
web: vendor/bin/heroku-php-apache2 web/ # web/ 是指定应用的根目录 # nginx
web: vendor/bin/heroku-php-nginx web/

[原创]Heroku简单部署指南的更多相关文章

  1. 于Heroku平台部署maven webapp(java web)工程

    眼下,需要Heroku上述部署java web工程,该项目必须使用maven管理 一:新maven webapp工程 编者pom.xml档,增加下面的配置为例, <project xmlns=& ...

  2. Istio 1.4 部署指南

    原文链接:Istio 1.4 部署指南 Istio 一直处于快速迭代更新的过程中,它的部署方法也在不断更新,之前我在 1.0 版本中介绍的安装方法,对于最新的 1.4 版本已经不适用了.以后主流的部署 ...

  3. 在heroku上部署gost代理服务端

    gost ( https://github.com/ginuerzh/gost ) gost 的 websocket tunnel 功能使用 WebSocket 协议,相较 HTTP 协议能做更多事, ...

  4. XenApp简单部署

    作者:MR.Yangwj 目录 XenApp简单部署... 1 一.         XenApp安装... 1 (一)      服务器配置任务... 9 1)     许可证服务器配置... 9 ...

  5. mongodb 简单部署方案及实例

    mongodb 简单部署方案及实例 转载:http://my.oschina.net/zhuzhu0129/blog/53290 第一节 准备工作 一 安装mongodb  我这里选用rehl 5.6 ...

  6. Glue4Net简单部署基于win服务的Socket程序

    smark 专注于高并发网络和大型网站架规划设计,提供.NET平台下高吞吐的网络通讯应用技术咨询和支持 Glue4Net简单部署基于win服务的Socket程序 在写一些服务应用的时候经常把要它部署到 ...

  7. SQL Server中的变更捕获技术--简单部署

    ------准备------ CREATE DATABASE db_test_cdc ,) ,name )); INSERT INTO t1(name)VALUES('test') ------开始- ...

  8. 首发福利!全球第一开源ERP Odoo系统架构部署指南 电子书分享

    引言 Odoo,以前叫OpenERP,是比利时Odoo S.A.公司开发的一个企业应用软件套件,开源套件包括一个企业应用快速开发平台,以及几千个Odoo及第三方开发的企业应用模块.Odoo适用于各种规 ...

  9. MarkdownPan2 简单使用指南

    markdown 简单使用指南 一级标题 二级标题 三级标题加代码 四级标题 这里是加粗 这里是正文and English 888 这里有正文嵌入代码这种样式 这里是代码块 这种使用的代码块 还有引用 ...

随机推荐

  1. Linux的kickstart安装详解

    Linux的kickstart安装详解 一.什么是kickstart? kickstart安装是redhat开创的按照你设计好的方式全自动安装系统的方式.安装方式可以分为光盘.硬盘.和网络.此文将以网 ...

  2. 关于在64位win7下运行Virtualbox安装系统时出错(提示VBoxDD.DLL错误)的解决方

    安装没有问题,安装了最新版VirtualBox-4.3.18-96516-Win,一点运行想安装系统时就出错. 这是提示的错误: 运行Virtualbox去安装系统时出错:Failed to open ...

  3. code1099 字串变换

    BFS 听上去蛮简单的,实际编程复杂度较高(至少一个快睡着的人是这么认为的...) 抄的题解(感谢题解的作者<'_'>): #include<queue> #include&l ...

  4. linux环境下搭建osm_web服务器一(Postgresql配置及osm2pgsql原始数据导入):

    Postgresql配置及osm2pgsql原始数据导入 2012年,Ubuntu 12.04LTS发布,又一个长效支持版,我们又该更新OpenStreetMap服务器了,这次,将详细在博客中记录配置 ...

  5. 实践作业4---DAY4阶段三。

    阶段三:给出结论 这一阶段,我们首先列表从核心功能.细节.用户体验.辅助功能差异化功能.软件的适应性和成长性展开.我们得结论前参考了权威网站数据.并自己也做了相应分析. 结论:经过这么多工作,这个软件 ...

  6. 4.4.6 数组也能无锁:AtomicIntegerArray

    数组也可以实现cas操作,有以下几个类以及用法如下: public class AtomicTntegerArrayTest { public static void main(String[] ar ...

  7. SQL语句统计错误率

    2018年的第一篇博客就以此作为开端吧 :D 最近在项目中碰到需要统计类似错误率之类的需求,原本这功能是之前做的,但是最近测的时候发现出了点问题,显示的结果不对.这就比较尴尬了... 于是就进行deb ...

  8. Gulp资料大全:入门、插件、脚手架、包清单

    awesome-gulp中文版 一份gulp的资源,插件和使用实例清单, 致力于打造更好的前端工程构建流程. 被老外的awesome 清单刺激到,觉得有必要翻译一份,为国产的程序员们做点事情,本清单将 ...

  9. 在Linux下启动Java服务的脚本

    #!/bin/sh #该脚本为Linux下启动java程序的通用脚本.即可以作为开机自启动service脚本被调用, #也可以作为启动java程序的独立脚本来使用. # #Author: tudaxi ...

  10. Spring Boot - Spring Async

    除了使用Thread.Runnable.TimerTask.FeatureTask.CompletableFuture等类,在Spring Boot中还可以使用注解创建异步任务,可以减少线程处理的代码 ...