openshift搭建WordPress

  openshift提供一键搭建wordpress,在先前的文章中已经有提到了,如果你需要自己修改wordpress的代码的话,最好是不要用这种方式,这种方式相对比较不容易做代码管控。当然,还是可以在其基础上进行修改的,本质其实都差不多,只是自己直接上传,会更加直接一些吧。因此这篇文章的目的,主要就是描述一下,不用一键创建wordpress的过程吧。

  虽然不用WEB一键创建,但是官方提供的wordpress示例代码还是可以学一学的,其代码在github上,地址:https://github.com/openshift/wordpress-example.git 你可以直接通过git clone将其clone到本地来学一学。所以现在开始就以分析示例的工程开始。最新的代码,已经将wordpress版本升级到3.9.1了,通过git log,可以看到redhat开发人员的提交记录信息。

  ls看看都有哪些内容,除了.git目录我们不去看的话,其余的也看看到底有哪些东西

wordpress-example % ls -a
wordpress-example % ./  ../  .git/  .gitignore  libs/  misc/  .openshift/  php/  README  README.md
wordpress-example %
wordpress-example % tree -a libs/  misc/  .openshift/  php/
libs/
└── .gitkeep
misc/
└── .gitkeep
.openshift/
├── action_hooks
│     ├── build
│     ├── deploy
│     ├── post_deploy
│     └── pre_build
├── config
│     └── wp-config.php
├── cron
│     ├── daily
│     │    └── .gitignore
│     ├── hourly
│     │     └── .gitignore
│     ├── minutely
│     │     └── .gitignore
│     ├── monthly
│     │     └── .gitignore
│     ├── README.cron
│     └── weekly
│     ├── chrono.dat
│     ├── chronograph
│     ├── jobs.allow
│     ├── jobs.deny
│     └── README
├── markers
│     └── README
├── openshift.inc
├── pear.txt
├── plugins
│     └── .gitkeep
└── themes
└── .gitkeep
php/
└── .gitkee

内容还是很多的,大概说一下吧,php目录就是到时候会呈现到WEB界面的,所以源码是放这里的。而libs字面意思就是放一些库文件了,misc就是放置杂项了。这几个目录都是空的(.gitxxx文件是git的一些标志文件),是不是应该觉得很奇怪?因为大部分的内容,都在.openshift这个隐藏目录下了。

目录 说明
action_hooks 一些钩子存放的目录,为shell脚本文件,
config 存放wp-config.php,也就是wordpress的配置文件了。
cron linux下很常用的定期执行工具,也就是如果需要有定期任务的话,可以将对应的配置放在这里,并且里面有不少的示例
markers 标志,这些标志,是用于你push代码的时候,服务器会根据这里的文件名来作为判断标志
plugins wordpress的插件目录
themes wordpress的主题目录

  通过上表,简要说明下各个子目录的用途了。你可能会很好奇,怎么配置都可以用一样的?是因为openshift将数据库名称、用户名、密码、IP地址以及端口号都整成了环境变量了。而wp-config.php里面就是调用环境变量来实现获取数据库的信息的。具体的环境变量,可以cat一下wp-config.php文件,就知道了。openshift提供了很多环境变量。这些环境变量,后面会整个文章来说明一下。这里就不多说了。还有就是为什么plugins,themes两个文件夹是在这边的?这就要继续往下看示例的代码了。这得从action_hooks目录开始分析。

  action_hooks目录下,有4个文件,分别为build,deploy,post_deploy,pre_build。如果你ls会发现是绿色的,也就是可执行文件,其实都是shell脚本。都可以从文件名的字面意思来理解,build,就是构建的意思,也就是构建wordpress的意思了。pre_build,这个就是构建前的准备工作了。deploy,也就是部署,每次你git push的时候,都会来调用该脚本文件。post_deploy,也就是部署后,会执行的脚本文件了。其中pre_build,post_deploy两个脚本都没有执行任何的操作。build执行脚本,在你创建APP的时候,被执行了,你可以看看里面的内容,定义了安装版本号,install_version=”3.9.1″。并且将wp-config.php文件拷贝到了安装目录install_dir=${OPENSHIFT_BUILD_DEPENDENCIES_DIR}${install_version}。这样,你在创建APP完之后,当WEB,可以访问的时候,也就可以开始wordpress之旅了。再看看deploy脚本,看到里面执行流程大体是这样的:判断文件夹是否存在,不存在就创建,还有就是将plugins以及themes拷贝到数据文件夹(OPENSHIFT_DATA_DIR)中,并软链接到WEB根目录(OPENSHIFT_REPO_DIR)。最后在执行下mysql。这样就大功告成了。所以,如果你并不需要进行修改wordpress的代码,那么你仅仅只需要将你下载的插件以及主题,都放置到.openshift对应的目录下,并git push.就可以在wordpress后台直接看到上传的内容了。当然,也可以直接在后台安装。只是有时候,可能不修改wordpress的代码,但是修改主题的代码,这时候,就可以这么做了。

  再说个makers的吧,其实对于php这种可以及时部署的,并不需要进行对服务器的重启操作,openshift,也提供了这样的功能。

$ cd applicationName/.openshift/markers
$ touch hot_deploy
$ git add hot_deploy
$ git commit -m "Adding hot deployment marker"
$ git push

这样执行以下,创建标志后,后面就会有及时部署的功能了。

  分析wordpress示例就先到这里了。其他几个的话,我也还没折腾过,就不先献丑了,后面如果有用到的话,在折腾吧。

  接下来,就说说,怎么样不通过一键操作的方式,来搭建wordpress吧。如果你创建的APP是PHP的,那么你git clone下了的,就是当前WEB的根目录对应的内容了,什么都是空的。我这边的话,是通过ZEND创建的,创建ZEND后,git clone下来的与wordpress-example的目录结构是一样的。根目录在php文件夹中。所以,你可以将PHP的应用目录结构也改成示例的就行,只是将build砍掉,自己提交代码到php文件夹中,并修改deploy脚本。这样,就可以根据自己的需要,来提交代码到openshift站点上去了。

  期间,刚开始不知道,我改完了deploy脚本后,发现每次提交代码后,WEB上的固定链接就失效了。后来对比了通过wordpress-example创建的应用快照以及我自己修改的应用快照后,发现该问题是因为我少了.htaccess文件。就将example快照中的.htaccess拷贝过来,提交到git服务器上,测试下,不会再有固定链接失效的问题了。

  .htaccess文件中的内容如下,这样也说明了openshift是支持配置.htaccess的,因此自己提交代码的话,还是会更加方便的来管理的。至于这个.htaccess文件中的参数怎么配置,我也不是很懂,后面有时间的话,再学习学习吧。

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

 

参考资料:

https://www.openshift.com/blogs/hot-deploying-php-on-openshift

转载请注明: 转载自elkPi.com

本文链接地址: openshift搭建WordPress

2 Comments

  1. chonghua
    2014年11月6日

    仅仅使用wordpress,觉得还是不用git为好,这玩意一不小心就重置了,我等普通用户对于git还是觉得很麻烦的

    回复
    1. 米鹿π
      2014年11月6日

      这倒也是,毕竟还是简单点好~

      回复

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

Scroll to top