49

インスタンスが起動して実行されているときにアプリケーションを起動する方法を説明する簡単なガイドはありますか? それがインストールされたサービスの1つである場合、それを使用してサービスに追加yumできると思います。/sbin/chkconfig(念のために言っておきますが、正しいですか?)

ただし、インストールされていないプログラムを実行したいだけですyum。node.js プログラムを実行するにはsudo node app.js、システムが起動するたびにホーム ディレクトリでスクリプトを実行する必要があります。

私は Amazon Linux AMI に慣れていないので、起動のたびにスクリプトを自動的に実行する「正しい」方法を見つけるのにほとんど苦労していません。

これを行うエレガントな方法はありますか?

4

8 に答える 8

23

1 つの方法は、upstart ジョブを作成することです。そうすれば、Linux が読み込まれるとアプリが起動し、クラッシュした場合は自動的に再起動し、 // で起動/停止/再起動sudo start yourappできsudo stop yourappますsudo restart yourapp

開始手順は次のとおりです。

1) upstart ユーティリティをインストールします (標準の Amazon Linux AMI を使用している場合は、事前にインストールされている場合があります)。

sudo yum install upstart

Ubuntu の場合:

sudo apt-get install upstart

2) ノード アプリの upstart スクリプトを作成します。

/etc/initadd ファイルyourappname.confに次のコード行を追加します。

#!upstart
description "your app name"

start on started mountall
stop on shutdown

# Automatically Respawn:
respawn
respawn limit 99 5

env NODE_ENV=development

# Warning: this runs node as root user, which is a security risk
# in many scenarios, but upstart-ing a process as a non-root user
# is outside the scope of this question
exec node /path_to_your_app/app.js >> /var/log/yourappname.log 2>&1

3)アプリを起動しますsudo start yourappname

于 2012-06-30T17:19:26.580 に答える
11

ノード スクリプトをサービスとしてプロビジョニングし、起動時に自動的に開始するために、forever-service を使用できます。次のコマンドは必要なことを行います。

npm install -g forever-service
forever-service install test

これにより、現在のディレクトリに app.js が永久にサービスとしてプロビジョニングされます。システムが再起動されるたびに、サービスが自動的に再起動されます。また、停止すると、正常に停止しようとします。このスクリプトは、 logrotateスクリプトもプロビジョニングします。

Github URL: https://github.com/zapty/forever-service

現在のところ、永久サービスは Amazon Linux、CentOS、Redhat の他の Linux ディストリビューション、Mac および Windows のサポートをサポートしています。

注: 私は永遠のサービスの著者です。

于 2014-08-26T04:43:20.847 に答える
6

/etc/rc.localあなたの簡単な解決策は、アプリを;から開始することです。そこにコマンドを追加するだけです。

ただし、エレガントな方法を使用する場合は、アプリケーションを rpm ファイルにパッケージ化し、アプリで/etc/rc.d使用できるように起動スクリプトを用意しchkconfigてから、インスタンスに rpm をインストールする必要があります。

たぶん、これまたはこれが役立ちます。(または「rpmパッケージの作成」をグーグルで検索してください)

于 2012-06-30T17:10:39.593 に答える
5

アプリを開始および停止し、/etc/init.d に配置できるスクリプトを作成できます。スクリプトを chkconfig の規則 (以下) に準拠させてから、chkconfig を使用して、他のサービスが開始されたときに開始するように設定します。

/etc/init.d から既存のスクリプトを選択して、例として使用できます。この記事では、基本的に次の要件について説明します。

  • 必要なシェルを識別する実行可能スクリプト (例: #!/bin/bash)
  • # chkconfig: という形式のコメント。多くの場合、 は 345 です。startprio は、サービスを開始する順序を示し、stopprio は、サービスを停止する順序を示します。私は通常、既存の同様のサービスを選択し、それをこれらの値のガイドとして使用します (つまり、Web 関連のサービスがある場合は、httpd と同じレベルで開始し、同様の開始および停止優先度で開始します)。

スクリプトを設定したら、次を使用できます

 chkconfig --add yourscript 
 chkconfig yourscript on 

そして、あなたは行く準備ができているはずです。(一部のディストリビューションでは、スクリプトを /etc/init.d/rc.d に手動でシンボリック リンクする必要がある場合がありますが、スクリプトを有効にすると、AWS ディストリビューションで自動的にシンボリック リンクが実行されると思います。

于 2013-04-23T01:59:06.607 に答える
-2

使用できますscreen。次の行を実行crontab -eして追加します。

@reboot  screen -d -m bash -c "cd /home/user/yourapp/; node app"
于 2017-06-26T18:50:48.293 に答える
-12

AWS でずっと使用しており、良い仕事をしています。を使用してインストール

 [sudo] npm install forever -g

アプリケーションを追加するには

 forever start path_to_application

およびアプリケーションの使用を停止するには

 forever stop path_to_application

これは、セットアップに役立つ便利な記事です。

于 2012-06-30T17:17:42.837 に答える