Ubuntu18.04マシン上にあるコンコースでJavaRESTサーバーを起動する必要があります。私の会社が使用しているコンコースのバージョンは5.5.11です。サーバーコードはJavaで記述されているためjava -jar <uber.jar>
、コマンドラインから簡単に入力できます(以下を参照)。プロダクションでは、この単純な贅沢はありません。それゆえ、私の質問です。
.jarをコンコースからターゲットUbuntuマシンにコピーするscpコマンドが機能しています。
scp -i /tmp/key.p8 -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null ./${NEW_DIR}/${ARTIFACT_NAME}.${ARTIFACT_FILE_TYPE} ${SRV_ACCOUNT_USER}@${JAVA_VM_HOST}:/var/www
私の秘密鍵は-iで渡され、それが機能していることを確認できることに注意してください。
私は有望と思われるこの他のSOQ&Aに従いました:ターゲットマシンのバックグラウンドでコマンドを実行するためにsshを取得しますが、提案された解決策と他の答えのいくつかの順列を試した後、私はまだ私の残りのサービスを開始していません。
私はコンコーススクリプトでこの行のいくつかの順列を試しました:
ssh -f -i /tmp/pvt_key1.p8 -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null ${SRV_ACCOUNT_USER}@${JAVA_VM_HOST} "bash -c 'nohup java -jar /var/www/${ARTIFACT_NAME}.${ARTIFACT_FILE_TYPE} -c \"/opt/testcerts/clientkeystore\" -w \"password\" > /dev/null 2>&1 &'"
sshで-fスイッチと-tスイッチを使用する場合と使用しない場合、ファイルストリームのリダイレクトを使用する場合と使用しない場合、nohupとLinuxバックグラウンド( '&')コマンドを使用する場合と使用しない場合、および引用符をエスケープするさまざまな方法を試しました。
bashプロンプトで、この行はサーバーを正常に起動します。証明書をポイントしてパスワードを提供するには、次の2つのスイッチが必要です。
java -jar rest-service.jar -c "/opt/certificates/clientkeystore" -w "password"
これはコンコースで可能だと本当に思いますが、私はこの時点で立ち往生しています。
多くの試行錯誤の後、私はこれを行う必要があったようです:
ssh -f -i /tmp/pvt_key1.p8 -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null ${SRV_ACCOUNT_USER}@${JAVA_VM_HOST} "bash -c 'sudo java -jar /var/www/${ARTIFACT_NAME}.${ARTIFACT_FILE_TYPE} -c \"/path/to/my/certificate\" -w \"password\" > /var/www/log.txt 2>&1 &'"
重要なのは、コマンドの「sudo」部分が欠落していたことです。Linuxのbashバックグラウンドインジケーター(「&」)を入力するのではなくnohupを使用すると、パイプラインでエラーが発生するようです。これは私にとってはうまくいきますが、他の人はより良い答えやより良い習慣であるかもしれない方法で応答を投稿することを歓迎します。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加