该部署笔记以部署 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. ssdb的高可用,源码分析

    ssdb,一个高性能的支持丰富数据结构的 NoSQL 数据库, 用于替代 Redis.——这是其官网的自我介绍. ssdb在leveldb存储库的基础上进行改造和丰富,添加了类似redis操作的接口, ...

  2. chrome crx插件存档

    https://github.com/mdamien/chrome-extensions-archive

  3. Ubuntu16.0安装Eclipse Neon

    eclipse在Ubuntu下安装先安装jdk,配置环境变量,之后下载eclipse安装包,解压,放置在目标目录,将jre链接到该目录或者将jdk下的jre目录复制到eclipse安装包目录下,双击文 ...

  4. Python和JavaScript间代码转换4个工具

    Python 还是 JavaScript?虽然不少朋友还在争论二者目前谁更强势.谁又拥有着更为光明的发展前景,但毫无疑问,二者的竞争在 Web 前端领域已经拥有明确的答案.立足于浏览器平台,如果放弃 ...

  5. 添加字段modify

    ALTER TABLE tc_activity_turntable ADD `foot_pic` VARCHAR () NOT NULL DEFAULT '' COMMENT '底部图片';

  6. [Training Video - 3] [Groovy in Detail] Non-static and Static functions, initializing log inside class

    log.info "starting" // we use class to create objects of a class Planet p1 = new Planet() ...

  7. spring 获取 WebApplicationContext的几种方法

    spring 获取 WebApplicationContext的几种方法 使用ContextLoader WebApplicationContext webApplicationContext = C ...

  8. CentOS7 安装Maven3

    下载安装文件 cd /root wget http://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.3.9/binaries/apache- ...

  9. CodeForces 690C1 Brain Network (easy) (水题,判断树)

    题意:给定 n 条边,判断是不是树. 析:水题,判断是不是树,首先是有没有环,这个可以用并查集来判断,然后就是边数等于顶点数减1. 代码如下: #include <bits/stdc++.h&g ...

  10. Android--iOS抓取崩溃日志

    android闪退获取日志方法: 1.下载adb工具包 2.注意事项 请确保电脑上只连接了一台手机设备(最好只连接一条USB线),同时确保手机已开启USB调试模式(可通过手机助手查看连接状态) 3.A ...