在OSX Client上部署PaaS的Skinny Framework应用程序(OpenShift版本)
注意事項
可能因为修改了作业,所以可能会有错误。之后会进行确认并修正。
一开始
由于尝试在多个PaaS上部署Skinny Framework,首先我会列出OpenShift的方法。(因为CloudBees只有MySQL作为数据库服务,所以正在重新考虑)
我认为可以进行独立运行等操作,但这次我们选择了将war文件部署到Tomcat上的方法。
另外,我们正在利用同一实例上的PostgreSQL。
关于OpenShift
使用RedHat提供的PaaS服务,您可以免费使用最多3个实例。
作为特点,如果使用符合OpenStack标准的插件,它会自动执行安全补丁的维护。
截至目前(2014年5月10日),根据在日本居住的设定,似乎无法进行付费注册。
OpenShift注册流程
打开OpenShift的网站后,
-
- サインアップ
-
- メールアドレスの確認
- 規約同意
按照这个顺序进行。





小贴士
-
- アカウントもパスワードもRedHat全体のアカウントと共通になります。
- サインイン後にエラー画面に入る場合は、ブラウザーのクッキーを削除します。削除対象は、「redhat.com」を含むものになります。
RHC命令行工具的安装步骤
我将根据以下内容进行解释。
- コマンドラインツールのインストール方法
由于OpenShift的命令行工具是以Ruby的GEM形式提供的,因此需要安装Ruby。
在OSX的情况下,
$ sudo gem install rhc --no-rdoc --no-ri
可以通过安装来实现。
接下来,需要将账户进行关联。在设置过程中,还会自动进行ssh公钥的上传等操作。
# アカウント設定します。
$ rhc setup
OpenShift Client Tools (RHC) Setup Wizard
This wizard will help you upload your SSH keys, set your application namespace,
and check that other programs like Git are properly installed.
Login to openshift.redhat.com: <登録メールアドレス>
Password: ************
OpenShift can create and store a token on disk which allows to you to access the
server without using your password. The key is stored in your home directory and
should be kept secret. You can delete the key at any time by running 'rhc
logout'.
Generate a token now? (yes|no) yes
Generating an authorization token for this client ... lasts about 1 month
Saving configuration to /Users/foobar/.openshift/express.conf ... done
Checking for git ... found git version 1.8.5.2 (Apple Git-48)
Checking common problems .. done
Your client tools are now configured.
不够的时候
-
- ドメインの設定
- sshの公開鍵
如果无法进行SSH设置,请从Web控制台的设置页面中添加公钥。
$ pbcopy < ~/.ssh/id_rsa.pub
现在,让我们将其复制并添加到剪贴板中。
通过命令行创建OpenShift应用
请查看官方文档中的“入门指南”,以了解如何通过图形用户界面进行设置。
OpenShift应用的大致创建步骤如下:
1. 选择框架
2. 添加数据库等基础组件
3. 通过Git上传代码。
通过命令行可以一次执行1、2、3这三个设置。
# tomcat7 + postgres9.2 のカートリッジを利用
# rhc app-create <アプリ名> <カートリッジ> [<追加カートリッジ>]
$ rhc app-create skinnyapp jbossews-2.0 postgresql-9.2
Application Options
-------------------
Domain: foobar
Cartridges: jbossews-2.0, postgresql-9.2
Gear Size: default
Scaling: no
Creating application 'skinnyapp' ... done
PostgreSQL 9.2 database added. Please make note of these credentials:
Root User: adminxxxxxx
Root Password: xxxxxxxxxxxx
Database Name: skinnyapp
Connection URL: postgresql://$OPENSHIFT_POSTGRESQL_DB_HOST:$OPENSHIFT_POSTGRESQL_DB_PORT
Waiting for your DNS name to be available ... done
Cloning into 'skinnyapp'...
The authenticity of host 'skinnyapp-foobar.rhcloud.com (255.255.255.255)' can't be established.
RSA key fingerprint is xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'skinnyapp-foobar.rhcloud.com,255.255.255.255' (RSA) to the list of known hosts.
Your application 'skinnyapp' is now available.
URL: http://skinnyapp-foobar.rhcloud.com/
SSH to: xxxxxxxxxxxx@skinnyapp-foobar.rhcloud.com
Git remote: ssh://xxxxxxxxxxxx@skinnyapp-foobar.rhcloud.com/~/git/skinnyapp.git/
Cloned to: /Users/foobar/skinnyapp
Run 'rhc show-app skinnyapp' for more details about your app.
数据库的信息 (DB de xinxi)
根用户:adminxxxxxx
根密码:xxxxxxxxxxxx
数据库名称:skinnyapp
服务器信息
URL: http://skinnyapp-foobar.rhcloud.com/
SSH to: xxxxxxxxxxxx@skinnyapp-foobar.rhcloud.com
Git remote: ssh://xxxxxxxxxxxx@skinnyapp-foobar.rhcloud.com/~/git/skinnyapp.git/网址: http://skinnyapp-foobar.rhcloud.com/
SSH 连接到: xxxxxxxxxxxx@skinnyapp-foobar.rhcloud.com
Git 远程仓库: ssh://xxxxxxxxxxxx@skinnyapp-foobar.rhcloud.com/~/git/skinnyapp.git/
Git克隆源的信息
克隆到:/Users/foobar/skinnyapp
有一个在服务器上的git仓库,
而且也可以使用SSH进行登录。
让我们打开一下我们创建的应用程序吧。
#
$ open http://skinnyapp-foobar.rhcloud.com/

当您想要克隆自己的git存储库时,
# クローン
$ git clone ssh://xxxxxxxxxxxx@skinnyapp-foobar.rhcloud.com/~/git/skinnyapp.git skinnyapp
$ cd skinnyapp
我会考虑这个。
准备瘦瘦的
本次根据官方教程,简略地按照以下步骤进行准备。
-
- ダウンロード
-
- モデル作成
-
- DBマイグレート
-
- サーバ起動
- ページ確認
首先,从Skinny Framework的官网上下载骨架文件。
「瘦身-带依赖压缩包.zip(80MB)」
解压ZIP文件,打开终端,进入文件夹内,
首先,在开发环境中执行命令。
# Membersを用意
$ ./skinny g scaffold members member name:String activated:Boolean luckyNumber:Option[Long] birthday:Option[LocalDate]
# DBマイグレート(SQLite)
$ ./skinny db:migrate
# サーバ起動
$ ./skinny run
开启服务器后,打开另一个终端,并从命令行中显示浏览器。
请用浏览器打开主屏幕。
打开网页 http://127.0.0.1:8080/
使用浏览器展示成员列表界面
打开 http://127.0.0.1:8080/members
用于OpenShift部署的配置
从这里开始,将进行与OpenShift环境相适应的配置更改。
添加适用于PostgreSQL的JDBC驱动程序。
OpenShift用のデータベース設定に変更します。
```bash:application.conf
development {
db {
default {
driver="org.h2.Driver"
url="jdbc:h2:file:./db/development;MODE=PostgreSQL;AUTO_SERVER=TRUE"
user="sa"
password="sa"
poolInitialSize=2
poolMaxSize=10
}
}
}
test {
db {
default {
driver="org.h2.Driver"
url="jdbc:h2:file:./db/test;MODE=PostgreSQL;AUTO_SERVER=TRUE"
user="sa"
password="sa"
poolInitialSize=2
poolMaxSize=10
}
}
}
staging {
db {
default {
driver="org.postgresql.Driver"
url="jdbc:postgresql://"${?OPENSHIFT_POSTGRESQL_DB_HOST}":"${?OPENSHIFT_POSTGRESQL_DB_PORT}"/"${?PGDATABASE}
user=${?OPENSHIFT_POSTGRESQL_DB_USERNAME}
password=${?OPENSHIFT_POSTGRESQL_DB_PASSWORD}
poolInitialSize=5
poolMaxSize=20
}
}
}
production {
db {
default {
driver="org.postgresql.Driver"
url="jdbc:postgresql://"${?OPENSHIFT_POSTGRESQL_DB_HOST}":"${?OPENSHIFT_POSTGRESQL_DB_PORT}"/"${?PGDATABASE}
user=${?OPENSHIFT_POSTGRESQL_DB_USERNAME}
password=${?OPENSHIFT_POSTGRESQL_DB_PASSWORD}
poolInitialSize=5
poolMaxSize=20
}
}
}
创建WAR文件,然后将其复制到OpenShift的Git文件夹中。
#war作成
$ ./skinny package production
#ファイルコピー(Tomcat上にwarファイル名で展開されるので、ファイル名を変更)
$ cp ./build/target/scala-2.10/skinny-blank-app_2.10-0.1.0-SNAPSHOT.war /User/foobar/skinnyapp/deployments/skinnyapp.war
在OpenShift环境中迁移数据库。
要将数据库迁移到OpenShift实例上的PostgreSQL,需要使用端口转发。
# ポートフォワード作成
$ rhc port-forward shinnyapp
Checking available ports ... done
Forwarding ports ...
To connect to a service running on OpenShift, use the Local address
Service Local OpenShift
---------- -------------- ---- ----------------
java 127.0.0.1:8080 => 127.4.227.1:8080
postgresql 127.0.0.1:5432 => 127.4.227.2:5432
Press CTRL-C to terminate port forwarding
接下来,我们将统一设置用于数据库配置的环境变量。
获取环境变量
[shinnyapp-foobar.rhcloud.com]> 导出 | egrep “OPENSHIFT_POSTGRESQL_DB_PORT | PGDATABASE | OPENSHIFT_POSTGRESQL_DB_PASSWORD”
声明 -x OPENSHIFT_POSTGRESQL_DB_PASSWORD=”xxxxxxxx”
声明 -x OPENSHIFT_POSTGRESQL_DB_PORT=”5432″
声明 -x PGDATABASE=”skinnyapp”
ローカルにも環境変数を反映して、DBマイグレートを実行します。
```bash:
#ローカル環境に環境変数をエクスポート
declare -x OPENSHIFT_POSTGRESQL_DB_PASSWORD="mjIwfERH7B3s"
declare -x OPENSHIFT_POSTGRESQL_DB_PORT="5432"
declare -x PGDATABASE="jbossews"
#ポートフォワーディングのため、ここだけ違う
declare -x OPENSHIFT_POSTGRESQL_DB_HOST="127.0.0.1"
#OpenShiftにDBマイグレート
./skinny db:migrate production
将war文件上传到OpenShift环境中。
最后,通过Git来上传之前复制的war文件。
$ git add .
$ git commit -m "Inital commit."
$ git push
...再起動に関するログ...
在另一个终端上,尝试打开日志。
# ログを表示
$ rhc log skinnyapp
过了一会儿,打开浏览器,确认一下功能是否正常。
$ open http://shinnyapp-foobar.rhcloud.com/shinnyapp/members
最後
如果源代码有修正,则重新创建war文件并进行部署。
结束了。