记一次搬迁到 OpenShift 并搭建 PHP5.5 环境等
http://blog.laobubu.net/archives/move-to-openshift/
记一次搬迁到 OpenShift 并搭建 PHP5.5 环境等
Nov 24, 2014
十一月,忙碌到飞起来的二十多天中,我使用的廉价VPS主机商 Incero 没钱,任性,跑路了,接着我的网站直接挂彩。本来打算使用 DigitalOcean 的学生优惠去购买VPS,谁知他们不接受中国的邮箱后缀。无奈之下我又滚回了经典的 OpenShift。
OpenShift 是由红帽公司提供的 PaaS,当然可大致视为虚拟主机使用,只是一个账号只能创建三个 app (可以当做站点),而且官方提供的 PHP 版本截至目前最高是 5.4。对于我这种可能需要多来几个子域名,而且想体验最新版本的人来说有点遗憾。
不过 OpenShift 还很厚道地提供 DIY Cartridge,也就是提供一个类似 VPS 的存在,可以用来编译和运行自己的网页服务器程序。网络上有PHP 5.5 + Nginx 的 DIY Cartridge 模板1,但是我还是想自己试着闹腾一个 PHP 5.5 + OpenShift httpd (Apache2.2) 的版本……
我的 DIY Cartridge 模板已经放到 GitHub 上了:laobubu/openshift-php5.5-cgi-apache,不定期更新。 使用方法和前面所提的那个类似,上传到服务器,在服务器上运行编译脚本,等它编译一小时,完成。 由于以前也没有接触过这种服务器方面的操作,使用的是简陋的 CGI 方式,但是能够摆脱官方的限制,可以自定义 httpd.conf 和 php.ini 也是很不错的。
New OpenShift DIY Cartridge
官方介绍就是 Do-It-Yourself ,允许自己闹腾服务器程序,只要你的 web 服务器程序监听的地址是 ${OPENSHIFT_DIY_IP}:${OPENSHIFT_DIY_PORT},爱怎么玩就怎么玩。
刚刚创建一个基于 DIY Cartridge 的 App 时,官方会在里面提供一行的 Ruby 简易服务器示例,但是可以删除。
操作钩子(action hooks)
有一点很重要的就是修改 .openshift/action_hooks 里面的脚本,从而让 OpenShift 知道怎么启动和停止服务器程序。官方也提供了一些说明。我就将里面的 start 和 stop 修改成了启动和停止 httpd 的脚本,感觉就像 init.d 一样萌萌哒。
文件和程序管理
一个 app 的程序是保存在 git 上的。通过 git push/pull 来控制代码,一大股 PaaS 范儿。
除此之外也可以通过 SSH 直接连接到服务器,也支持 SFTP 管理文件。当前版本的程序就保存在 ~/app-root/runtime/repo 里面,可以随便修改,而且立即见效(顺带吐槽一下 AppFog 那诡异的服务器,随便一修改,刷新就没了)。问题就是这个不是长久之计,因为只要一 git push ,所有的改动都会被 git 洗去。
当然也有不受 git 支配的文件夹,那就是 ~/app-root/runtime/data 甚至 ~/app-root/runtime。可以把那些需要持久的数据放在这些文件夹。
说了这么多,大概可以这么想:将 PHP5.5 编译出来并放在 ~/app-root/runtime 里面,然后 httpd 的配置文件就用 git 来控制,挺顺溜的。
编译 PHP 和准备 httpd
这个基本就是参考那个 PHP+Nginx1 的做法,糊了一大堆的编译参数,同时指定好 prefix 使之输出到那个 runtime 文件夹下面。
然后是 httpd 的准备。摆脱了官方的限制,可以自己编写操作钩子,指定配置文件地启动 httpd。而 httpd.conf 文件还得从头开始,不过天下 Apache 基本也是那个样子,找一个例子,按需修改即可。
哦对了别忘记 Listen ${OPENSHIFT_DIY_IP}:${OPENSHIFT_DIY_PORT}
搬家
这个过程比较简单了。在 OpenShift 后台给这个 app 绑定了域名之后,修改 httpd.conf 添加 VirtualHost 即可实现多站点。把文件上传上去,一切都进行的很顺溜。
为 Typecho 更换一个 Markdown 解析引擎
不知道咋的,Typecho 1.0 的 Markdown 解析引擎不支持脚注、表格等功能了,这使我感到纠结。之前看 QQ 群他们也吐槽过这个问题,但是都手工更换引擎了,不知道官方怎么想的……
大概方法就是:
下载 ParseDown 和 ParseDown-Extra 的解析引擎程序,放到 var 文件夹内。然后修改 var/Markdown.php 文件,将里面的 Markdown::convert($text) 函数代码修改掉:
public static function convert($text)
{
static $docParser;
if (empty($docParser)) {
$docParser = new ParsedownExtra();
}
return $docParser->text($text);
}
测试发现 ParseDown-Extra 对 HTML 标签围绕的 Markdown 是不解析的,所以需要修改程序。
找到 getAttribute('markdown') 这一行,将下面的 != '1' 修改为 == '0' 即可。
完成。如果你看到这篇文章有一个角标,那么恭喜我,成功了。
后面的事情
这个月还有一大串电子设计的事情,等后面闲下来再在博客扯淡吧。
OpenShift PHP5.5 Nginx: https://github.com/rexdf/openshift-nginx-php55/ ? ?2
记一次搬迁到 OpenShift 并搭建 PHP5.5 环境等的更多相关文章
- 微服务迁移记(五):WEB层搭建(5)-集成ueditor编辑器,伪分布式图片上传
一.redis搭建 二.WEB层主要依赖包 三.FeignClient通用接口 以上三项,参考<微服务迁移记(五):WEB层搭建(1)> 四.SpringSecurity集成 参考:< ...
- 微服务迁移记(五):WEB层搭建(2)-SpringSecurity集成
一.redis搭建 二.WEB层主要依赖包 三.FeignClient通用接口 以上三项,参考<微服务迁移记(五):WEB层搭建(1)> 接下来,集成SpringSecruity,实现用户 ...
- 微服务迁移记(五):WEB层搭建(3)-FreeMarker集成
一.redis搭建 二.WEB层主要依赖包 三.FeignClient通用接口 以上三项,参考<微服务迁移记(五):WEB层搭建(1)> 四.SpringSecurity集成 参考:< ...
- 微服务迁移记(五):WEB层搭建(4)-简单的权限管理
一.redis搭建 二.WEB层主要依赖包 三.FeignClient通用接口 以上三项,参考<微服务迁移记(五):WEB层搭建(1)> 四.SpringSecurity集成 参考:< ...
- [BI项目记]-搭建代码管理环境之客户端
前面已经介绍了如何搭建代码管理环境的服务器端安装和配置,这里介绍对于客户端的几个场景. 首先对于开发人员来说,可以直接使用Visual Studio来连接,这里主要演示Visual Studio 20 ...
- OSX10.12搭建IPv6本地环境测试APP
前记 最近刚换了工作,生活终于又安定下来了,又可以更博了 正文 最近公司在上线APP(整体全是用JS去写的,就用了我原生的一个控制器),然后APP就去上线,就被苹果巴巴给拒了.通过阅读苹果回复的邮件, ...
- 自定义搭建PHP开发环境
学习了一段时间php了,因为之前是刚接触php,所以用的是集成安装包(wamp).现在想进一步了解apache.mysql.php之间的关系以及提升自己所以进行自定义搭建PHP开发环境.废话不多说,请 ...
- 使用Maven+Nexus+Jenkins+Svn+Tomcat+Sonar搭建持续集成环境(二)
前言 上一篇随笔Maven+Nexus+Jenkins+Svn+Tomcat+Sonar搭建持续集成环境(一)介绍maven和nexus的环境搭建,以及如何使用maven和nexus统一管理库 ...
- 使用virtualenv搭建python3开发环境
问题描述 环境: CentOS6.5 想在此环境下使用python3进行开发,但CentOS6.5默认的python环境是2.6.6版本. 之前的做法是直接从源码安装python3,替换掉现有的开发环 ...
随机推荐
- Go 编码问题的解决方案
1.首先需要mahonia 这个包 go get github.com/axgle/mahonia 然后新建一个 func src 字符串 srcCode 字符串当前编码 tagCode 要转换的编码 ...
- js生成验证码并验证的登录页面
<!Doctype html> <html> <head> <meta charset="utf-8"/> <title> ...
- C#初学者使用file.creat()创建文件后,显示正由另一进程使用
string sourcePhotoPath = this.GetUserSelectedPhoto(); if(sourcePhotoPath == null) { return; } string ...
- 上下文切换查看 & sar
怀疑CPU存在瓶颈,可用sar -u 和sar -q来看,怀疑I/O存在瓶颈,可用sar -b.sar -u和 sar-d来看 sar –W 查看页面交换发生状况 [root@localhost ~] ...
- Codeforces 474D Flowers (线性dp 找规律)
D. Flowers time limit per test:1.5 seconds memory limit per test:256 megabytes We saw the little gam ...
- J2SE基础:2.对象的创建与使用
1:參数传递的值传递与引用传递 A:值传递:基本数据类型传递都是值传递 B:引用传递(地址传递):对象数据类型都是引用传递. 2:类变量与成员变量(实例变量,对象变量) 类变量:通过类名调用,类变量被 ...
- Intel TBB in OpenCASCADE
Intel TBB in OpenCASCADE eryar@163.com OpenCASCADE使用了一个开源的第三方库Intel TBB,这个并行计算库主要用于网格化.布尔操作等复杂算法,可以明 ...
- HTML5贪吃蛇源代码
显示效果例如以下:点击这里! 代码下载:点击这里! <script> function show(){ var date = new Date(); //日期对象 var ...
- MongoDB(六)java操作mongodb增删改查
java操作mysql数据库的代码我们已经了如指掌了.增删改查,java对mongodb数据库也是类似的操作,先是数据库连接.再是进行操作. 首先我们进入进入admin数据库.然后建立自己的数据库te ...
- u盘安装14.04ubuntu系统
最近在安装ubuntu 14.04系统,总结了下安装的方法,记录如下 1.下载ubuntu 14.04 iso文件,下载地址 http://www.ubuntu.com/download/deskto ...