CentOS 6.8で私はコマンドgo run main.go
で実行されるgolangアプリケーションを持っています。サービスhttpdを起動するためにシステムサービスを作成する必要があります。
私は/etc/rc.d/init.d/httpd
のようなファイルを作成しなければならないことを知っていますが、そのコマンドを実行する方法はわかりません。サービスでgoアプリケーションを実行する
答えて
まず、Goバイナリをビルドしてパスの下に置く必要があります。
go install main.go
ないあなたの「メイン」ファイルがメインと呼ばれている場合に、go install
はあなたのパスの下に、メインと呼ばれるバイナリが配置されます。だから私はあなたのプロジェクト/サーバーと呼ぶものにあなたのファイルの名前を変更することをお勧めします。
mv main.go coolserver.go
go install coolserver.go
coolserver
を実行すると、すべて正常であることを確認できます。 $ GOPATHを正しく設定してもらえますか?
<NAME> = coolserver
<DESCRIPTION> = Describe your service here (be concise)
<COMMAND> = /path/to/coolserver
<USER> = Login of the system user the script should be run as
スタートし、テストを置き換えることを忘れないでください
cp "service.sh" "/etc/init.d/coolserver"
chmod +x /etc/init.d/coolserver
:そして、ここでそれは/etc/init.dのためにservice.sh
#!/bin/sh
### BEGIN INIT INFO
# Provides: <NAME>
# Required-Start: $local_fs $network $named $time $syslog
# Required-Stop: $local_fs $network $named $time $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Description: <DESCRIPTION>
### END INIT INFO
SCRIPT=<COMMAND>
FLAGS="--auth=user:password"
RUNAS=<USERNAME>
PIDFILE=/var/run/<NAME>.pid
LOGFILE=/var/log/<NAME>.log
start() {
if [ -f /var/run/$PIDNAME ] && kill -0 $(cat /var/run/$PIDNAME); then
echo 'Service already running' >&2
return 1
fi
echo 'Starting service…' >&2
local CMD="$SCRIPT $FLAGS &> \"$LOGFILE\" & echo \$!"
su -c "$CMD" $RUNAS > "$PIDFILE"
echo 'Service started' >&2
}
stop() {
if [ ! -f "$PIDFILE" ] || ! kill -0 $(cat "$PIDFILE"); then
echo 'Service not running' >&2
return 1
fi
echo 'Stopping service…' >&2
kill -15 $(cat "$PIDFILE") && rm -f "$PIDFILE"
echo 'Service stopped' >&2
}
uninstall() {
echo -n "Are you really sure you want to uninstall this service? That cannot be undone. [yes|No] "
local SURE
read SURE
if [ "$SURE" = "yes" ]; then
stop
rm -f "$PIDFILE"
echo "Notice: log file is not be removed: '$LOGFILE'" >&2
update-rc.d -f <NAME> remove
rm -fv "$0"
fi
}
case "$1" in
start)
start
;;
stop)
stop
;;
uninstall)
uninstall
;;
retart)
stop
start
;;
*)
echo "Usage: $0 {start|stop|restart|uninstall}"
esac
コピーと呼ばinit.dディレクトリサービスの一例ですあなたのサービスとインストールサービスは起動時に実行されます:
service coolserver start
service coolserver stop
update-rc.d coolserver defaults
。それは問題です、CentOS 6.8はsystemdを持っていません。 あなたの 'systemctl'コードは動作しません。 –
今はどうですか?@AliCoder? – CESCO
はい、それは 'update-rc.d coolserver defaults'が私に' update-rc.dコマンドが見つかりません 'という問題を持っています。どうすれば '--auth'のようなパラメータを入れることができますか?user:password" ' –
あなたはApache Webサーバーを使用しようとしたと仮定します。実際には、Go Webサーバーで十分です。主な目的は、システムサービスでGo Webサーバーを実行することです。tmuxhttps://tmux.github.io/またはnohupをシステムサービスとして実行することができます。また、Apacheまたはnginx Webサーバーをプロキシとして使用することもできます。
私はhttpdを例として挙げましたが、もちろんGoウェブサーバーで十分です。 私が必要とするのは、centos 6のサービスファイルを作成してアプリケーションを実行することです。 https://github.com/jpillora/cloud-torrent/wiki/Installationのようなものですが、centos 6ではsystemdがないためです。 –
- 1. Goアプリケーションをローカルで実行できますか?
- 2. goアプリケーションはローカルで正常に動作し、goappサービスを実行すると404が生成されます
- 3. Goでシェル/ Bashを実行
- 4. GO:パイプでコマンドを実行する
- 5. サービスでアプリケーションが実行されない
- 6. JavaアプリケーションをWindowsサービスとして実行
- 7. ルートプロジェクトフォルダからgoテストを実行する
- 8. Goバイナリを実行するには?
- 9. iOS:バックグラウンドでサービスとしてアプリケーションを実行する
- 10. iosアプリケーションでmobilefirstサービスを実装する
- 11. Go環境なしでgoプログラムを実行
- 12. アプリケーション終了後のサービスの実行
- 13. golangで "go test"を実行しないでベンチマークを実行する
- 14. 実行時のGoアプリケーションの値の設定
- 15. AndroidのサービスとしてPhonegapアプリケーションを実行する
- 16. アプリケーションをWindowsサービスとして実行する
- 17. アプリケーションでのバンドル登録中にサービス上でアクションを実行
- 18. ApacheでGo Webアプリケーションを展開する
- 19. UbuntuサーバーでNode.jsアプリケーションを実行する 'サービス'を作成する方法
- 20. Go lang:異なるプロセスでルーチンを実行する
- 21. コンソールでWindowsサービスを実行する
- 22. Android - サービスでrepititveタスクを実行する
- 23. iPhone:バックグラウンドでサービスを実行する
- 24. Windowsサービスでバッチファイルを実行する
- 25. GPSサービスをバックグラウンドで実行する(Android)
- 26. nginxでGo HTTPサーバーを実行するには
- 27. クライアントマシンでGoファイルを実行するには?
- 28. コマンドプロンプトでGO言語のgodocを実行する
- 29. GoでSOAPコールを実行するには?
- 30. GOでHEADリクエストを実行するには?
これはあなたを手助けするはずです:http://unix.stackexchange.com/questions/236084/how-do-i-create-a-service-for-a-shell-script-so-i-can-start-and -stop-it-like-ad – AJPennster
ゴランアプリはウェブアプリまたはシステムアプリを意味しますか? –
@KyawMyintThein web app –