現時点では、次の場所に移動して実行する必要が/usr/java/apache-solr-1.4.0/example
あります。
java -jar start.jar
起動時にこれを自動的に開始するにはどうすればよいですか?
私は共有Linuxサーバーを使用しています。
共有Linuxボックスを使用しているため、おそらくシステム管理者に次のことを行うように依頼する必要があります。
で起動スクリプトを作成します/etc/init.d/solr
。
このコード、私のSolrスタートアップスクリプトをそのファイルにコピーします。
#!/bin/sh
# Prerequisites:
# 1. Solr needs to be installed at /usr/local/solr/example
# 2. daemon needs to be installed
# 3. Script needs to be executed by root
# This script will launch Solr in a mode that will automatically respawn if it
# crashes. Output will be sent to /var/log/solr/solr.log. A PID file will be
# created in the standard location.
start () {
echo -n "Starting solr..."
# Start daemon
daemon --chdir='/usr/local/solr/example' --command "java -jar start.jar" --respawn --output=/var/log/solr/solr.log --name=solr --verbose
RETVAL=$?
if [ $RETVAL = 0 ]
then
echo "done."
else
echo "failed. See error code for more information."
fi
return $RETVAL
}
stop () {
# Stop daemon
echo -n "Stopping solr..."
daemon --stop --name=solr --verbose
RETVAL=$?
if [ $RETVAL = 0 ]
then
echo "Done."
else
echo "Failed. See error code for more information."
fi
return $RETVAL
}
restart () {
daemon --restart --name=solr --verbose
}
status () {
# Report on the status of the daemon
daemon --running --verbose --name=solr
return $?
}
case "$1" in
start)
start
;;
status)
status
;;
stop)
stop
;;
restart)
restart
;;
*)
echo $"Usage: solr {start|status|stop|restart}"
exit 3
;;
esac
exit $RETVAL
次に、以下を実行します。
chkconfig --add solr
または(Ubuntuの場合):
update-rc.dsolrのデフォルト
chkconfig
...または、Linuxディストリビューションに(または)がない場合は、andおよびandupdate-rc.d
にリンク/etc/init.d/solr
します。/etc/rc3.d/S99solr
/etc/rc5.d/S99solr
/etc/rc3.d/K01solr
/etc/rc5.d/K01solr
% ln -s /etc/init.d/solr /etc/rc3.d/S99solr
% ln -s /etc/init.d/solr /etc/rc5.d/S99solr
% ln -s /etc/init.d/solr /etc/rc3.d/K01solr
% ln -s /etc/init.d/solr /etc/rc5.d/K01solr
再起動すると、Solrは実行レベル3および5(ネットワークと完全なGUIを備えたコンソール)で起動します。
solrを手動で開始するには、以下を実行します。
% /etc/init.d/solr start
マシンへのrootアクセス権がある場合、システムの初期化フロー(initスクリプト、systemdなど)に基づいてこれを行う方法はいくつかあります。
ただし、rootがない場合はcron
、再起動時にプログラムを実行するためのクリーンで一貫した方法があります。
まず、Javaがマシンのどこにあるかを調べます。以下のコマンドは、それがどこにあるかを教えてくれます:
$ which java
次に、次のコードをシェルスクリプトに貼り付け、以下のJavaパス(/ usr / bin)を上記のコマンドから取得したパスに置き換えます。
#!/bin/bash
cd /usr/java/apache-solr-1.4.0/example
/usr/bin/java -jar start.jar
このスクリプトは、start.shとして特定の場所($ HOMEなど)に保存できます。次のコマンドを実行して、(単純化するために)ワールド実行権限を付与します。
$ chmod og+x start.sh
次に、スクリプトをテストして、コマンドラインから正しく機能することを確認します。
$ ./start.sh
すべてが正常に機能する場合は、それをマシンの起動スクリプトの1つに追加する必要があります。これを行う最も簡単な方法は、/ etc/ rc.localの最後に次の行を追加することです。
# ... snip contents of rc.local ...
# Start Solr upon boot.
/home/somedir/start.sh
または、rc.localを編集する権限がない場合は、そのようにユーザーのcrontabに追加できます。まず、コマンドラインで次のように入力します。
$ crontab -e
これにより、エディターが表示されます。次の行を追加します。
@reboot /home/somedir/start.sh
Linuxシステムがそれをサポートしている場合(通常はサポートしています)、これにより、起動時にスクリプトが確実に実行されます。
上記のタイプミスがない場合は、うまくいくはずです。どうなるか教えてください。
ファイルに次の行を追加すると、/etc/init.d/solr
Red Hat Linux がサポートされます (/etc/init.d/mysql
他のユーザーのコメントを読んだ後、ここからコピーしました)。
# Comments to support chkconfig on Red Hat Linux
# chkconfig: 2345 64 36
# Description: A very fast and reliable search engine.
ここでは、次の 3 つの手順を実行する必要があります。
まず、supermagic のスクリプトを上から調整しました。問題はありませんでしたが、多くのタイプミスがあり、いくつかの機能 (ステータス、再起動) が欠けており、デーモン ユーティリティがあまり効果的に使用されていませんでした。
これが私のバージョンのスクリプトです(動作するようにデーモンがインストールされていることを確認してください):
#!/ビン/sh # 前提条件: # 1. Solr は /usr/local/solr/example にインストールする必要があります # 2. デーモンをインストールする必要があります # 3. スクリプトは root で実行する必要があります # このスクリプトは、次の場合に自動的に再生成されるモードで Solr を起動します。 # クラッシュします。出力は /var/log/solr/solr.log に送信されます。pid ファイルは次のようになります。 # 標準の場所に作成されます。 始める () { echo -n "solr を開始しています..." # デーモン起動 デーモン --chdir='/usr/local/solr/example' --command "java -jar start.jar" --respawn --output=/var/log/solr/solr.log --name=solr --詳細 RETVAL=$? [ $RETVAL = 0 ] の場合 それから 「完了」をエコーします。 そうしないと echo "失敗しました。詳細については、エラー コードを参照してください。" フィ $RETVAL を返す } 止まる () { # デーモン停止 echo -n "solr を停止しています..." デーモン --stop --name=solr --verbose RETVAL=$? [ $RETVAL = 0 ] の場合 それから 「完了」をエコーします。 そうしないと echo "失敗しました。詳細については、エラー コードを参照してください。" フィ $RETVAL を返す } 再起動 () { デーモン --restart --name=solr --verbose } 状態 () { # デーモンのステータスを報告 デーモン --running --verbose --name=solr $を返しますか? } ケース「$1」 始める) 始める ;; 状態) 状態 ;; 止まる) 止まる ;; 再起動) 再起動 ;; *) echo $"使用法: solr {start|status|stop|restart}" 3番出口 ;; エサック $RETVAL を出る
このスクリプトを /etc/init.d/solr に配置し、実行可能にすると、ステップ 1 でうまくいくはずです。/etc/init.d/solr start|stop|restart|status で solr デーモンを開始/停止/再起動/ステータスできるようになりました
ステップ 2 では、Ubuntu マシンで次のコマンドを実行します (Redhat については知りません)。
update-rc.d solr defaults
これが完了すると、かなり良い状態になりますが、おそらくある時点でログを適切にローテーションしたいので、ログの適切な構成を次に示します。
/var/log/solr/*.log {
weekly
rotate 12
compress
delaycompress
create 640 root root
postrotate
/etc/init.d/solr restart
endscript
}
そのファイルを /etc/logrotate.d/solr に配置すると、logrotate が実行されている (通常は実行されている) と仮定して、準備完了です。
この質問には一度答えたことがありますが、その答えは SysV を使用するオペレーティング システムに対するもので、これはsystemdの使用が増えている新しいオペレーティング システムに対するものです。
私の他の回答のように、ここで行う必要があることが 3 つあります。
systemd
ログを永続化します。systemd
使用できるユニット ファイルを次に示します (これらは SysV 初期化ファイルを置き換えます) 。名前を付けてsolr.service
ください。
[Unit]
Description=Apache Solr
After=syslog.target network.target remote-fs.target nss-lookup.target
[Service]
Type=simple
Environment="XMX=2G"
WorkingDirectory=/usr/local/solr/example
ExecStart=/usr/bin/java -jar -server -Xmx${XMX} start.jar
Restart=on-failure
LimitNOFILE=10000
[Install]
WantedBy=multi-user.target
そこには Solr のメモリ用の構成があることに注意してください。おそらく、それを自分の目的に合わせて微調整したいと思うでしょう。に渡す変数が多数ある場合は、ディレクティブsystemd
を使用してそれを行うことができます。EnvironmentFile
これはかなり単純ですが、ルールがあります。起動時に開始するには、ファイルを/etc/systemd/system/solr.service
. このディレクトリではシンボリックリンクを使用できません。試してはいけません。
そこに入れたら、次のようにして起動時にデーモンを実行できるようにします。
sudo systemctl enable solr
そして、次のコマンドで開始、停止、ステータスを取得できます。
sudo systemctl {start|stop|status} solr
systemd
ログを永続化するデフォルトでは、systemd
ログは永続的ではなく、システムを再起動するたびに失われます。それが望ましくない場合は、ディレクトリを作成して永続化することができます:
sudo mkdir -p /var/log/journal/
そして、systemd
ジャーナリング デーモンを再起動します。
sudo systemctl restart systemd-journald
それが完了すると、systemd
のジャーナリング デーモンは、Solr が作成するすべての stdout と stderr を受け取り、バイナリ形式でに格納されます/var/log/journal/
。
ロギングを処理する方法systemd
は非常によくできており、慣れていない場合は勉強する価値があります。それまでの間、ログ エントリを読み取るには、 という新しいツールを使用する必要があることに注意してくださいjournalctl
。たとえば、これは solr ログに従います。
journalctl -u solr -f
また、日付ベースのフィルタリングなどを行うためのフラグもあります。
ボーナスセクション!ログファイルを微調整したい場合は、こちらのドキュメントですべてを読むことができますが、デフォルトは実際には非常に安全で健全です (ログはデフォルトで圧縮され、大きくなりすぎず、レート制限があり、書き込まれます。バッチでディスクに)。
スーパーマジックのコメントをフォローしてから、これに従ってください
http://codingrecipes.com/service-x-does-not-support-chkconfig
彼は言います、
1 – スクリプトを /etc/init.d フォルダーにコピーします 2 – cd /etc/init.d 3 – chmod +x マイスクリプト 4 – #!/bin/bash または #!/bin/sh の直後に # を含む次の行を追加します。 # chkconfig: 2345 95 20 # 説明: いくつかの説明 # スクリプトの動作 (これが必要かどうかは不明) # プロセス名: myscript
それからあなたはすることができます
chkconfig --myscript を追加
小切手
man 5 crontab
@reboot
使用しているLinuxシステムでサポートされているかどうかを確認してください。