golang revelフレームワークをnginxで動かす!
さくらで借りてるサーバがCentOSなんですが、そこでnginx + golangのフレームワーク revelフレームワークを使っていろいろ作業をして何とか動かせたので残しておきます。
revelフレームワークを入れる
golangの設定は以前お話しましたね。umegusa.hatenablog.jp
で、revelフレームワークのお話もしました。umegusa.hatenablog.jp
# cat /etc/redhat-release CentOS release 6.6 (Final)
それでも詰まったので書きます。。。
※ 下記はrootで行ってください
revelフレームワークを入れる
Welcome to Revel, the Web Framework for Go!
ここです。よく見るとgolang v1.3以上というお話。
自分の環境は1.2.2だったのでアップデートします。
アップデートするには既存の/usr/local/go を削除して書き込む必要があるみたいです・・・
ということで既存のgolangを削除、golangの1.4をダウンロードし、解凍してもろもろ設定しました。
Go言語のインストール - golang.jp
# rm -r /usr/local/go # wget https://storage.googleapis.com/golang/go1.4.2.linux-amd64.tar.gz # tar -C /usr/local/go -xzf go1.4.2.linux-amd64.tar.gz
新しくなったところでrevelフレームワークをインストールします。
# go get github.com/revel/revel
全く動きません。。。。
verboseコマンド付けてみてみます
# go get -v github.com/revel/revel github.com/robfig/config (download) github.com/robfig/pathtree (download) Fetching https://gopkg.in/fsnotify.v1?go-get=1 Parsing meta tags from https://gopkg.in/fsnotify.v1?go-get=1 (status code 200) get "gopkg.in/fsnotify.v1": found meta tag main.metaImport{Prefix:"gopkg.in/fsnotify.v1", VCS:"git", RepoRoot:"https://gopkg.in/fsnotify.v1"} at https://gopkg.in/fsnotify.v1?go-get=1 gopkg.in/fsnotify.v1 (download)
ここで止まります。
なんかgopkg.in/fsnotify.v1 がダウンロードできないみたいですね。
いろいろ調べていたらgitのバージョンがふるいっぽいです。
下記を参考にさせていただきました。
revel入れたいのにgo getが進まなかった - Qiita
# git clone https://gopkg.in/fsnotify.v1
これで動かないので・・・
ということでgitのバージョンをあげます。
標準のgitのバージョンは1.7.1でした。
# git --version git version 1.7.1
gitをアンインストールしてから必要なパッケージを取得します。
gitをインストールするのに必要なパッケージは下記の通りです。
curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-ExtUtils-MakeMaker
ということで削除から設定まで一気にやってしまいましょう!
こちらを参考にさせていただきました。
CentOS 6.5, yum でインストールした Git を 1.7.1 から 2.2.0 にバージョンアップする (※Git2.2.1,2.3.2版もあり) - Qiita
# yum remove git # yum -y install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-ExtUtils-MakeMaker # wget https://www.kernel.org/pub/software/scm/git/git-2.3.2.tar.gz # tar -zxf git-2.3.2.tar.gz # cd git-2.3.2 # make prefix=/usr/local all # make prefix=/usr/local install # export PATH=/usr/local/bin/git:$PATH # git --version git version 2.3.2
gitのバージョンは最新になりました。
もう一回入れてみると、今度は1.2.2のバージョンのものが適用されているようで、うまくインストールできませんでした。
# github.com/revel/revel go/src/github.com/revel/revel/revel.go:4: import /root/go/pkg/linux_amd64/github.com/agtorre/gocolorize.a: object is [linux amd64 go1.2.2 X:none] expected [linux amd64 go1.4.2 X:precisestack]
ということで$GOPATH/src/github.com/revel を削除してもう一回インストール
# go get github.com/revel/revel # go get github.com/revel/cmd/revel
これにて無事インストール完了です・・・・
revelフレームワークでアプリケーションを作成する
いつものやつ
# revel new AppName
作成されたAppNameのapp.confのhttp.portは9000番を指定してください。(デフォルトは9000番)
あとは起動してサーバからアクセスするだけです。
# revel run AppName
アクセスするとrevelフレームワークのアプリケーションが起動するはずです。
ついでにいれたmysqlのメモ
完全にメモ。mysqlを入れたときのメモです。
# yum -y install mysql-server mysql
mysql入れたときにutf-8にするための設定を記述します。
/etc/my.cnf に下記の設定を入れます。
[mysqld] character_set_server = utf8 collation_server = utf8_general_ci [mysql] #no-auto-rehash # faster start of mysql but no tab completition default-character-set=utf8
んでmysql-serverをスタート。ついでに起動したときに開始するような処理も入れます。
# /etc/init.d/mysqld start # chkconfig mysqld on
おしまい!
終わりに
revelフレームワークだけじゃなくて他のアプリケーションをnginxで動かす場合にも使えそうですね、リバースプロキシの設定。
今ってどういうのが主流なんだろ?他にあったら教えていただきたいです!