Heroku应该是非常早期就提供PaaS服务的云计算提供商了,记得很久以前就有在免费资源网站上看到过这个空间,但是当时这个空间还不支持PHP,所以就没有关注,近期有朋友问我能不能再Heroku上跑博客,我才发现Heroku已经支持PHP了.

目前来看Heroku应该也算得上是非常开放的云计算了,除了官方支持的几种语言外,服务器可以利用第三方Buildpack部署其他语言或者程序,非常的方便,但是如果想要自定义Buildpack看起来还是有一些难度的,至少我没有成功.这个空间应该是非常复杂的空间了,因为全部操作需要通过Heroku命令来完成,不支持SSH连接,没有FTP上传.但是作为云计算,Heroku的开放性绝对是名列前茅的.

要进行操作需要在本地上安装Heroku Toolbelt,以及你所要使用的环境.注意,你所需要的环境必须在本地安装,也就是说,如果要部署PHP环境,本地需要安装PHP,要部署JAVA,本地需要安装JDK.
Heroku的命令行基于Ruby,如果本地安装了Ruby就可以免去这一步了.(很多云计算都需要Ruby来执行命令行)若本地环境访问Ruby的镜像库不稳定,可以使用淘宝提供的镜像.

由于Windows的坑爹特性,跑PHP各种问题,于是这里建议使用自己的VPS或者IDE来运行环境.

首先要clone一个官方的PHP Buildpack使用 git clone https://github.com/heroku/heroku-buildpack-php.git

下载到本地后先删除目录里的requirements.txt,如果不删除,Heroku会把它识别成Python的Buildpack.

然后编辑composer.json,这里边要填上你需要的PHP版本,你需要的PHP拓展等等.

{
    "name": "heroku/heroku-buildpack-php",
    "description": "Toolkit for starting a PHP application locally, with or without foreman, using the same config for PHP/HHVM and Apache2/Nginx as on Heroku",
    "keywords": ["heroku", "foreman", "php", "hhvm", "apache", "apache2", "nginx"],
    "homepage": "http://github.com/heroku/heroku-buildpack-php",
    "type": "library",
    "license": "MIT",
    "authors": [
        {
            "name": "David Zuelke",
            "email": "dz@heroku.com"
        }
    ],
    "bin": [
        "bin/heroku-hhvm-apache2",
        "bin/heroku-hhvm-nginx",
        "bin/heroku-php-apache2",
        "bin/heroku-php-nginx"
    ],

#需要安装的PHP拓展 支持的拓展可以查看官方文档 https://devcenter.heroku.com/articles/php-support#extensions
#若需要HHVM环境,删除所有拓展后添加"hhvm": "^3.5.1",
  "require": {
    "php": "^5.6.0",
        "ext-bcmath": "*",
        "ext-memcached": "*",
        "ext-mongo": "*",
        "ext-xsl": "*",
        "ext-bcmath": "*",
        "ext-calendar": "*",
        "ext-exif": "*",
        "ext-ftp": "*",
        "ext-gd": "*",
        "ext-mysql": "*",
        "ext-sqlite3": "*",
        "ext-pdo_sqlite": "*",
        "ext-xmlrpc": "*",
        "ext-xsl": "*"
  }
}

修改完本文档后确保本地有PHP环境,以及composer命令,接下来执行composer update
如果本地环境和需要部署的环境不符,应该加入”–ignore-platform-reqs”来跳过环境检查.

接下来创建文件Procfile,写入以下内容:
web: vendor/bin/heroku-php-apache2 web/
注意,bin/heroku-php-apache2可以换为
“bin/heroku-hhvm-apache2”,
“bin/heroku-hhvm-nginx”,
“bin/heroku-php-nginx”
web/是网站根目录.

最后创建web目录,吧网站需要的所有文件,包括主题文件,插件等放进去,在Buildpack目录下执行Heroku命令
heroku create
来创建一个heroku应用,之后执行
git push heroku master
上传代码和Buildpack.
heroku ps:scale web=1
启动应用