Centos 7上にpm 2を利用してnodejsプログラム-No Jenkinsを配置する.


本論文では、pm 2を利用して、nodejsのプログラムをcentosシステムに展開する方法を模索しています.
参考資源
  • nodejsのインストールInstalling Node.js via package manager
  • npm権限問題Fixing npm permissions
  • pm 2 deploy PM 2 deployment
  • gitのインストールとバージョンアップHow to install GIT CentOS
  • Deploy and iterate faster,ハローecosystem.json
  • バージョンgit version git version 2.1.1 node -v v 8.0.0 pm2 -vnodejsをインストールします
    上記のリソースリンクを参考にして、対象サーバにnodejsをインストールします.今回はコマンドを採用します.
    curl --silent --location https://rpm.nodesource.com/setup_8.x | bash -
    yum -y install nodejs
    設置pm 2
    npm install pm2@latest -g
    SSHユーザの権限問題を解決する
    rootを使うユーザーは明らかに推奨されていません.そして、nodejsとnpmの他のpackageのインストールをインストールします.私たちはsudoを通してインストールされているかもしれません.私達がプログラムを発表する時、私達が使っているsshユーザーはここでnpm perssmisionの問題を解決しなければなりません.参考資源はとても良い公式の指導を与えました.本明細書では、第1の方法を採用している.sudo chown -R $(whoami) $(npm config get prefix)/{lib/node_modules,bin,share}は、このコマンドを使用して、現在のユーザに対してownerを設定する.
    ネット上の多くの文章はこの問題を無視しています.ここで一時的にスキップできます.後ろのpm 2 deployに行ったら問題が爆発してから対応して解決します.
    git取付
    ターゲットサーバにgitをインストールする.(ssh push方式であれば、現在のマシンはgitをインストールしなくてもいいです.)今回はターゲットサーバ上で直接にプレイコードを採用してみます.gitインストールは上のリソースリンクを参照してください.本論文では第三者repoを採用して設置を簡略化した.(ベストプラクティスではなく、第三者のrepoを使うには三思後行が必要です.手動でインストールします.参照してください.Git Installing from source)
    sudo rpm -U http://opensource.wandisco.com/centos/7/git/x86_64/wandisco-git-release-7-2.noarch.rpm 
    sudo yum install -y git
    gitバージョンが低すぎて、最新のコードにpullできない問題が発生する可能性があります.Ticket Reference CentOSが持参するrepositoryは、古いバージョンと最新バージョンのみが1.8.xバージョンです.
    サンプルコードライブラリ
    サンプルコード:https://github.com/choelea/image-utils-web.git branches/pm 2-deploy-1
    pm 2リリース
    公式文書を参考にして、この文章を締め切ります.公式文書とコードが少し違っています.しかし、参考価値には影響しません.
    前提条件
  • リリースマシン(あなたのlaptopでもいいです.)は、ターゲットサーバ
  • にsshできます.
  • ターゲットサーバは、コード
  • を引くことができます.
    github上のソースコードはsshを必要としないで直接httpsのリンクを通して引くことができます.
    ユーザーを設定
    一般的なクラウドサーバは、ウェブインターフェースのsoneで構成されてもよい.ユーザ名とパスワードが既にある登録方式がない場合は、以下のコマンドでsshを設定することができます.(後ろに例があります.)
    $ ssh-keygen -t rsa
    $ ssh-copy-id node@myserver.com
    同じようにターゲットサーバ->gitサーバのsshアクセスを設定します.
    deployのプロファイルを作成します.pm2 ecosystemによりテンプレートを生成して修正する.json、js、yamlファイルでいいです.前の2つが好ましい
    module.exports = {
      /**
       * Application configuration section
       * http://pm2.keymetrics.io/docs/usage/application-declaration/
       */
      apps : [
    
        // First application
        {
          name      : 'image-utils-web',
          script    : 'server.js',
          // env: {  If we don't comment here, it will override below deploy config
          //   PORT: 3011
          // },
          env_production : {
            NODE_ENV: 'production'
          }
        }
      ],
    
      /**
       * Deployment section
       * http://pm2.keymetrics.io/docs/usage/deployment/
       */
      deploy : {
        production : {
          user : 'joe',// ssh    
          host : '192.168.1.188', //        
          ref  : 'origin/master',
          repo : 'https://github.com/choelea/image-utils-web.git',
          path : '/home/joe/nodejsapp/nodejs-playaround', //          
          'post-deploy' : 'npm install && pm2 reload ecosystem.config.js --env production'
        },
        dev : {
          user : 'osboxes',
          host : '192.168.1.186',
          ref  : 'origin/master',
          repo : 'https://github.com/choelea/image-utils-web.git',
          path : '/home/osboxes/temp',
          'post-deploy' : 'npm install && pm2 reload ecosystem.config.js --env dev',
          env  : {
            NODE_ENV: 'dev',
            PORT: 3012
          }
        }
      }
    };
    実行コマンドpm2 deploy ecosystem.config.js devは、環境に応じた配置を行うことができる.(展開前にpm2 deploy ecosystem.config.js dev setupを実行して対応するフォルダを作成します.一般的には、current、shared、sourceの三つのフォルダがあります.currentはソフト接続でsourceを指します.)
    例:
    ローカル仮想マシン試験例:
    以下のように、ローカルで生成された公開鍵を利用して、公開鍵をターゲットサーバ192.168.186にアップロードして、ユーザosbox esをバインドする.
    $ ssh-copy-id -i id_rsa.pub osboxes@192.168.1.186
    /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter                                                             out any that are already installed
    /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompt                                                            ed now it is to install the new keys
    osboxes@192.168.1.186's password:
    
    Number of key(s) added: 1
    
    Now try logging into the machine, with:   "ssh '[email protected]'"
    and check to make sure that only the key(s) you wanted were added.
    
    
    Administrator@PC-20160321GFRJ MINGW64 ~/.ssh
    $ ssh osboxes@192.168.1.186
    Last login: Wed Jul  5 1
    windowsシステムはデフォルトではsshコマンドがありません.もしgitがインストールされたら、git bashでsshのコマンドを実行できます.