#Golang プログラムをサーバーにデプロイする方法
環境
開発環境: mac本番環境: virtualbox 上の CentOS 6.8 (仮想マシン) virtualbox
サーバー環境
プロセス
go のコードpackage main import ( "fmt" "log" "net/http" ) func sayHello(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w,"您看到我了") } func main() { http.HandleFunc("/",sayHello) log.Println("启动了") err := http.ListenAndServe(":9000",nil) if err != nil{ log.Fatal("List 9000") } }以上です。コードの意味については詳しく説明しません。 コードは書かれたので、コンパイルする必要があります。コードは Linux で実行するために Mac 環境からコンパイルされるため、すべてにクロスプラットフォーム コンパイルが含まれます。 コンパイル コード コマンド
env GOOS=linux GOARCH=386 go build main.goPS: 386 ここに大きな穴があります。ここが、このパッケージ化されたプログラムを実行するためのプラットフォームです。 Linux の場合は、uname -a を使用して、実行している Linux システム環境を確認する必要があります。一般的な環境には通常、amd64、i386 などが含まれます。 OK、コンパイルが完了すると、メインの実行可能ファイルがサフィックスなしで生成されます。現時点では、このファイルを仮想マシンにアップロードして直接実行するだけです。 直接実行実行後に上記の効果が表示された場合は、実行中であることを意味します。このとき、ブラウザを開いてサーバーの IP:9000 にアクセスすると、次のような内容が表示されます。 #ブラウザの画像 #そうです。とてもシンプルです。今日が初めてのデプロイメントで、とても驚いています。言語環境は必要ありません。たとえば、Java プログラムの場合はサーバーに Java をインストールする必要があり、php の場合は Apache、PHP などをインストールする必要があります。 Go には何も必要ありません。Linux システムは 1 つだけで十分です。それを放り込むだけです。
その時に遭遇した落とし穴は次のとおりです
1. バイナリファイルが実行できないと表示される
バイナリ ファイルを実行できませんこの理由は、コンパイルの実行環境が間違っているためです。つまり、上記の 386 を実行しているサーバーの環境に置き換える必要があります。 uname -a チェックを使用できます。
2. 実行はできますが、アクセスできません
この問題は通常、サーバーのファイアウォールまたはネットワークの問題が原因で発生します。 サーバーのファイアウォール サービス iptables stop を単純かつ失礼に無効にして、アクセスできるかどうかを確認できますが、実際の運用環境では、ファイアウォールを無効にすることはお勧めできません。 実際のオンライン運用を展開する場合は、セキュリティやプロセス保護などが必ず必要になります。この記事は展開についての単なる紹介であり、これについては説明しません。 Go 言語の知識について詳しくは、PHP 中国語 Web サイトのgo 言語チュートリアル 列に注目してください。
以上がgolang をサーバーにデプロイするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。