Shunlab

3流インフラエンジニアが、そろそろもう一個上に上がりたいなと思い立ち上げたブログ、最近はPythonとPHPを勉強中

MacにGoプロジェクトの開発環境を準備する

どうもお久しぶりです。 全然ブログを書かないまま3年位経ちました。経ちすぎですね。。。

今回APIサーバーをGoで開発したいと思ったので開発環境を準備したのでメモをとっておきます。

1. MacにGVMをインストール

元々Homebrewは使っていたのでhomebrew等のインストール方法は省略します。

$ brew update
$ brew install mercurial

gvmのインストール

$ bash < <(curl -s -S -L https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer)

インストールがおわると下記を実行しろって表示されるので実行

$ source /Users/${user}/.gvm/source/scripts/gvm

インストールを確認

$ gvm version
Go Version Manager v1.0.22 installed at /Users/user/.gvm

2. GVMを使ってGoをインストール

# インストールできるGoのバージョンを確認
$ gvm listall

gvm gos (available)

   go1
   go1.0.1
   go1.0.2
   go1.0.3
   go1.1
   go1.1.1
   go1.1.2
   go1.10
   .
   .
   .
   go1.9.7
   go1.9beta1
   go1.9beta2
   go1.9rc1
   go1.9rc2
   release.r56
   release.r57

# Goをインストール
$ gvm install go1.9.7

Goの1.9.7をインストールをしようとした時にエラーがでる

#### Building Go bootstrap tool.
cmd/dist
ERROR: Cannot find /Users/user/go1.4/bin/go
Set $GOROOT_BOOTSTRAP to a working Go tree >= 1.4
./make.bash: line 121: /Users/user/go1.4/bin/go: No such file on directory

なんで1.4なのか MacOS Sierraでgvmを使ってGo 1.8をセットアップ なんか1.5+をBuildするために1.4を使っているらしいんじゃ最初に1.4をいれとけばいいのかと思って

# Go1.4をインストール
$ gvm install go1.4

また別ので怒られた

# Building C bootstrap tool.
cmd/dist

# Building compilers and Go bootstrap tool for host, darwin/amd64.
lib9
libbio
liblink
cmd/cc
cmd/gc
cmd/6l
/Users/user/.gvm/gos/go1.4/src/cmd/6l/../ld/dwarf.c:1472:15: error: implicit conversion from 'int' to 'char' changes value from 156 to -100 [-Werror,-Wconstant-conversion]
/Users/user/.gvm/gos/go1.4/src/cmd/6l/../ld/dwarf.c:1756:21: error: implicit conversion from 'int' to 'char' changes value from 144 to -112 [-Werror,-Wconstant-conversion]
/Users/user/.gvm/gos/go1.4/src/cmd/6l/../ld/lib.h:168:13: note: expanded from macro 'cput'
go tool dist: FAILED: clang -Wall -Wstrict-prototypes -Wextra -Wunused -Wno-sign-compare -Wno-missing-braces -Wno-parentheses -Wno-unknown-pragmas -Wno-switch -Wno-comment -Wno-missing-field-initializers -Werror -fno-common -ggdb -pipe -Wuninitialized -O2 -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -mmacosx-version-min=10.6 -c -m64 -I /Users/user/.gvm/gos/go1.4/include -I /Users/user/.gvm/gos/go1.4/src/cmd/6l -o /Users/user/.gvm/gos/go1.4/pkg/obj/cmd/6l/dwarf.o /Users/user/.gvm/gos/go1.4/src/cmd/6l/../ld/dwarf.c

もうよくわからない..... 色々調べてたらなんか同じようなので記事を見つけてGo1.4のバイナリーを持ってきて指定してやればインストールできそう。 なので下記を実行(記事の方はDockerからGoのバイナリーを持ってきてましたが-Bをつけてgvm管理下にバイナリーをおけるので僕はそっちを選択)

gvm install go1.8 -B
# zshrcにGOROOT_BOOTSTRAPにgvmで持ってきたバイナリーファイルの設置場所を指定する
export GOROOT_BOOTSTRAP=$GVM_ROOT/gos/go1.8

指定したら1.9.7をインストール

gvm install go1.9.7
Installing go1.9.7...
 * Compiling...
go1.9.7 successfully installed!

入った!

良かったこれで開発ができるIDEとかGoglandを使ってみようかとおもいます。 プロジェクト毎にGOPATHを設定できるらしいのでちょっと無料期間で試してみてよかったら使ってみます。 それではまた!

CentOS6にredisインストールをしてみる

新年あけましておめでとうございます。

はじめましてshunlabと言います。

この度初ブログを開設してみました。

(開設してからなにもしないまま年明けちゃいましたが・・

最初の記事に何を書こうかと内容を考えていたけど、

考えているよりもまずは何か書かなきゃ始まらないなと思って現在キーボードを叩いてます。

挨拶はここまでにして、とりあえずタイトルの内容に移りたいと思います。

今仕事でfluentを使ったログ収集システムの構築を行っており、

ログのストレージにredisを使用する機会があるかもしれないので空いた時間でredisを調べ それについてまとめておきたいと思います。

redisダウンロード

$ wget http://download.redis.io/releases/redis-2.8.19.tar.gz
$ tar xzf redis-2.8.19.tar.gz
$ cd redis-2.8.19

Download – Redis

redisインストール

$ make test

"make test"を実行した時にエラーがでた

You need 'tclsh8.5' in order to run the Redis test

自分の環境には"tclsh"のパッケージが無いみたいなのでインストールする。

yum install tcl

そして再度

$ make test
$ make
$ make install

redis.confと起動スクリプトのコピー

redisのソースの中に準備されているconfがあるのでそれをコピー

$ mkdir /etc/redis/
$ cp redis-2.8.19/redis.conf /etc/redis.conf
$ cp -pi redis-2.8.19/utils/redis_init_script /etc/init.d/

redis.confの編集

daemonize no
↓
daemonize yes

#bind 127.0.0.1
bind 127.0.0.1

logfile ""
↓
logfile /var/log/redis.log

dir ./
↓
dir /var/redis/dump/

redis-server起動

service redis start

プロセス確認

$ ps uaxwwf | grep redis
root      5949  0.0  0.0 103244   828 pts/1    S+   01:36   0:00                          \_ grep redis
root      5751  0.2  0.3 137372  7528 ?        Ssl  Jan04   0:18 /usr/local/bin/redis-server 127.0.0.1:6379

redis-cliを使用してredis-serverに接続

$ redis-cli
127.0.0.1:6379>

redisをちょっと使ってみる

127.0.0.1:6379>set name shunlab
OK
127.0.0.1:6379>get name
"shunlab"

以上です。 これからデータを入れたり削除したりして検証していきたいと思います!

それではまた!

参考リンク

Download – Redis

Redisのインストールとちょっと使ったメモなど | シーズクリエイターズブログ