LinuxでVMを立てる時に、最近ではもっぱらCentOS7です。
そこで、Google Compute EngineでLinux CentOS7を立てて、必要なものを初期インストールし設定し、Golangを稼働させるまでの流れを備忘録として記録します。

目次

CentOS7に初期インストールし設定する

前提

  • CentOS7
  • wget
  • lsof
  • shasum
  • nginxとconf設定
  • git
  • ssh用keygen
  • Golang
  • Golang用.bash_profile設定
  • マシンの時間設定

GCEにインスタンスを立て、sshで接続

$ sudo su
$ vi ~/.bash_profile

Golang用.bash_profileを書いちゃう

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
       . ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/bin
export PATH
export PATH=$PATH:/usr/local/go/bin
export GOPATH=$HOME/go_projects
export GOBIN=$GOPATH/bin
export GOROOT=/usr/local/go
# /usr/local/go/bin/go

必要なものをインストール

$ yum -y install lsof git nginx wget perl-Digest-SHA

lsof: ポート稼働状況などを見る git: バージョン管理する wget: ウェブアクセスする(ダウンロードなども) perl-Digest-SHA: shasumでhash計算する

nginx インストール

// CentOS EPELパッケージに
$ yum install epel-release
// 最新版nginxをインストール
yum install nginx

nginx を起動

// service start nginx はCentOS7では動かないのでシステムコントロールから起動
$ systemctl start nginx.service

nginx configはどこ?

/etc/nginx/nginx.conf にあります。

nginx config 設定適用

server {
    listen       80;
    listen       [::]:80;
    server_name domain.name;


    location / {
            proxy_pass http://127.0.0.1:8000;
            root /root/go_projects/src/dir;
            index index.html index.htm;
    }
  }
// ここでも service restart(reload) nginx は動かないので、システムコントロールから
$ systemctl reload nginx.service

Golangダウンロード用のディレクトリ作成

$ mkdir /download && cd /download

Golangダウンロード

$ wget -c https://storage.googleapis.com/golang/go1.9.2.linux-amd64.tar.gz

Golang解凍

$ shasum -a 256 go1.9.2.linux-amd64.tar.gz
$ tar -C /usr/local -xvzf go1.9.2.linux-amd64.tar.gz

Golang用ワークスペース

$ mkdir -p ~/go_projects/{bin,src,pkg}

Golang用ワークスペースへ移動

$ cd ~/go_projects/src

git用のSSH keyを作成

$ ssh-keygen -t rsa -C "メアドとか" -b 4096
$ vi /root/.ssh/id_rsa.pub してコピーなど

CentOS7用Timezone指定

$ timedatectl set-timezone Asia/Tokyo

SElinuxの問題?

root権限を奪取された際の危険性を考え、各プロセスが最小限の権限で動くように設計されているCentOS7ならではでしょうか。
他のLinuxでは打ったことのないコマンド…

だからこそ、ハマっていた…おおよそ8時間無駄にした…

$ setenforce Permissive

解決!!

サクッとGolangが動く環境が出来ました!

CentOS7最高かよ!!