GCEでstaging環境を作ったのでめも

※ 自分用

## GCEでサーバーを立てる
<img src="https://qiita-image-store.s3.amazonaws.com/0/117667/22983c2c-4e99-97b2-bafe-13e5bf4e6c3f.png" width=50%>

### 前提環境

```
RoR アプリケーション
Jsでwebpackを利用している
ディスクのOSイメージをCentOS6にしている
```

### 前提知識
以下のワードの理解があると望ましい

```
sudo chown chmod ssh
gcloud vmインスタンス
npm yarn webpack webpack-dev-server
webpacker nginx unicorn
```

### 結論

```
新規ユーザーを作り、yum,node,rbenv,rubyで積む。
sshでgithubと繋げるようにし、nginx,unicornの設定をする。
mysqlを入れ直し、db作りマイグレートする。
.env内容やmy.cnfを/etc配下にそれぞれ設定する
(getenforceをdisabledにしたりする)
npmでyarnを入れ、webpackerでcompileする
unicorn, nginxを再起動しデプロイdone
```

### コマンド一覧

```
※ user->hoge, directory->fuga, nginxの設定->piyo.confはそれぞれコンテキストに依存する
※ mkdir, cd, sudoなど細かいことはあまり気にしてない
```

```shell

1	sudo adduser hoge
2	sudo passwd hoge
3	sudo visudo #ALL以下に追記
4	sudo su - hoge
5	sudo yum install \
    git make gcc-c++ patch \
    libyaml-devel libffi-devel libicu-devel \
    zlib-devel readline-devel mysql-server mysql-devel  -y
6	sudo curl -sL https://rpm.nodesource.com/setup_6.x | sudo bash -
7	sudo yum install -y nodejs
8	git clone https://github.com/sstephenson/rbenv.git ~/.rbenv
9	echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
10	echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
11	git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
12	rbenv rehash
13	source ~/.bash_profile
14	sudo yum -y install bzip2
15	rbenv install -v 2.4.1
16	rbenv global 2.4.1
17	rbenv rehash
18	source ~/.bash_profile
19	vim .gitconfig #github情報を入れる
20	cd .ssh/ | ssh-keygen -t rsa #githubにpub鍵を登録する
21	vim config #gihtub情報を入れる
22	chmod 600 config
23	ssh -T github
24	sudo chown -R hoge /var/www/
25	git clone git@github.com:hogehoge/fuga.git
26	sudo vi /etc/selinux/config
27	sudo reboot
28	sudo yum install nginx
29	sudo vi /etc/nginx/conf.d/piyo.conf
30	sudo chmod -R 775 /var/lib/nginx
31	gem install bundler
32	bundle install
33	sudo yum remove mysql*
34	sudo yum install http://dev.mysql.com/get/mysql-community-release-el6-5.noarch.rpm
35	sudo yum install mysql-client mysql-server
36	sudo /etc/init.d/mysqld start
37	sudo mysql -uroot -p
    mysql> GRANT ALL PRIVILEGES ON *.* TO ''@'localhost';
38	sudo /sbin/service mysqld restart
39	bundle exec gem uninstall mysql2
40	sudo yum install mysql-devel
41	bundle install
42	bundle exec rake db:create RAILS_ENV=staging
43	sudo vim /etc/my.cnf
44	sudo /sbin/service mysqld restart
45	source /etc/environment
46	RAILS_ENV=staging bundle exec ridgepole -c config/database.yml -E staging --apply -f db/schemas/Schemafile
47	sudo npm install --global yarn
48	yarn install
49	bundle exec rails webpacker:compile NODE_ENV=staging
50	bundle exec unicorn_rails -c /var/www/fuga/config/unicorn.conf.rb -D -E staging
51	sudo /sbin/service nginx restart
```

```
あとは状況に応じて以下のコマンドを打つ(yarnやridgepoleを打たなくていい時も当然ある)
上記面倒なので、capistranoあたりを入れ、最終的にslackのprivate chから誰でもコマンドでデプロイできるようにしておく
```

```shell
1	gcloud compute --project "hoge-fuga-piyo" ssh --zone "asia-northeast1-a" "hoge-staging"
2	sudo su - hoge
3	cd /var/www/fuga/
4	sudo chown -R hoge /var/www #複数人でgceをさわっている場合
5	git pull origin master
6	sudo kill -QUIT `cat tmp/pids/unicorn.pid`
7	yarn install
8	NODE_ENV=staging bundle exec rails webpacker:compile
9	RAILS_ENV=staging bundle exec ridgepole -c config/database.yml -E staging --apply -f db/schemas/Schemafile
10	bundle exec unicorn_rails -c /var/www/fuga/config/unicorn.conf.rb -D -E staging
11	sudo /sbin/service nginx restart
```


※ 地味にrack-dev-markが良い