【GCP】VMインスタンスの作成〜GCSとGCEをマウントするまでの備忘録

# はじめに

GCSとGCEのマウント方法を備忘録として残す

# やり方

## Compute EngineでVMインスタンスを作成

### Compute Engine

> Google のインフラストラクチャで仮想マシンを作成して実行できる、安全性の高いカスタマイズ可能なコンピューティング サービスです。

### VMインスタンス
> 物理的なコンピュータ上で起動され、稼動状態にある、ソフトウェアによって構築された仮想的なコンピュータのこと

#### VMインスタンスの作成
- VMインスタンス名
- リージョン
- マシンタイプ
- HTTP トラフィックを許可
![スクリーンショット 2022-01-10 23.34.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/555632/281269b9-8454-b8cc-916d-4f6843f73b50.png)

## VMインスタンスにApache・PHPをインストールする

### VMインスタンスにSSH接続する
![スクリーンショット 2022-01-10 23.36.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/555632/c191f11d-ec27-9b11-2594-64a4739a800b.png)

### Apache・PHPをインストールする

```bash
sudo su -

# インストール可能なパッケージの「一覧」を更新
apt-get update

# Apache2のインストール
apt-get -y install apache2

# PHPのインストール
apt-get -y install php

# Apache Webサーバを起動
systemctl start apache2

# 起動状態を確認
ps aux | grep apache
root      8188  0.0  1.9 196800 19784 ?        Ss   10:38   0:00 /usr/sbin/apache2 -k start
www-data  8190  0.0  0.8 196824  8320 ?        S    10:38   0:00 /usr/sbin/apache2 -k start
www-data  8191  0.0  0.8 196824  8320 ?        S    10:38   0:00 /usr/sbin/apache2 -k start
www-data  8192  0.0  0.8 196824  8320 ?        S    10:38   0:00 /usr/sbin/apache2 -k start
www-data  8193  0.0  0.8 196824  8320 ?        S    10:38   0:00 /usr/sbin/apache2 -k start
www-data  8194  0.0  0.8 196824  8320 ?        S    10:38   0:00 /usr/sbin/apache2 -k start
root      8358  0.0  0.0   4836   884 pts/0    R+   10:47   0:00 grep apache
```

### VMインスタンスの外部IPにアクセスする

![スクリーンショット 2022-01-10 23.43.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/555632/d64c3147-303c-c0b0-ac72-f372b7455346.png)

### Apacheのトップページが表示されていれば成功
![スクリーンショット 2022-01-10 23.44.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/555632/dcb4d1fe-acd6-bd28-6465-0e457c383be9.png)

## 外部IPアドレスを静的IPにする

- VMインスタンスを停止してから行う

- 外部IPが`エフェメラル(短期的な）`になっているので静的IPアドレスを割り当てる

![スクリーンショット 2022-01-10 23.50.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/555632/a6bcbb3a-aee2-d959-b9de-796f1ee6e823.png)

### VPCネットワーク > 外部IPアドレスから静的アドレスを予約する

![スクリーンショット 2022-01-10 23.53.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/555632/cb7ff5c0-ba27-7cc3-04f2-58bd0b706494.png)

## Cloud Storage > バケットを作成

> あらゆる規模の企業に対応するオブジェクト ストレージ。保存できるデータ量に制限はありません。必要に応じて何度でもデータを取得できます。

- バケット名
- データの保存場所 > Region
- ストレージクラス > Standard
- アクセス制御 > きめ細かい管理

![スクリーンショット 2022-01-10 23.59.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/555632/5932358f-9eff-7a6f-e767-0397774ed7ea.png)


## ファイルをアップロードする
任意の画像ファイルをアップロード

![スクリーンショット 2022-01-11 0.01.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/555632/e14a9b88-bc59-b8a6-e538-2de91f24e2a9.png)


## VMインスタンス > アクセススコープ > 各APIにアクセス権を設定

- ストレージ > フル
    - GCEからGCSを読み取りにいけるようにします
![スクリーンショット 2022-01-11 0.04.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/555632/372f1c7c-8dcf-d9e5-e12a-e8ef6c4a679f.png)

## GCEとGCSをマウントする

https://github.com/GoogleCloudPlatform/gcsfuse/blob/master/docs/installing.md

```bash
sudo su -
export GCSFUSE_REPO=gcsfuse-`lsb_release -c -s`
echo "deb http://packages.cloud.google.com/apt $GCSFUSE_REPO main" | sudo tee /etc/apt/sources.list.d/gcsfuse.list
curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
apt-get update
apt-get -y install gcsfuse
cd /var/www/html/
mkdir demo

# マウント
# gcsfuse バケット名 マウント先
# -o allow_other フォルダにアクセスする権限を他のユーザにも許可
gcsfuse -o allow_other sample-bucket-na /var/www/html/demo
2022/01/10 15:13:10.990979 Opening GCS connection...
2022/01/10 15:13:11.383307 Mounting file system "sample-bucket-na"...
2022/01/10 15:13:11.391102 File system has been successfully mounted.

# アップロードした画像がマウント先に表示されていれば成功です
ls demo/
Corporate_Sunrise.png  b551ca84-3de9-2e40-5ceb-c2d7f90bb8f6.png
```

## マウントした画像を表示してみる

```bash
mv index.html index.php
vi index.php
```

```php:index.php
<div>
 <img src="./demo/Corporate_Sunrise.png">
</div>
```

### 画像が表示できれば成功です
![スクリーンショット 2022-01-11 0.17.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/555632/a2de1aec-f7d1-a9e4-c373-5e3815b9700e.png)


## VMインスタンス起動時に自動的にマウントするようにする

VMインスタンスを停止してから行う

カスタムメタデータに以下を設定する

`startup-script`:Linux 起動スクリプトに使用できるメタデータキー

```bash
#! /bin/bash
sudo gcsfuse -o allow_other sample-bucket-na /var/www/html/demo
```

![スクリーンショット 2022-01-11 0.21.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/555632/4de6e620-c3a1-edec-e85e-7c05dccd7ec8.png)

https://cloud.google.com/compute/docs/instances/startup-scripts/linux


# さいごに

読んでいただきありがとうございます。
今回の記事はいかがでしたか？
・こういう記事が読みたい
・こういうところが良かった
・こうした方が良いのではないか
などなど、率直なご意見を募集しております。