AWS
EC2
インスタンス

AWS EC2 インスタンス作成、Webサーバ構築

More than 1 year has passed since last update.


はじめに

AWS EC2を使ってWEBサーバを構築しましたので、備忘録としてまとめます。


目標

仮想サーバを構築しWordPrssを設置する。(WordPrssの設定は省略する。)


構築の流れ


  • EC2 インスタンスを作成する

  • セキュリティグループを作成してアクセス制限をかける

  • サーバにログインする

  • SSHのポートを変更する

  • ユーザーを追加する(鍵を登録する)

  • ミドルウェアをインストールする(Apache PHP MySQL FTP)

  • ミドルウェアを設定する

  • 【おまけ】 WordPressをインストール


アカウント作成、ログイン

こちらにまとめてるのでどうぞ。

AWSアカウント作成後の初期設定(セキュリティ設定)


EC2 インスタンスを作成

インスタンスとは AWS クラウドにある仮想サーバのこと。

詳しくはこちら

1.jpg

「EC2」をクリック。

2.jpg

「Launch Instance」をクリック。


Step 1: Choose an Amazon Machine Image (AMI)

3.jpg

EC2インスタンスのOSを選択。

今回は「Amazon Linux AMI 2016.03.3 (HVM), SSD Volume Type - ami-374db956」を選択。


Step 2: Choose an Instance Type

4.jpg

無料枠のt2.microを選択し、「Next: Configure Instance Details」をクリック。


Step 3: Configure Instance Details

5.jpg

「Protect against accidental termination」にチェックを入れ、「Next: Add Storage」をクリック。

※こちらにチェックを入れておくと、意図せぬ削除から保護してくれるようになる。


Step 4: Add Storage

6.jpg

用途に合わせてストレージを追加する。今回はデフォルトのままで、「Next: Tag Instance」をクリック。


Step 5: Tag Instance

7.jpg

任意のタグを追加し、 「Next: Configure Security Group」をクリック。


Step 6: Configure Security Group

8.jpg

セキュリティグループを設定し、「Review and Launch」をクリック。

※今回は、sshをhttpを設定。


Step 7: Review Instance Launch

今までの設定を確認し、「Launch」をクリック。

キーペアの作成画面が表示される。

9.jpg

今回は、新規作成するので、「Create a new key pair」を選択し、Create a new key pairに任意の名前を入力し、「Create a new key pair」をクリックし、ダウンロードする。

サーバに接続するのに後ほど必要になるので、任意の場所に置いておく。

ダウンロードが完了したら、「Launch Instances」をクリック。

10.jpg

インスタンスが作成中なので、「View Instances」をクリック。

11.jpg

少し時間がかかるが作成が完了すると、インスタンスの状態が「running」と「2/2 checks passed」になっていれば、インスタンスの作成が完了。


仮想サーバにログイン

ここから、ターミナルでの作業になります。

PuTTYを使用したWindowsからLinuxインスタンスへの接続はこちら

12.jpg

接続するインスタンスを選択し、「Connect」をクリック。

dfee6a99-8489-b647-c6cd-3f0a2c794e8d.jpeg

先ほどダウンロードした鍵のパーミションを変更する。

chmod 400 gehogeho.pem

パーミッションを変更しないとログイン時に怒られます。

...

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

...


SSHでアクセス

ec2-userでログインする。

$ ssh ec2-user@{instance IP} -i {秘密鍵保存ディレクトリ}/gehogeho.pem

...

__| __|_ )
_| ( / Amazon Linux AMI
___|\___|___|

...

無事ログインできたので、次の設定へ。


ポート番号の変更

rootでログインし、ポート番号を変更する。

$ sudo -s

# vi /etc/ssh/sshd_config

#Port 22

Port 60530 //任意の0番~65535番までの番号に変更

# /etc/init.d/sshd restart //再起動


ユーザを作成

グループとユーザーを作成。

# useradd -g users gehogeho

# passwd ideacd

パスワードを設定。

# passwd gehogeho

ユーザー gehogeho のパスワードを変更。
新しいパスワード:
新しいパスワードを再入力してください:
passwd: すべての認証トークンが正しく更新できました。

追加したユーザーにもrootになれるよう設定。

# visudo

root ALL=(ALL) ALL


root ALL=(ALL) ALL
gehogeho ALL=(ALL) ALL


追加ユーザーの鍵の設定

追加ユーザーでリモートログインできるようにする。

rootからユーザーへ切り替え、ユーザーのディレクトリまで移動する。

# su gehogeho

$ /home/gehogeho

鍵の格納先のディレクトリと空の鍵ファイルを作成。

mkdir ~/.ssh

chmod 700 ~/.ssh
touch ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

お使いのPCで鍵を生成を生成する。

[user@MacBook-PC] $ ssh-keygen -t rsa

Generating public/private rsa key pair.
Enter file in which to save the key (/Users/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /Users/.ssh/id_rsa.
Your public key has been saved in /Users/.ssh/id_rsa.pub.
The key fingerprint is:
The key's randomart image is:
+--[ RSA 2048]----+
| .+BB.o.. |
| o*+B. .. |
| .o o o.E o |
| . o o o |
| . . . S |
| . . |
| . |
| |
| |
+-----------------+

生成した、id_rsa.pubの中身を先ほどのauthorized_keysにコピペ。

id_rsaは、PC内に大事に保管しておく。

$ vi ~/.ssh/authorized_keys

一旦、ログアウトし、追加したユーザーでログインする。

$ ssh gehogeho@{instance IP} -i {秘密鍵保存ディレクトリ}/gehogeho.pem


必要なミドルウェアをインストール


yumアップデート

まず、yumアップデートをする。

※今回は、カーネルのアップデートを除外し、アップデートする。

# yum --exclude=kernel* update


必要なミドルウェアをインストール

今回は、WordPrssに必要なミドルウェアをインストールする。


  • Apache

  • MySQL

  • PHP

  • phpMyAdmin

# yum install httpd mysql mysql-server php php-mysql php-mbstring

phpMyAdminはCentOSの標準のリポジトリに無いようなのでepelからインストール

# yum install --enablerepo=epel phpMyAdmin


Apacheを起動

# /etc/init.d/httpd start

Apachewo自動起動にする

# chkconfig httpd on


MySQLを起動

# /etc/init.d/mysqld start

MySQLを自動起動にする

# chkconfig mysqld on


起動状態の確認

# chkconfig --list httpd

# chkconfig --list mysqld

ブラウザで確認。

15.png

Apacheの画面が出ていれば、とりあえずOK。


MySQLの設定

# vi /etc/my.cnf

// [mysqld] に以下を追記
character-set-server = utf8
skip-character-set-client-handshake

// 下を追記
[mysqldump]
default-character-set=binary

[client]
default-character-set = utf8

MySQL再起動

# /etc/init.d/mysqld restart

パスワードの設定をする。

# mysql mysql

Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1866163
Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> //こちらにコマンドを入力。('パスワード') SET PASSWORD FOR root@localhost=PASSWORD('パスワードを入力');

mysql> SET PASSWORD FOR root@localhost=PASSWORD('gehogeho');
Query OK, 0 rows affected (0.01 sec)

mysql> exit;
Bye


phpMyAdminの設定

デフォルトではアクセス制限があるので設定を変更する。

# vi /etc/httpd/conf.d/phpMyAdmin.conf

// 21行目らへんを変更
<IfModule !mod_authz_core.c>
# Apache 2.2
Order Deny,Allow
Deny from All
Allow from 127.0.0.1
Allow from ::1
</IfModule>

<IfModule !mod_authz_core.c>
# Apache 2.2
Order Allow,Deny
Allow from All
</IfModule>

Apacheを再起動

# /etc/init.d/httpd restart

アクセスして確認。

http://IP/phpMyAdmin/


  • ユーザー:root

  • パスワード:gehogeo


ドキュメントルートの設定

Apacheの設定を変更する

# vi /etc/httpd/conf/httpd.conf

// 293行目くらいを変更

DocumentRoot "/var/www/html"

DocumentRoot "/home/gehogeho/html"

// 318行目くらいを変更

<Directory "/var/www/html">

<Directory "/home/gehogeho/html">

htmlディレクトリを作成

# cd /home/gehogeho/

# mkdir html
# chmod 755 /home/gehogeho

Apacheを再起動

# /etc/init.d/httpd restart


WordPressインストール

日本語版を取得する。

# cd /home/gehogeho/www/

# mkdir wp
# cd wp
# wget https://ja.wordpress.org/latest-ja.tar.gz
# tar zxvf latest-ja.tar.gz
# chown -R apache.apache

アクセスして確認。

http://IP/phpMyAdmin/wp/wp-admin/setup-config.php


まとめ

ユーザー権限やパーミッションの変更を忘れていたりなど、すんなりいかないところもありましたが、なんとかインスタンスを立ち上げて仮想環境は作れました。

セキュリティグループなど、まだまだ疎いので、今後の課題にしていきたいと思います。