[原创]Heroku简单部署指南
该部署笔记以部署 PHP 应用为例.
1. 设置
1.1 环境依赖
以部署 PHP 应用为例, 本地环境依赖:
php
composer
Heroku 使用 Composer 管理PHP应用的依赖,
composer.json用于表明项目是 php语言.git
分别执行以下命令查看当前版本
php -v
composer -v
git --version
1.2 Heroku 客户端安装
顺便官网注册一个 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
此处的日志是由应用输出到 stdout 和 stderr 中的内容.
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简单部署指南的更多相关文章
- 于Heroku平台部署maven webapp(java web)工程
眼下,需要Heroku上述部署java web工程,该项目必须使用maven管理 一:新maven webapp工程 编者pom.xml档,增加下面的配置为例, <project xmlns=& ...
- Istio 1.4 部署指南
原文链接:Istio 1.4 部署指南 Istio 一直处于快速迭代更新的过程中,它的部署方法也在不断更新,之前我在 1.0 版本中介绍的安装方法,对于最新的 1.4 版本已经不适用了.以后主流的部署 ...
- 在heroku上部署gost代理服务端
gost ( https://github.com/ginuerzh/gost ) gost 的 websocket tunnel 功能使用 WebSocket 协议,相较 HTTP 协议能做更多事, ...
- XenApp简单部署
作者:MR.Yangwj 目录 XenApp简单部署... 1 一. XenApp安装... 1 (一) 服务器配置任务... 9 1) 许可证服务器配置... 9 ...
- mongodb 简单部署方案及实例
mongodb 简单部署方案及实例 转载:http://my.oschina.net/zhuzhu0129/blog/53290 第一节 准备工作 一 安装mongodb 我这里选用rehl 5.6 ...
- Glue4Net简单部署基于win服务的Socket程序
smark 专注于高并发网络和大型网站架规划设计,提供.NET平台下高吞吐的网络通讯应用技术咨询和支持 Glue4Net简单部署基于win服务的Socket程序 在写一些服务应用的时候经常把要它部署到 ...
- SQL Server中的变更捕获技术--简单部署
------准备------ CREATE DATABASE db_test_cdc ,) ,name )); INSERT INTO t1(name)VALUES('test') ------开始- ...
- 首发福利!全球第一开源ERP Odoo系统架构部署指南 电子书分享
引言 Odoo,以前叫OpenERP,是比利时Odoo S.A.公司开发的一个企业应用软件套件,开源套件包括一个企业应用快速开发平台,以及几千个Odoo及第三方开发的企业应用模块.Odoo适用于各种规 ...
- MarkdownPan2 简单使用指南
markdown 简单使用指南 一级标题 二级标题 三级标题加代码 四级标题 这里是加粗 这里是正文and English 888 这里有正文嵌入代码这种样式 这里是代码块 这种使用的代码块 还有引用 ...
随机推荐
- 关于在64位win7下运行Virtualbox安装系统时出错(提示VBoxDD.DLL错误)的解决方
安装没有问题,安装了最新版VirtualBox-4.3.18-96516-Win,一点运行想安装系统时就出错. 这是提示的错误: 运行Virtualbox去安装系统时出错:Failed to open ...
- 【小前端】float属性
要求 需要float的元素,必须指定一个width宽度 没了 然后就可以指定 float:right 什么的了
- C#中不同格式数据校验的正则表达式
网上经常看到用正则表达式校验数据的文章,有的虽然总结得很全,但是大多数都没有经过严格验证,错误较多. 本文包含三十余条不同格式数据校验的C#正则表达式,一般均附有说明,且在Visual Studio里 ...
- 使用python管理Cisco设备-乾颐堂
今天发现一个老外使用python写的管理cisco设备的小框架tratto,可以用来批量执行命令. 下载后主要有3个文件: Systems.py 定义了一些不同设备的操作系统及其常见命令. Conne ...
- Django框架 之 信号
Django中提供了“信号调度”,用于在框架执行操作时解耦.通俗来讲,就是一些动作发生的时候,信号允许特定的发送者去提醒一些接受者. Django内置信号 Model signals pre_init ...
- Qt之QML开发常用知识
小技巧: 1. QML的内部逻辑可以直接调试 2. ctrl+ alt + space,在写QML时,可以直接调出工具条 3. 属性以小写字母开发 4. 属性改变事件,基本都是on+Property+ ...
- java IO其他流
1.内存操作流,ByteArrayInputStream和 ByteArrayOutputStream 案例:将小写转化为大写 /* * 内存操作流,将大写字母转化为小写字母(ByteArrayInp ...
- 更改oracle数据库字符集
A.oracle server 端 字符集查询 select userenv('language') from dual 其中NLS_CHARACTERSET 为server端字符集 NLS_LAN ...
- linux 学习管道 和重定向
开源文化的理念之一 就是不要重新发明轮子 在linux 系统中大多是都是非常简单的命令,每个命令都是实现一个或者几个简单的功能,我们可以将不同的命令组合在一起 来达到复杂的功能的目的,在linux中因 ...
- recv函数的用法详解
recv函数 int recv( SOCKET s, char FAR *buf, int len, int flags ); 不论是客户还是服务器应用程序都用rec ...