2012/09/26

Plone on OpenShift

Here are some notes on setting up Plone instances on OpenShift based on https://github.com/kagesenshi/plone-openshift-quickstart documentation.

First, get your OpenShift client installed.

$sudo apt-get install git-core openssh-client ruby ruby-dev rubygems libopenssl-ruby
$ sudo su -
# gem install --source http://gems.rubyforge.org --source https://openshift.redhat.com/app/repo/ rhc

===========================================================================

If this is your first time installing the RHC tools, please run 'rhc setup'

===========================================================================


$ rhc app create -a openplone -t diy-0.1

Starting Interactive Setup for OpenShift's command line interface

It looks like you have not configured or used OpenShift client tools
on this computer. We'll help you configure the client tools with
a few quick questions. You can skip this in the future by copying
your configuration files to other machines you use to manage
your OpenShift account:

/home/marr/.openshift/express.conf
/home/marr/.ssh/

To connect to openshift.redhat.com enter your OpenShift login
(email or Red Hat login id): marr
Password: ********

Created local config file: /home/marr/.openshift/express.conf
The express.conf file contains user configuration,
and can be transferred to different computers.

We will now check to see if you have the necessary client tools installed.

Checking for git ... found

Checking for your namespace ... found namespace:
    marr

Checking for applications ... found
    * py - http://py-marr.rhcloud.com/

The OpenShift client tools have been configured on your computer.
You can run this setup wizard at any time by using the command
'rhc setup' We will now execute your original command
(rhc app create -a openplone -t diy-0.1)

Password: ********

Creating application: openplone in marr
Now your new domain name is being propagated worldwide
(this might take a minute)...
The authenticity of host 'openplone-marr.rhcloud.com (50.16.52.158)'
can't be established.
RSA key fingerprint is cf:ee:77:cb:0e:fc:02:d7:27:7e:ae:90:c0:90:88:a7.
Are you sure you want to continue connecting (yes/no)? yes
Enter passphrase for key '/home/marr/.ssh/id_rsa':
Checking if the application is available #1
Application openplone is available at: http://openplone-marr.rhcloud.com/
  Git URL: ssh://2abab67cb28b4684ab722d0064554394@
openplone-marr.rhcloud.com/~/git/openplone.git/
Disclaimer: This is an experimental cartridge that provides a way
to try unsupported languages, frameworks, and middleware on Openshift.

接著就進去新建的 openplone 目錄:

$ cd openplone
$ git remote add upstream -m master \
  git@github.com:kagesenshi/plone-openshift-quickstart
$ git pull -s recursive -X theirs upstream master
Enter passphrase for key '/home/marr/.ssh/id_rsa':
warning: no common commits
remote: Counting objects: 67, done.
remote: Compressing objects: 100% (47/47), done.
remote: Total 67 (delta 26), reused 59 (delta 18)
Unpacking objects: 100% (67/67), done.
From github.com:kagesenshi/plone-openshift-quickstart
 * branch            master     -> FETCH_HEAD
Auto-merging .openshift/action_hooks/stop
Auto-merging .openshift/action_hooks/start
Auto-merging .openshift/action_hooks/deploy
Auto-merging .openshift/action_hooks/build
Merge made by the 'recursive' strategy.
 .openshift/action_hooks/build  |    3 +-
 .openshift/action_hooks/deploy |   51 ++++++++++-
 .openshift/action_hooks/start  |   15 +++-
 .openshift/action_hooks/stop   |   14 +++-
 README.rst                     |   76 +++++++++++++++++
 bootstrap.py                   |  181 ++++++++++++++++++++++++++++++++++++++++
 buildout.cfg                   |   40 +++++++++
 7 files changed, 371 insertions(+), 9 deletions(-)
 create mode 100644 README.rst
 create mode 100644 bootstrap.py
 create mode 100644 buildout.cfg

檢查 domain 的話,會看到所有的 app 資訊:

$ rhc domain
Password: ********


Applications in marr:

py @ http://py-marr.rhcloud.com/
================================
Created: 2:08 AM
Git URL:
ssh://26cc6f56ea4744c19c2ad6a43cc7a8a2@py-marr.rhcloud.com/~/git/py.git/

Cartridges:
  python-2.6


openplone @ http://openplone-marr.rhcloud.com/
==============================================
Created: 2:38 AM
Git URL:
ssh://2abab67cb28b4684ab722d0064554494@openplone-marr.rhcloud.com/~/git/ope
nplone.git/

Cartridges:
  diy-0.1

.git/config 內容長得像這樣,為了版面,我用了 \ 符號:

[core]
        repositoryformatversion = 0
        filemode = true
        bare = false
        logallrefupdates = true
[remote "origin"]
        url = ssh://2abab67cb28b4684ab722d0064554394@ \
              openplone-marr.rhcloud.com/~/git/openplone.git/
        fetch = +refs/heads/*:refs/remotes/upstream/*
[branch "master"]
        remote = origin
        merge = refs/heads/master

執行 git push 後,buildout 就會執行,這會花一段時間,我跑了至少 40分鐘。

$ git push
...
remote: ~/git/openplone.git
remote: Starting application...
remote: . . . . . . . . . . .
remote: daemon manager not running
remote: Done
remote: Running .openshift/action_hooks/post_deploy

打開瀏覽器,在 http://openplone-marr.rhcloud.com/ 看得到起始畫面。利用 ssh 也看得到檔案系統。

$ ssh 2abab67cb28b4684ab722d0064554394@openplone-marr.rhcloud.com "ls -l app-root/data/filestorage"

設定 Virtual Hosting 的資訊:

$ rhc app add-alias -a openplone --alias plone.mydomain.org
Password: ********


RESULT:
Success

$ rhc-port-forward -a openplone
Warning: This command is deprecated and will be removed in the future. Please use 'rhc port-forward' instead.

Password: ********

Checking available ports...
Enter passphrase for /home/marr/.ssh/id_rsa:

Binding python -> 127.7.35.1:8080...
Enter passphrase for /home/marr/.ssh/id_rsa:
Use ctl + c to stop

Error trying to forward ports. You can try to forward manually by running:

ssh -N -L 127.7.35.1:8080:127.7.35.1:8080 2abab67cb28b4684ab722d0064554394@openplone-marr.rhcloud.com

再設定 DNS entry 和 ZMI 裡的 VHM 就行了:

No comments: