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
2014年11月6日
仅仅使用wordpress,觉得还是不用git为好,这玩意一不小心就重置了,我等普通用户对于git还是觉得很麻烦的
2014年11月6日
这倒也是,毕竟还是简单点好~