複数のNodeJSアプリケーションをMicrosoft Azure上で動作するUbuntu 14.04.4仮想マシンに展開する必要があります。
shipitとshipit-deployをタスクに使用しています。リモートAzure VMでshipit-deployをsudoとして実行
マイshipitfile.js
は、これまでに次のようになります。
module.exports = function (shipit) {
require('shipit-deploy')(shipit);
var stagingConfig = require('./config.staging').deploy;
var productionConfig = require('./config.prod').deploy;
shipit.initConfig({
default: {
workspace: '/tmp/my-api',
deployTo: '/var/www/my-api',
repositoryUrl: 'https://githubrepoaddresshere.git',
ignores: ['.git', 'node_modules', 'migrations', 'dumpDB', 'logs', 'bin'],
rsync: ['--del'],
keepReleases: 2,
key: '~/.ssh/id_rsa.pem',
shallowClone: true
},
staging: stagingConfig,
production: productionConfig
});
shipit.on('init', function() {
console.log('Starting deployment...');
});
shipit.on('deployed', function() {
// npm install etc etc
});
};
stagingConfig
変数を保持するオブジェクトの環境固有の情報である:
{
"branch": "develop",
"servers": "[email protected]"
}
私はshipit staging deploy
コマンドを実行すると、私は
'deploy:update' errored after 3.41 s
Error: Command failed: ssh -i ~/.ssh/id_rsa.pem "[email protected]" "mkdir -p /var/www/my-api/releases/20160429125114"
mkdir: cannot create directory ‘/var/www/my-api/releases’: Permission denied
を取得
:
1)/home/username
2)Use this workaroundがroot
としてSSHセッションを開始するために展開するようにしてください。
私はまだ最初の試みをしなければならないし、確かに2番目を使用するつもりはありません。
私の質問は、sudo
で展開中に実行するすべてのコマンドの接頭辞をそれぞれshipit-deploy
にするクリーンで非ハックな解決策ですか?