Nginx + Golang でWebアプリケーション開発を試してみた
NginxとGolangを使ってWebアプリケーションを作成してみたい!
とかそんなことを思い立ったのでチャレンジしてみました。
実行環境
OSのバージョンは下記の通りです。
サーバはサクラVPS借りてやってます。
# cat /etc/system-release CentOS release 6.6 (Final)
CentOS 6.6ですね。
Nginxのインストール
yumを使ってインストールします。
# yum install nginx
ここで落ちてきたのがバージョンが低いものでした。
ですのでアップデートします。
まずはnginx用リポジトリを作成します。
# vi /etc/yum.repo.d/nginx.repo
内容は下記のようになります。
nginx.repo
[nginx] name=nginx repo baseurl=http://nginx.org/packages/rhel/$releasever/$basearch/ gpgcheck=0 enabled=1
そしてアップデートします。
# yum update
最後にPATHを通しておきます。
.bashrcなどに書いておくといいかもしれません。
# export PATH=$PATH:/usr/local/nginx/sbin
Nginxのインストールは以上で完了です。
Nginxの設定
NginxでWebサーバの設定を行う
続いて設定を行います。
以前はApacheで動いていたのでごっちゃにならないように設定します。
まずサーバ起動時にNginxが立ち上がるようにします。
Apacheも同様の設定をしていたので、そちらの設定は解除するような形になりますね。
# chkconfig httpd off # chkconfig nginx on
完了したら今度はNginxを起動します。
# service nginx start
okが出たらアクセスしてみましょう。
画像のようにWelcome to Nginx!というページが出てくるはずです。
ページが表示されればOKです。
Golangが動くように設定を行う
yumでインストールすると
/etc/nginx/
の中にconfigファイルが量産されてるはずです。
serverの設定を下記のように書き換えます。
# vi /etc/nginx/conf.d/default.conf
一番簡易的な設定は下記のとおりになるのかな?
default.conf
server { listen 80; server_name hostname; location / { fastcgi_pass 127.0.0.1:9000; include fastcgi_params; } }
hostnameは自分のサーバのホストになります。
以上でNginx側の設定は完了です。
Golangのインストール
ダウンロードは下記ページでできます。
Downloads - The Go Programming Language
# wget https://storage.googleapis.com/golang/go1.2.2.linux-amd64.tar.gz # tar -C /usr/local -xzf go1.2.2.linux-amd64.tar.gz
インストールが完了したらPATHを通します。
こちらも.bashrcに書いておくと問題ないかもしれません。
export GOROOT=/usr/local/go export PATH=$PATH:/usr/local/go/bin
最後に実行できるか確認してみましょう。
# go -V
golangのバージョンなどが表示されていれば問題なくインストールされています。
GoでWebアプリケーションを作成する
今回はチュートリアルをほぼそのまま流用したものを使用して記述してみます。
index.go
package main import ( "fmt" "net" "net/http" "net/http/fcgi" ) func handler(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "Hi there, I love %s!", r.URL.Path[1:]) } func main() { l, err := net.Listen("tcp", "127.0.0.1:9000") if err != nil { return } http.HandleFunc("/", handler) fcgi.Serve(l, nil) }
tcpソケットでListenして終わりです。
ポート番号などNginxで設定したものとあわせてください。
Webアプリケーションを実行する
今回は /var/golang/ 下に作成したプログラムを格納しました。(多分どこでも大丈夫だと思います)
作成したプログラムを実行します。
# cd /var/golang/ # go run index.go
もしくは
# cd /var/golang/ # go build index.go # ./index
で実行できます。
あとはプログラムで設定したURLにアクセスして、
表示されれば完了になります。
バックグラウンドで実行しておく
実行コマンドの後に & をつけることでバックグラウンドで実行されるようになります。
# ./index &
プロセスを殺すときはkillコマンドを実行しましょう。
# jobs # kill %job_number
以上です。