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 バージョン
上記のリソースリンクを参考にして、対象サーバにnodejsをインストールします.今回はコマンドを採用します.
rootを使うユーザーは明らかに推奨されていません.そして、nodejsとnpmの他のpackageのインストールをインストールします.私たちはsudoを通してインストールされているかもしれません.私達がプログラムを発表する時、私達が使っているsshユーザーはここでnpm perssmisionの問題を解決しなければなりません.参考資源はとても良い公式の指導を与えました.本明細書では、第1の方法を採用している.
ネット上の多くの文章はこの問題を無視しています.ここで一時的にスキップできます.後ろのpm 2 deployに行ったら問題が爆発してから対応して解決します.
git取付
ターゲットサーバにgitをインストールする.(ssh push方式であれば、現在のマシンはgitをインストールしなくてもいいです.)今回はターゲットサーバ上で直接にプレイコードを採用してみます.gitインストールは上のリソースリンクを参照してください.本論文では第三者repoを採用して設置を簡略化した.(ベストプラクティスではなく、第三者のrepoを使うには三思後行が必要です.手動でインストールします.参照してください.Git Installing from source)
サンプルコードライブラリ
サンプルコード:https://github.com/choelea/image-utils-web.git branches/pm 2-deploy-1
pm 2リリース
公式文書を参考にして、この文章を締め切ります.公式文書とコードが少し違っています.しかし、参考価値には影響しません.
前提条件リリースマシン(あなたのlaptopでもいいです.)は、ターゲットサーバ にsshできます.ターゲットサーバは、コード を引くことができます.
github上のソースコードはsshを必要としないで直接httpsのリンクを通して引くことができます.
ユーザーを設定
一般的なクラウドサーバは、ウェブインターフェースのsoneで構成されてもよい.ユーザ名とパスワードが既にある登録方式がない場合は、以下のコマンドでsshを設定することができます.(後ろに例があります.)
deployのプロファイルを作成します.
例:
ローカル仮想マシン試験例:
以下のように、ローカルで生成された公開鍵を利用して、公開鍵をターゲットサーバ192.168.186にアップロードして、ユーザosbox esをバインドする.
参考資源
git version
git version 2.1.1 node -v
v 8.0.0 pm2 -v
nodejsをインストールします上記のリソースリンクを参考にして、対象サーバにnodejsをインストールします.今回はコマンドを採用します.
curl --silent --location https://rpm.nodesource.com/setup_8.x | bash -
yum -y install nodejs
設置pm 2npm 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リリース
公式文書を参考にして、この文章を締め切ります.公式文書とコードが少し違っています.しかし、参考価値には影響しません.
前提条件
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のコマンドを実行できます.