Go言語をCentOS7+Apache環境で動かす(Revel編)

どーもcv0629です。最近Go言語の勉強をはじめました。

なぜ始めたかというと、どうも最近流行ってるらしいからです。

っては置いといて、僕みたいなPHPしかやってない動的言語なフリーランスはいずれ駆逐されると思ってるので、幅を広げたいわけです。では始めましょう。

構築環境の前提条件はこちら

  1. CentOS Linux release 7.3
  2. Apache/2.4.6
  3. Virtualhostは設定済み

※今回Webアプリケーションとしてよくある構成で作ることを目的としました。最適な方法としてはまだ模索段階です。

Goのインストール(yum)

もちろんソースからインストールすることもできます。

が、今回はさらっとインストールしたいのでyumコマンドを利用しました。

$ sudo yum install -y epel-release
$ sudo yum install -y --enablerepo=epel golang
$ go version
go version go1.7.4 linux/amd64

GOPATHについて

これGOPATHについては、まだ僕も完全に理解してないのですが、僕は/etc/profileに書いてます。

$ sudo cat /etc/profile

##中略##

export GOROOT="/usr/lib/golang"
export GOPATH="/var/www/golang"
export PATH="$PATH:$GOPATH/bin"

yumでインストールするとGOROOTは/usr/lib/golang配下になるので注意。

GOPATHはGo言語のアプリケーションが置かれる場所ですね。

んで反映

$ sudo source /etc/profile

Revelのインストール

この辺りは参考にできるサイトも多いです。

参考:Golangのrevelをインストールしてみる

インストール

$ go get github.com/revel/revel
$ go get github.com/revel/cmd/revel

たったこれだけだなんて恐ろしい。実行すると先程/etc/profileに設定したPATH配下にrevelがインストールされます。

テストアプリの作成

$ revel new revelTest

これを実行するとGOPATH配下でsrc/revelTestというフォルダが作成されます。

Revelのサーバで確認

$ revel run revelTest

これで作成したアプリを起動させてブラウザでアクセスします。

http://localhost:9000

localhostの部分は皆さんの環境に合わせてください。必要なのは9000番ポートを付与することです。

で初期画面がこちら。

目痛くね?

 

ついでだがRevelにはプロダクションモードもある

$ revel run revelTest prod

Apacheの設定

さてブラウザで確認できましたので、これでGo言語、Revelデビューを果たせたのですが、いかんせん

9000番ポート付いてるのダサくね??

これに限りますね。では始めましょう。すでにApacheとVirtualhostの設定は出来てるもので進めます。

VirtualHostの内容

<VirtualHost *:80>
    ProxyRequests Off
    ProxyPass / http://127.0.0.1:9000/
    ProxyPassReverse / http://127.0.0.1:9000/
    DocumentRoot /var/www/golang/src/revelTest/public
    AllowEncodedSlashes On
</VirtualHost>

Virtualhostで80番ポートへのアクセスを9000番へ流す設定を入れてます。

変更したらApacheは再起動。

正直ここに行き着くのが長かった。ホントにApacheへこんなプロキシの設定入れなきゃいけないのかと思ってる。

が、現状はこれが最適なのかなーと。

この辺りはまだまだ勉強ですね。

最後に

が、しかし後日談あるのはまた別の話。

まぁ速攻で買いましたわ。