IBM旗下BlueMix云计算部署PHP7环境并安装Typecho

IBM这家的云计算也是奇葩,用起来非常的不友好,他的Buildpack有很多和heroku类似.在一定程度上heroku的Buildpack可以直接拿过来用,但是也有不兼容的,具体的兼容情况可以去查阅官方的支持文档.

CF命令行应该是非常强大的管理工具了,但是我用CF命令行尝试建立SSH连接的时候就是不能成功.大概是CloudFoundry暂时不支持SSH连接吧…不过第三方应用倒是实现了建立webshell并登陆.但是很遗憾的是BlueMix没有永久储存,每次应用重启意味着所有数据滚回到最初推送的时候,此外由于这货频繁更新导致的很多曾经可以用的工具都失效了(曾经有一个建立SSH隧道的工具现在无法部署了.)于是目前看来想要在BlueMix实现SSH是非常困难的,但是建立webshell倒是比较简单.一旦建立了webshell就意味着我们可以用来执行一些肮脏的操作(比如说python爬虫啥的,脑洞再大一些可以考虑某些开源的torrent程序滥用是可耻的!)

于是在第一部分我就简单讲述一下如何建立shell环境.首先是针对于官方的Nodejs环境,这个环境可以直接使用官方的shell,官方的shell可以在不影响代码的情况下执行,意味着Nodejs的开发者可以直接利用官方的shell下载脚本执行命令.

对于官方的Nodejs环境,需要进入环境变量选项卡加入用户定义变量.
名称是BLUEMIX_APP_MGMT_ENABLE变量值是:devconsole+shell+inspector+trace+proxy+hc
保存并重启环境,然后访问http://yourapp.mybluemix.net/bluemix-debug/shell/ 输入BlueMix的账号和密码就可以打开终端.

对于其他环境(PHP),可以用这个第三方项目(我fork的)https://github.com/ACGunion/cf-gotty
安装方法比较简单,只要把这个项目clone到本地,然后修改manifest.yml文件中的内容即可,配置样本如下:

---
applications:
- name: gotty #应用名,会根据这个生成默认域名
  memory: 128M #内存大小
  instances: 1 #建立数量
  host: gotty #主机名,会根据这个生成域名
  path: . #应用目录,不要修改.
  buildpack: binary_buildpack #Buildpack,可以是官方的默认,也可以是第三方的.第三方的应该填入Git地址.
  command: $HOME/gotty -p "$PORT" -w -c "user:pwsrocks" /bin/bash #修改HTTP基础验证密码
#务必删除所有注释

然后在本机执行 cf push就可以在BlueMix上跑webshell了,但是运行webshell时无法执行web访问…

恩.废话说完了.目前看来shell对于正常使用BlueMix一点帮助都没有.于是还是仔细研究研究怎么样部署一个PHP环境比较靠谱.目前官方的PHP_Buildpack已经非常完善,拥有nginx/Apache两种web服务器,支持PHP5.5/5.6/7.0以及大部分拓展.(目前PHP7已知大量拓展不兼容)于是今天我们就要用官方的PHP_Buildpack建立一个PHP环境并且部署Typecho

由于没有永久储存,所以我们需要把我们的源代码在本地准备好,到官网下载程序源码和需要的插件,主题,并放到对应目录.

在Github上Fork社区的PHP_Buildpack,地址是:https://github.com/cloudfoundry/php-buildpack

修改defaults/options.json文件,为如下我的配置:

{
    "STACK": "trusty",
    "LIBDIR": "lib",
    "WEBDIR": "htdocs",
    "WEB_SERVER": "httpd", #可选项Nginx
    "PHP_VM": "php",
    "ADMIN_EMAIL": "admin@localhost",
    "HTTPD_VERSION": "2.4.18",
    "HTTPD_PACKAGE": "httpd-{HTTPD_VERSION}.tar.gz",
    "HTTPD_DOWNLOAD_URL": "/httpd/{HTTPD_VERSION}/{HTTPD_PACKAGE}",
    "HTTPD_STRIP": true,
    "HTTPD_MODULES_PATTERN": "/httpd/{HTTPD_VERSION}/httpd-{MODULE_NAME}-{HTTPD_VERSION}.tar.gz",
    "HTTPD_MODULES_STRIP": true,
    "NGINX_VERSION": "{NGINX_19_LATEST}",
    "NGINX_18_LATEST": "1.8.1",
    "NGINX_19_LATEST": "1.9.10",
    "NGINX_PACKAGE": "nginx-{NGINX_VERSION}.tar.gz",
    "NGINX_DOWNLOAD_URL": "/nginx/{NGINX_VERSION}/{NGINX_PACKAGE}",
    "NGINX_STRIP": true,
    "PHP_55_LATEST": "5.5.32",
    "PHP_56_LATEST": "5.6.18",
    "PHP_70_LATEST": "7.0.3",
    "PHP_VERSION": "{PHP_70_LATEST}", #PHP版本,分别有5.5.32/5.6.18/7.0.3,这里使用7.0.3
    "PHP_PACKAGE": "php-{PHP_VERSION}.tar.gz",
    "PHP_DOWNLOAD_URL": "/php/{PHP_VERSION}/{PHP_PACKAGE}",
    "PHP_STRIP": true,
    "PHP_MODULES_PATTERN": "/php/{PHP_VERSION}/php-{MODULE_NAME}-{PHP_VERSION}.tar.gz",
    "PHP_MODULES_STRIP": true,
    "PHP_MODULES": [],
    "PHP_EXTENSIONS": ["bz2", "zlib", "curl", "mcrypt","pdo_mysql","mysql", "pdo_pgsql", "mysqli", "pdo", "pdo_sqlite", "opcache", "gd", "pgsql"], #需要开启的模块,要安装Typecho需要开启PDO_MySQL,MySQL相关,SQLite,GD库以及你需要的插件.
    "ZEND_EXTENSIONS": []
}

然后在本地Typecho文件目录内执行CF PUSH APP_NAME -b “PHP_Buildpack GIT地址” 即可开始部署.

部署成功后就可以访问并执行安装了,由于悉尼区没有提供数据库业务,所以这里使用SQLite安装,但是在其他区建议用MySQL,因为BlueMix没有永久储存,重启后SQLite的数据也会丢.

您可以访问:http://typecho16.au-syd.mybluemix.net/ 查看测试站点,由于免费配额需要绑定信用卡,该演示空间最多运行30天.

头图版权:ポケモンの世界へようこそ!@ひでこ PID=55529707

坤哥

博主Kunger,现在是一名PHP/RN开发者。

3 Comments

  • BlueMix建站是不是还是不行呀?

    • @免费资源部落 可以。一种方法是直接用容器。往上推镜像前要把代码和环境部署好。另一种是用CF应用。CF命令推上去的代码重启后还在,推上需要的代码,使用第三方MySQL数据库。(IBM也提供,免费的性能不好)安装。图片全部使用外链或IBM的储存服务。

留下你的评论

*评论支持代码高亮<pre class="prettyprint linenums">代码</pre>