今後、一部のサービスと統合される組み込みデバイスを開発しています。このデバイスには、特定のユースケースに限定された機能セットとカスタムモジュールがあります。このデバイスはARMアーキテクチャに基づいており、修正されたDebianバージョンを実行します。ネットワークと主要な構成設定を行うには、小さなWebサービスを作成する必要があります。安全で軽くなければなりません。私は軽量Webサーバー(lighttpdなど)と言語(Pythonなど)を混在させてテストし、プロトタイプが機能するようにしました。初期段階で構成をプッシュしたクライアントと統合できる機能的なWebサービスが必要です。私の関心事は、これが軽い場合でも、それを構成するためにデバイスへの高レベルのアクセス権を持つデバイスに完全な機能を備えたWebサーバーを展開する必要がないことです。設定後にこのプロセスを無効にしても
完全なWebサーバーを保持することに加えて、小さなREST APIを保持する方法はありますか?私はRestbed C ++ Rest APIをテストしました。これはPythonベースの複雑なサーバーレスWebサービスです。しかし、私もPythonを配布したくありません。このサービスは10未満のパラメータのみをクライアントに送信するため、これはやや過度のレベルです。デーモンなどのサービスなしでこれを達成するための安全な方法はありますか?
答え1
質問が多少曖昧で議論の余地がありますが、質問を投げてみましょう。ゴラン標準ライブラリには非常に使いやすいサーバーパッケージがあります。これはCと非常によく似ており、ほとんどすべてのプラットフォームとアーキテクチャでデフォルトの実行可能ファイルにコンパイルされ、以下のように数行で非常に単純なWebサーバーをホストできます。
package main
import (
"fmt"
"log"
"net/http"
)
func handler(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hi there, I love %s!", r.URL.Path[1:])
}
func main() {
http.HandleFunc("/", handler)
log.Fatal(http.ListenAndServe(":8080", nil))
}
セキュリティが必要な場合は、自己署名証明書を生成してTLSを簡単に設定し、http.ListenAndServeを次のように置き換えます。err := http.ListenAndServeTLS(":10443", "cert.pem", "key.pem", nil)
とても軽くてどこでも簡単に走れます。 Eliがコメントできちんと指摘したように、クロスコンパイルも実行するのは非常に簡単です。つまり、組み込みデバイスにすばやく構築して展開できるという意味です。