GCP環境にCent OS7のVM作成してSSH接続 + Nginxインストールするまでのお話し

# はじめに
諸事情によりGCP環境を使うことになりそうなので、サーバーサイドなんか全然触ったことの無かったPHPerが
なんとかVM立ち上げてNginxインストールできたよ！ついでにSSHクライアントでもログインできるようにしたよ！

…っていうだけのお話しです。
メモっておかないとせっかくの知識を右から左へ受け流しそうなので自分用のメモも兼ねてです。

# GCP(Google Cloud Platform)上にVMを立ち上げる
Google Cloud PlatformとはAmazonが提供しているAWSと同様、Googleが提供しているPaaSです。
つまり凄いサービスです。
あんまり詳しくないので割愛します。~~私の学の無さがバレるよ！~~

GCPのサービスの1つとしてGCE(Google Compute Engine)というものがあり、今回はこれを利用してVM環境を作成します。

…って説明であってるかどうか不安ですが…

https://cloud.google.com/
こちらからGCPへの登録などを行います。今回はこの辺も割愛。

無事に登録が終わるとGCPのホーム画面へ遷移します。

![ホーム - gcpbeginner-project01.png](https://qiita-image-store.s3.amazonaws.com/0/62478/a21865b5-161f-34f9-a40c-16d36bfde080.png)

左上にハンバーガーメニュー（縦三本線のやつ）があるのでクリックして、「Compute Engine」をクリック。
画面の指示にしたがってVMを作成していきます。（スクリーンショット撮り忘れた…）
今回はマシンタイプを最小の「micro」、ブートディスクは「CentOS 7」にしました。
また、ファイアウォールの「HTTPトラフィックを許可する」、「HTTPSトラフィックを許可する」にチェックを入れておきます。
ゾーンはテストで使用するならどこでもいいとは思いますがわざわざ遠いところに作成するメリットもないのでasiaを選択しておけばいいかと思います。（スクショだとデフォルトになってるけど）

![Compute Engine - gcpbeginner-project01.png](https://qiita-image-store.s3.amazonaws.com/0/62478/196f002d-7220-3b8e-83b7-7a39a91069bb.png)

設定が完了したら「作成」ボタンを押すだけでVMの作成は完了です。
しばらく待つと作成したVMのIPなどが確認できるようになるかと思います。

![３Compute Engine - gcpbeginner-project01.png](https://qiita-image-store.s3.amazonaws.com/0/62478/429991a8-ecb3-c191-ffe0-0878aecb855c.png)

Magentoのテストも兼ねているため、名前は「magentotest」としました。
外部IPの右隣にある「SSH」というリンクをクリックするとブラウザ画面でコンソールが立ち上がり、普通にCUIでVMの操作ができるようになります。（ちょっとこれは感動しました！）
ですが、動作がもっさりしていてあくまで簡易確認用だと思います。やはり使い慣れたクライアントソフトを使いたい！
ということでSSHの設定をすることに。

# 任意のクライアントソフトでSSH接続できるようにする

今回私が使用したのは、RSA鍵生成にPuTTYgen、ターミナルソフトにRLoginです。
PuTTYgen : http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
RLogin : http://nanno.dip.jp/softlib/man/rlogin/

まずはPuTTYgenを使用してRSA鍵を生成します。
「Generate」ボタンを押すと鍵生成を始めるので、Keyという枠内でマウスをぐりぐりしてください。
この動作により鍵の内容が決まるようです。くれぐれも皆様は私のように「ミクさんマジ天使」などとマウスの軌跡で描かないようにしてください。
![4.png](https://qiita-image-store.s3.amazonaws.com/0/62478/2bcb8e4e-6525-7ae4-1d0b-6d51ef791ddd.png)

鍵が生成できたら以下のような画面になりますので、Key commentの箇所を「root」に変更してください。
公開鍵はスクショ用に作成したので隠さなくても大丈夫だろうけどまぁ一応…。。
![5.png](https://qiita-image-store.s3.amazonaws.com/0/62478/459f6107-4428-43d8-79a8-d8625d92b6a7.png)

変更したら、Public key for pasting into～の内容（黒く塗りつぶしてある部分）をすべてコピーして、GCEの管理画面に戻ります。
左側メニューの「メタデータ」をクリックし、「SSHキー」タブをクリックすると現在のSSHキーの設定が表示されるので、「編集」ボタンを押してさきほどコピーした内容をペーストしてください。
追加が完了するとユーザー名rootでキーが設定されるかと思います。
![６.png](https://qiita-image-store.s3.amazonaws.com/0/62478/8311f04f-707e-e2b1-aecd-e75ba0e04473.png)

これで公開鍵の設定は完了。

もう一度Puttygenに戻り、今度は秘密鍵を作成します。
Save private Keyというボタンがあるので、クリックして秘密鍵を適当なディレクトリに保存してください。
![7.png](https://qiita-image-store.s3.amazonaws.com/0/62478/ba904f9a-b4ee-b7fa-9f6f-cd3571e4fc29.png)

これで秘密鍵の準備は完了です。
次はVMへSSHでログイン可能になるよう設定します。

参考にさせて頂いたサイトはこちらです。
【CentOS】さくらVPSサーバーの初期設定 : http://se-suganuma.blogspot.jp/2014/08/centosvps.html
Google Compute Engineにインスタンス作成してSSHでログイン : http://se-suganuma.blogspot.jp/2014/10/google-compute-enginessh.html

とりあえず先ほどのGCEの管理画面から「SSH」リンクをクリックし、ブラウザ上のターミナルから操作をしていきます。
まずは公開鍵ファイルを他のユーザーからいじられないよう権限変更。
```# chmod 600 .ssh/authorized_keys```

SSHの設定を開いて、鍵認証を有効に、パスワード認証を無効に設定します。

```
# vi /etc/ssh/sshd_config
PubkeyAuthentication yes
PasswordAuthentication no
```

設定完了後、VMを再起動します。
再起動時に接続が切れますので、1～2分したら再度ブラウザからSSH接続して、立ち上がったことを確認してください。
```# sudo reboot```

これでサーバー側の設定は完了したので、次はRLoginの設定。
「ファイル」→「サーバーに接続」をクリックして、「新規」ボタンをクリックします。

![8.png](https://qiita-image-store.s3.amazonaws.com/0/62478/519494ce-a734-6543-2dc4-e573f9cbc658.png)

上記のような画面が現れるので、プロトコルはsshを選択。
Server Addressは立ち上げたVMの外部IP、User Nameはroot、デフォルト文字セットはUTF-8とします。
SSH Identity Keyの「参照」ボタンをクリックして、先ほど生成した秘密鍵を指定します。

これで設定完了です。OKボタンをクリックすればあとは自動でログインできるはずです。
もしログインできなかったらごめんなさい……。。。。

# Nginxインストール！

これでRLoginでVMに入れるようになった！~~やったねたえちゃん！VMが増えるよ！~~

せっかくなのでNginxも入れて、ブラウザからhttpアクセスできるところまでやっておきたい！ので入れます。
下記のサイトを参考にしながらyumでインストールしていこうと思います。
CentOS7 に Nginx をインストールする : https://www.saintsouth.net/blog/install-nginx-on-centos7/

まずはNginxのリポジトリインストール
``` # yum install http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm```

次にパッケージのインストール。これで終わりだなんてお手軽！yum素敵！抱いて！
``` # yum install --enablerepo=nginx nginx```

…と思ったらインストール失敗。なんちゃらってのが足りないらしい。（すみませんメモるの忘れてました…）
なんだよお前なんか嫌いじゃyumめ！ヤムなんだかユムなんだか分からない名前しやがって！！！

なんて完全な八つ当たりしながらグーグル先生に聞くこと数分、以下の記事を発見。
はじめは躓くよCentOS7セットアップ（nginx + PHP + MariaDB on VirtualBox） : http://qiita.com/egnr-in-6matroom/items/8bda88125f56ee68448a#yum%E3%83%AA%E3%83%9D%E3%82%B8%E3%83%88%E3%83%AA

これの「epelリポジトリを追加しておく」を実行してみます。なんだかよく分かってないのでダメ元です。
```# yum install epel-release```

そして再度パッケージインストールのコマンドを実行。
``` # yum install --enablerepo=nginx nginx```

今度は通った！！！やったねたえ（ｒｙ

その後ブラウザ上からhttpアクセスを試してみると画面には**「正常に接続できませんでした。」**の文字。
なんでや！やっぱりお前なんか嫌いやNginx！！！
**クラッシュバンディクー2に出てくるエヌ・ジンみたいな名前しやがって！！！**

…と思ったらNginx起動してないことが判明。そりゃそうなる。
以下のコマンドで無事起動しました。httpアクセスも通ったヨ。
```# service nginx start```

ちなみに停止は以下のとおり。
```# service nginx stop```

以上、駆け足でしたがGCP環境にVM作成して、SSH接続 + Nginxインストールしたお話しでした。

# さいごに
この作業してたのがFF14起動して**フレンドさんたちと和気あいあいチャットしながら**だったので作業ものすごく遅いです。
某鯖でプレイしてますので見かけたら【ギル】【ください。】

また、上記の設定等はテスト用で必要最小限の設定しかしていないため、セキュリティ等の安全面に問題がある可能性もあります。
お詳しい方がもしいましたらツッコミ等していただければ幸いです。勉強になります。

最後に、今回使用したPuTTYgen、RLoginの作者様、また参考にさせていただいたサイトの執筆者様、本当にありがとうございました。
「インフラもばっちこい！！」と胸を張って言えるようなPHPerへと成長を遂げるべく今後も頑張っていきたいと思います…！