AWSへの接続覚書

### 1.サインイン

* アカウントの作成　メールアドレスはAmazonの宅配のものとは別にする。
* コンソールにルートユーザーでサインイン
* サービス　→　コンピューティング　→　EC2
* ダッシュボード　→　リージョンを東京に変更　→　インスタンスの作成
* OSの決定　無料枠で使えるものから今回は　Amazon Linux 2 AMI (HVM) SSD Volume Type を選択
* インスタンスのタイプは無料で使えるもの (t2-micro)
* 新しいキーペアの作成　名称は任意で可　ダウンロードしてpemファイルは保管

### 2.インスタンスの起動
```
//秘密鍵をダウンロードして以下の名前のフォルダに保管
.ssh/keys
//ターミナルで上記に移動して以下コマンドで権限委譲
chmod 600 秘密鍵の任意の名前.pem
//ダッシュボードの「接続」の例にあるコマンドで接続
接続は一定時間何もしないと切れるのでその場合もこのコマンドで再接続
ssh -i "秘密鍵の任意の名前.pem" ec2-user@ec2-18-183-169-243.ap-northeast-1.compute.amazonaws.com
//諸々アップデート
sudo yum update
//WEBサーバー（Apatch）のインストール
sudo yum install httpd
//WEBサーバーの起動
sudo systemctl start httpd
//WEBサーバーの起動確認
sudo systemctl status httpd
//セキュリティグループのインバウンドでhttpのポートの設定（番号は８０で変更はできない。）
//これをウェルノウンポートという。
//httpの場合urlの後ろに「:80」をつけても同じページにアクセスできる。(httpsなら443)
```
### 3.index.htmlファイルの作成と表示

```
cd /var/www/html/
・・lsで確認しても何もない。
sudo vim index.html + enter
//vim画面起動
i
//insert mode になるので書き込める。
何か入力（例:Hello）
esc (左上escキー)
:w + enter
//終了
:q
```

### 4.PHPのインストール

```
sudo yum install php + enter
//Yes/Noを効かれるので
Yes + enter
```

### 5.MySQL他インストール
```
sudo yum install php-mysql php-mbstring php-gd + enter
//Yes/Noを効かれるので
Yes + enter
sudo systemctl restart httpd
```
これはWordpressを入れるために必要なモジュール群
MySQL　データベース
mbstring 日本語を扱うための拡張モジュール
gd　画像を扱うライブラリ
sudo systemctl restart httpd　はスーパーユーザー権限でhttpd(Apatch)を再起動するコマンド

### 6.PHPの動作している環境の確認

```
sudo vim info.php でファイル作成（方法は上に同じ）

<?php
 phpinfo();
?>

```
 ブラウザでip/info.phpと入力し確認できる。

### 7.固定IPの取得（課金）

IP(Internet Protocol)アドレス ->　サーバーの住所
0.0.0.0~255.255.255.255
IPアドレスの種類
* グローバルIPアドレス　外部から接続できる ⭕️
* プライベートIPアドレス　ローカルネットワークないで利用　192.168.xxx.xxx
* リンクローカルアドレス　特殊な環境下で利用される　169.254.xxx.xxx
* ループバックアドレス　自分自身のIPアドレス　127.0.0.1

サーバー　固定IP
クライアントなど　動的IP

ダッシュボードのElastic IP
新しいアドレスの割り当て　→　Elastic IP 保管
インスタンスに割り当て　→　アクション　→　アドレスの関連づけ（課金）　使わなくなったらアドレスの開放で課金終了
リソース：　インスタンス
インスタンス：　runningを選択
これでIPv4が固定IPに変更される。

### 8.WordPressのセットアップ

アップデートが有る時は

```
sudo yum update + enter
```
ここからWordPressのインストール

```
//zipファイルのダウンロード
wget https://ja.wordpress.org/latest-ja.zip
//zipファイルの解凍
unzip latest-ja.zip
//ここでできたwordpressディレクトリに移動
cd wordpress
//mariaDB（データベース）をインストール
sudo yum install mariadb mariadb-server
//mariaDBの起動
sudo systemctl start mariadb
//mariaDBにログイン
mysql -u root //-uでユーザーを指定　rootで管理者
//rootにパスワードを設定　（）で囲むと暗号化される
update mysql.user set password=password('パスワード') where user='root';
//これを反映させる
flush privileges;
//rootを普段使いするのは危険なのでwordpress専用のユーザーをs設定
create user 'wordpress'@'localhost' identified by 'パスワード';
//出来上がったユーザーが使うデータベースのスペースを作る
create database wordpressdb;
//このスペースを使う権限を先のユーザーに与える
grant all privileges on wordpressdb.* to 'wordpress'@'localhost';
//反映させる
flush privileges;
//確認できる
show databases;
//退出
exit
```
 ### 9.WordPressを表示する。

ダウンロードし、解凍済のフォルダをDocumentRootに移動させる。

```
//ディレクトリも含めてwordpress全てのファイルを/var/www/htmlにコピーする。
sudo cp -R wordpress/* /var/www/html
cd /var/www/html
ls
index.html   sum.php               wp-config-sample.php  wp-load.php      wp-trackback.php
index.php    wp-activate.php       wp-content            wp-login.php     xmlrpc.php
info.php     wp-admin              wp-cron.php           wp-mail.php
license.txt  wp-blog-header.php    wp-includes           wp-settings.php
readme.html  wp-comments-post.php  wp-links-opml.php     wp-signup.php
```

この状態では、index.htmlとindex.phpの両方があり、設定上index.htmlが優先して表示されるので削除する。

```
sudo rm index.html
```
PHPのバージョンが古いのでバージョンアップする。

```
sudo yum install php72 -y
//このコマンドはAWSでは使えないので下を使う。
sudo amazon-linux-extras install php7.2 -y
//アパッチの再起動
sudo systemctl restart httpd
//wp-config-sample.phpをwp-config.phpという名前でコピーを作成する
sudo cp wp-config-sample.php wp-config.php
//wp-config.phpをvimで編集
sudo vim wp-config.php
//vimでdatabase,username,passwordを8で作った内容に書き換える
//書き込みと削除は同時に行えないので都度escで出入する。
//xはdelete
//ddは行削除
//最後のセキュリティーキー部分は指定のurlにアクセスするとapiが自動でユニークなものを作成してくれるのでそれを貼り付ける。
//llで所有者や権限を見れる
//var/www/htmlのオーナー権限をapacheのグループのapacheに全部与える。
sudo chown apache.apache -R /var/www/html
//var/www/htmlの全てについて書き込み権限を与える
sudo chmod +w -R /var/www/html
//chはchange? modはmodify（変更）? ownはowner（所有者）?
```

### 10.DNSの設定

AWSのRoute53でもできる。