话说这篇貌似应该做第一篇的,但是被拖了好久。
新建 OpenShift 帐号时没有什么问题。之后是看指南创建域名(如我的就是 awesome)、应用(我这个叫 wp)。指南时给的是命令行的步骤,然而我发现 web 界面里有对应功能就直接在 web 界面做了,连 SSH 公钥上传也是在 web 界面弄的。这反而引出一个问题,默认命令行下建应用是会自动新建一对 SSH 密钥供 git push
使用的,但我直接复用了已有的密钥。所以,后来我需要查文档 express.conf(5)
,手写配置文件 ~/.openshift/express.conf
指定密钥文件。还好这不是个大问题。
之后我基本上就是参照 Blog moved to wordpress on openshift 这篇文章来下载 WordPress,捣鼓到 openshift 本地仓库,然后用 git 推送到云上。期间我还参考了一个 GitHub 上的示例,其中的 wp-config.php 文件对我很有帮助,直接使用 OPENSHIFT 定义了的环境变量看起来很不错。
这之后其实和 OpenShift 相关的事情就不多了,主要就是配置 WordPress 了。然而期间我发现了值得一提的是,本地的 git push
会把本地仓库推送到远端的 bare 仓库里(这一点很自然),同时还会重写远端应用目录下的 repo 目录(就是 www 服务的根目录)。似乎是覆盖式的重写,如果里面有不在仓库里的文件或目录,之后也会丢失。我是在 WordPress 管理里面更新插件安装中文包,然后经过 push 后发现这些都没了后,才怀疑并最终证实的。这也意味着,这个博客的更新,主题安装等都需要先在本地搞好、提交到本地的 git 仓库之后,通过 push 上去,才算可以使用,直接在 WordPress 管理界面更新、安装主题等都不可行(会被以后的 push 灭掉的)。更新:感谢 JunkFood 向我指出人们还提出了其他一些解决方案,如把插件主题目录做成到 $OPENSHIFT_DATA_DIR
中的软链接,或者在本地仓库里开 HTTP 服务更新后提交更改等,参见下方评论 和 Github。
先 pull 再 push?
LikeLike
你是指在远程的 www repo 下建一个git repo,管理界面更新后git commit后 push到 bare repo,然后本地git pull 再 push么?这样也不行,因为远程的 www repo 目录在每次 push 到 bare repo 后都会重建,
如此里面无法放一个持久的git repo 😦
LikeLike
然而期间我发现了值得一提的是,本地的 git push 会把本地仓库推送到远端的 bare 仓库里(这一点很自然),同时还会重写远端应用目录下的 repo 目录(就是 www 服务的根目录)。似乎是覆盖式的重写,如果里面有不在仓库里的文件或目录,之后也会丢失。
——————————————————————————————————
有一个方法是利用ln指令在$OPENSHIFT_DATA_DIR里面建立一个目录$OPENSHIFT_DATA_DIR/wp-content,然后用ln把$OPENSHIFT_REPO_DIR/php/wp-content/ 链接到 OPENSHIFT_DATA_DIR/wp-content
这样就可以保证在控制面板里面添加的插件和主题不被push重写了。
参考链接:https://github.com/openshift/wordpress-example/pull/2
https://github.com/svandragt/wordpress-example/commit/d3a1b9bcc222c6dd715a67127a1ebce469e2b8b8
http://log.amitshah.net/2011/12/blog-moved-to-wordpress-on-openshift/
LikeLike
你提供的方法很不错,谢谢!参考链接中也给出了若干解决方案,很赞。我会给本文更新一下,虽然我不打算对这个站点做此修改。原因是我觉得对插件主题等版本控制挺好,另外我也比较懒。
LikeLike
说实话使用git是在太麻烦了,配置要好久,还是用其他的方法了,只要我以后不用git,应该是没有什么问题的吧
LikeLike