2015年3月18日 星期三

[PaaS]試用 OpenShift 平台-4(嘗試建立可以運作 Mono 的 nginx 平台~結果失敗!)

、嘗試建立可以運作 Mononginx 平台~結果失敗!
4.1. 建立 DIY/Custom 的虛擬主機
rhc create-app myapp2 diy-0.1

4.2. 切換至 ssh 模式
cd myapp2
rhc ssh

4.3. 切換目錄至 $OPENSHIFT_DATA_DIR
cd  $OPENSHIFT_DATA_DIR

4.4. 下載 Nginx 及 PCRE library 的壓縮檔
(Perl Compatible Regular Expressions)
wget http://nginx.org/download/nginx-1.6.2.tar.gz
wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.36.tar.gz

4.5. 解壓縮
tar zxvf nginx-1.6.2.tar.gz
tar zxvf pcre-8.36.tar.gz

4.6. 切換目錄至 nginx
cd nginx-1.6.2

4.7. 安裝及編譯 nginx
./configure --with-pcre=$OPENSHIFT_DATA_DIR/pcre-8.36 --prefix=$OPENSHIFT_DATA_DIR/nginx --with-http_realip_module

make
make install

4.8. 設定 nginx
vi $OPENSHIFT_DATA_DIR/nginx/conf/nginx.conf
修改 listen 為 $OPENSHIFT_IP:$OPENSHIFT_PORT

複製 template
mv nginx.conf nginx.conf.template

4.9. 最後的調整(自動的重啓程式)
離開 ssh session
修改 .openshift/action_hooks/start

註解原有的設定
# nohup $OPENSHIFT_REPO_DIR/diy/testrubyserver.rb $OPENSHIFT_DIY_IP $OPENSHIFT_REPO_DIR/diy |& /usr/bin/logshifter -tag diy &

增加以下的設定
sed -e "s/`echo '$OPENSHIFT_IP:$OPENSHIFT_PORT'`/`echo $OPENSHIFT_DIY_IP:$OPENSHIFT_DIY_PORT`/" $OPENSHIFT_DATA_DIR/nginx/conf/nginx.conf.template > $OPENSHIFT_DATA_DIR/nginx/conf/nginx.conf
 

nohup $OPENSHIFT_DATA_DIR/nginx/sbin/nginx > $OPENSHIFT_DIY_LOG_DIR/server.log 2>&1 &

更新設定
git commit -a -m "start nginx when starting up the app"
git push

4.10. 測試
http://myapp2-bobohan.rhcloud.com

可利用 "rhc tail -a myapp2" 來除錯

4.11. 下載 Mono 的壓縮檔
wget http://download.mono-project.com/sources/mono/mono-3.12.1.tar.bz2

4.12. 解壓縮
tar jxvf mono-3.12.1.tar.bz2

4.13. 切換目錄至 mono
cd mono-3.12.1

4.14. 安裝及編譯 Mono
./configure --prefix=$OPENSHIFT_DATA_DIR/mono

make 跟 make install 的過程中皆有錯誤訊息

4.15. 替代方案
由於 OpenShift 平台因為權限的限制,無法用 RPM 的方式來安裝軟體,所以都要用以下的方式來安裝:
wget + extract + configure + make + make install

但是 nginx 成功但 Mono 就失敗!若你只是單純想要建立一個可以運作 Mono 的虛擬主機,可以使用網路上神人所分享的 cartridge,可以使用以下指令建立:
rhc create-app myapp3 https://raw.github.com/wshearn/openshift-community-cartridge-mono/3.2.1-aspx/metadata/manifest.yml

參考資料
[1] Installing the OpenShift Client Tools
[2] Getting Started with MongoDB on Node.js on OpenShift
[3] Running Nginx on OpenShift
[4] 《OPENSHIFT》可綁網址、無限流免費雲端主機
[5] 在 OpenShift 上部署 MongoDB 和 Node.js 应用
[6] OpenShift安裝Nginx+MYSQL+PHP5.4
[7] Nginx | Mono
[8] Compiling Mono on Linux
[9] Getting Started with OpenShift and Mono