https://github.com/ramr/nodejs-custom-version-openshift

由于是线上服务器,一步一步来:

先把上面的工程拉下来,覆盖到初始化的工程里,提交,让服务器端装起来。

#  Uncomment one of the version lines to select the node version to use.
#  The last "non-blank" version line is the one picked up by the code in
#  .openshift/lib/utils
#  Default: 0.10.25
#
#  0.8.24
#  0.9.1
#  0.10.25
#  0.11.11
#  0.12.2
#  0.12.5
4.2.3

配置好.openshift/markers/NODEJS_VERSION  (默认写的4.2.3, 我改的6.9.2)

如果失败了,找到最初commit id 用reset --hard HEAD~1 一版一版往前退,

然后pull 返回去初始状态,否则错上推错很有可能会出现被服务器永久拒绝的状态(哭),那就只能重新建应用了
还没commit的直接 checkout --force 就放弃修改了

一堆无关痛痒的依赖错误之后是:

那么会不会是503呢,它没有明显的deploy failure,说是node启动失败

看看dashboard 状态

只要不是一直被stopped就还有希望 

页面并没有受到影响,仍然显示默认的index.html

在dashboard点restart,重启之后页面仍然正常显示,猜想服务器终于把node给升级好啦?

(尝试了一次不点restrt, 跑去网上冲浪不知等了多久也自动能stated) 页面改头换面了:

把package.json里面scripts、dependencies、devDependencies加进去

再次push应该会看到这样

明显的node已经升级成功,但是dashboard上仍然显示0.10

然后我有一个用了webpack的工程需要移植上去,

根据stackoverflow这篇文章,需要设置.openshift中的action_hook下build文件:

create the following file: .openshift/action_hook/build which contains the following:

#!/bin/bash
webpack --config $OPENSHIFT_DATA_DIR/webpack.config.js

题主出现了报错,但我是一次成功的。。。

另外,如果出现这种问题像我之前查到的解决方式一样需要配置静态地址:

self.initializeServer = function() {
        self.createRoutes();
        self.app = express();
        self.app.use('/', express.static(__dirname + '/dist'));
        //  Add handlers for the app (from the routes).
        for (var r in self.routes) {
            self.app.get(r, self.routes[r]);
        }
    };

还有上面一段populate the cache也需要设置

     /**
     *  Populate the cache.
     */
    self.populateCache = function() {
        if (typeof self.zcache === "undefined") {
            self.zcache = { 'index.html': '' };
        }
     //  Local cache for static content.
   //原来openshift给的index.html
    //self.zcache['index.html'] = fs.readFileSync('./index.html');
        self.zcache['index.html'] = fs.readFileSync('./dist/index.html');
    };

这样就和本地启动一样了,本地npm start还是可以指定其他的入口文件进行本地启动,并不会冲突。

$ git push
Counting objects: 35, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (35/35), done.
Writing objects: 100% (35/35), 43.95 KiB | 0 bytes/s, done.
Total 35 (delta 13), reused 0 (delta 0)
remote:
remote:   - pre_stop_nodejs: Adding Node.js version 6.9.2 binaries to path
remote:   - PATH set to include custom node version (6.9.2) from
remote:        /var/lib/openshift/585cd49089f5cf3e75000095/app-root/data//node-v6.9.2-linux-x64/bin
remote:     PATH = /var/lib/openshift/585cd49089f5cf3e75000095/app-root/data//node-v6.9.2-linux-x64/bin:/var/lib/openshift/585cd49089f5cf3e75000095/app-root/runtime/repo/node_modules/.bin:/var/lib/openshift/585cd49089f5cf3e75000095//.node_modules/.bin:/opt/rh/nodejs010/root/usr/bin:/bin:/usr/bin:/usr/sbin
remote: Stopping NodeJS cartridge
remote: Tue Dec 27 2016 03:15:41 GMT-0500 (EST): Stopping application 'angular' ...
remote: Tue Dec 27 2016 03:15:42 GMT-0500 (EST): Stopped Node application 'angular'
remote: Repairing links for 1 deployments
remote: Saving away previously installed Node modules
remote: Building git ref 'master', commit d3e7fb0
remote: NOTE: The .openshift/action_hooks/pre_build hook is not executable, to make it executable:
remote:       On Windows run:   git update-index --chmod=+x .openshift/action_hooks/pre_build
remote:       On Linux/OSX run: chmod +x .openshift/action_hooks/pre_build
remote: Building NodeJS cartridge
remote: npm info it worked if it ends with ok
remote: npm info using npm@2.14.13
remote: npm info using node@v0.10.35
remote: npm info preinstall nodejs-Custom-Version-Sample@1.0.1
remote: npm info package.json core-js@2.4.1 No README data
remote: npm info package.json ts-loader@0.8.2 No README data
remote: npm info package.json @angular/compiler@2.0.0-rc.6 No README data
remote: npm info package.json @angular/common@2.0.0-rc.6 No description
remote: npm info package.json @angular/common@2.0.0-rc.6 No README data
remote: npm info package.json @angular/compiler-cli@0.6.0 No README data
remote: npm info package.json @angular/core@2.0.0-rc.6 No README data
remote: npm info package.json @angular/forms@2.0.0-rc.6 No README data
remote: npm info package.json @angular/http@2.0.0-rc.6 No README data
remote: npm info package.json @angular/platform-browser@2.0.0-rc.6 No README data
remote: npm info package.json @angular/platform-browser-dynamic@2.0.0-rc.6 No README data
remote: npm info package.json @angular/router@3.0.0-rc.2 No README data
remote: npm info package.json @angular/upgrade@2.0.0-rc.6 No description
remote: npm info package.json @angular/upgrade@2.0.0-rc.6 No README data
remote: npm info package.json echarts@3.3.2 No license field.
remote: npm info package.json raw-loader@0.5.1 No license field.
remote: npm info build /var/lib/openshift/585cd49089f5cf3e75000095/app-root/runtime/repo
remote: npm info linkStuff nodejs-Custom-Version-Sample@1.0.1
remote: npm info install nodejs-Custom-Version-Sample@1.0.1
remote: npm info postinstall nodejs-Custom-Version-Sample@1.0.1
remote:
remote: > nodejs-Custom-Version-Sample@1.0.1 postinstall /var/lib/openshift/585cd49089f5cf3e75000095/app-root/runtime/repo
remote: > typings install
remote:
remote:
remote: Error: EACCES, permission denied '/var/lib/openshift/585cd49089f5cf3e75000095/.config'
remote:     at Object.fs.mkdirSync (fs.js:654:18)
remote:     at sync (/var/lib/openshift/585cd49089f5cf3e75000095/app-root/runtime/repo/node_modules/typings/node_modules/typings-core/node_modules/mkdirp/index.js:71:13)
remote:     at Function.sync (/var/lib/openshift/585cd49089f5cf3e75000095/app-root/runtime/repo/node_modules/typings/node_modules/typings-core/node_modules/mkdirp/index.js:77:24)
remote:     at Object.create.all.get (/var/lib/openshift/585cd49089f5cf3e75000095/app-root/runtime/repo/node_modules/typings/node_modules/typings-core/node_modules/configstore/index.js:39:13)
remote:     at Object.Configstore (/var/lib/openshift/585cd49089f5cf3e75000095/app-root/runtime/repo/node_modules/typings/node_modules/typings-core/node_modules/configstore/index.js:28:44)
remote:     at Object.<anonymous> (/var/lib/openshift/585cd49089f5cf3e75000095/app-root/runtime/repo/node_modules/typings/node_modules/typings-core/dist/utils/store.js:5:19)
remote:     at Module._compile (module.js:456:26)
remote:     at Object.Module._extensions..js (module.js:474:10)
remote:     at Module.load (module.js:356:32)
remote:     at Function.Module._load (module.js:312:12)
remote:     at Module.require (module.js:364:17)
remote:     at require (module.js:380:17)
remote:     at Object.<anonymous> (/var/lib/openshift/585cd49089f5cf3e75000095/app-root/runtime/repo/node_modules/typings/node_modules/typings-core/dist/utils/fs.js:29:15)
remote:     at Module._compile (module.js:456:26)
remote:     at Object.Module._extensions..js (module.js:474:10)
remote:     at Module.load (module.js:356:32)
remote:
remote: npm info nodejs-Custom-Version-Sample@1.0.1 Failed to exec postinstall script
remote: npm ERR! Linux 2.6.32-642.6.2.el6.x86_64
remote: npm ERR! argv "node" "/opt/rh/nodejs010/root/usr/bin/npm" "install" "-d
remote: npm ERR! node v0.10.35
remote: npm ERR! npm  v2.14.13
remote: npm ERR! code ELIFECYCLE
remote: npm ERR! nodejs-Custom-Version-Sample@1.0.1 postinstall: `typings install`
remote: npm ERR! Exit status 8
remote: npm ERR!
remote: npm ERR! Failed at the nodejs-Custom-Version-Sample@1.0.1 postinstall script 'typings install'.
remote: npm ERR! This is most likely a problem with the nodejs-Custom-Version-Sample package,
remote: npm ERR! not with npm itself.
remote: npm ERR! Tell the author that this fails on your system:
remote: npm ERR!     typings install
remote: npm ERR! You can get their info via:
remote: npm ERR!     npm owner ls nodejs-Custom-Version-Sample
remote: npm ERR! There is likely additional logging output above.
remote:
remote: npm ERR! Please include the following file with any support request:
remote: npm ERR!     /var/lib/openshift/585cd49089f5cf3e75000095/app-root/runtime/repo/npm-debug.log
remote: An error occurred executing 'gear postreceive' (exit code: 1)
remote: Error message: CLIENT_ERROR: Failed to execute: 'control build' for /var/lib/openshift/585cd49089f5cf3e75000095/nodejs
remote:
remote: For more details about the problem, try running the command again with the '--trace' option.
To ssh://xxx.rhcloud.com/~/git/angular.git/
   bf853eb..d3e7fb0  master -> master

每次push完也没法直接看到页面,总是会进入building,等它打包完自动started就好了。

posted on 2016-12-15 10:48  meeming  阅读(643)  评论(0编辑  收藏  举报



Fork me on GitHub