はじめに
AWS EC2を使ってWEBサーバを構築しましたので、備忘録としてまとめます。
目標
仮想サーバを構築しWordPrssを設置する。(WordPrssの設定は省略する。)
構築の流れ
- EC2 インスタンスを作成する
- セキュリティグループを作成してアクセス制限をかける
- サーバにログインする
- SSHのポートを変更する
- ユーザーを追加する(鍵を登録する)
- ミドルウェアをインストールする(Apache PHP MySQL FTP)
- ミドルウェアを設定する
- 【おまけ】 WordPressをインストール
アカウント作成、ログイン
こちらにまとめてるのでどうぞ。
AWSアカウント作成後の初期設定(セキュリティ設定)
EC2 インスタンスを作成
インスタンスとは AWS クラウドにある仮想サーバのこと。
詳しくはこちら
「EC2」をクリック。
「Launch Instance」をクリック。
Step 1: Choose an Amazon Machine Image (AMI)
EC2インスタンスのOSを選択。
今回は「Amazon Linux AMI 2016.03.3 (HVM), SSD Volume Type - ami-374db956」を選択。
Step 2: Choose an Instance Type
無料枠のt2.microを選択し、「Next: Configure Instance Details」をクリック。
Step 3: Configure Instance Details
「Protect against accidental termination」にチェックを入れ、「Next: Add Storage」をクリック。
※こちらにチェックを入れておくと、意図せぬ削除から保護してくれるようになる。
Step 4: Add Storage
用途に合わせてストレージを追加する。今回はデフォルトのままで、「Next: Tag Instance」をクリック。
Step 5: Tag Instance
任意のタグを追加し、 「Next: Configure Security Group」をクリック。
Step 6: Configure Security Group
セキュリティグループを設定し、「Review and Launch」をクリック。
※今回は、sshをhttpを設定。
Step 7: Review Instance Launch
今までの設定を確認し、「Launch」をクリック。
キーペアの作成画面が表示される。
今回は、新規作成するので、「Create a new key pair」を選択し、Create a new key pairに任意の名前を入力し、「Create a new key pair」をクリックし、ダウンロードする。
サーバに接続するのに後ほど必要になるので、任意の場所に置いておく。
ダウンロードが完了したら、「Launch Instances」をクリック。
インスタンスが作成中なので、「View Instances」をクリック。
少し時間がかかるが作成が完了すると、インスタンスの状態が「running」と「2/2 checks passed」になっていれば、インスタンスの作成が完了。
仮想サーバにログイン
ここから、ターミナルでの作業になります。
PuTTYを使用したWindowsからLinuxインスタンスへの接続はこちら
接続するインスタンスを選択し、「Connect」をクリック。
先ほどダウンロードした鍵のパーミションを変更する。
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
ブラウザで確認。
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
まとめ
ユーザー権限やパーミッションの変更を忘れていたりなど、すんなりいかないところもありましたが、なんとかインスタンスを立ち上げて仮想環境は作れました。
セキュリティグループなど、まだまだ疎いので、今後の課題にしていきたいと思います。