AWSでのサーバ構築方法やコマンドや操作法の忘備録
AWS入門編
AWS入門編1:Webサーバーを構築しよう
01:Webサーバーを構築しよう
参考
・AWS アカウント作成の流れ
https://aws.amazon.com/jp/register-flow/
解約方法
1. ログイン
2. アカウント > アカウント設定
3. アカウント設定ページの一番下に「アカウントの解約」ボタンがある
料金の確認方法
- ログイン
- アカウント > 請求とコスト管理
02:AWSアカウントを作ろう
Linux仮想マシンの起動手順
- コンソールにアクセス
- EC2を選択
- 東京リージョンを選択
- Linuxディストリビューションを選択
- インスタンスとして、t2.microを選択
- キーペアを保存
- インスタンスを作成
参考
・Linux 仮想マシンの起動
https://aws.amazon.com/jp/getting-started/launch-a-virtual-machine/
・インスタンスタイプ - Amazon EC2
https://aws.amazon.com/jp/ec2/instance-types/
03:Linux仮想マシンを起動しよう
Linux仮想マシンの起動手順
1. コンソールにアクセス
2. EC2を選択
3. 東京リージョンを選択
4. Linuxディストリビューションを選択
5. インスタンスとして、t2.microを選択
6. キーペアを保存(1.新しいキーペアの作成を選択 2.名前はFirstKeyと設定)
7. インスタンスを作成→完成に時間がかかる
無料期間内でも、停止・削除したインスタンスに割り当てたパブリックIPの設定を解除しておかないと
料金が発生してしまいますので、忘れずに解約しておきましょう
04:パブリックIPアドレスを設定しよう
・パブリックIPアドレスの公開
①エラスティックIPを選択、新しいipアドレスの割り当てを選択→エラスティックipアドレスが作成される。
②エラスティックIPの画面タブからアクション→アドレスの関連付け→インスタンス選択する。
(パブリックipアドレス作成される。)
③セキュリティグループを選択→アクション→インバウンドルールの編集→http選択
05:リモートアクセスしよう
このチャプターでは、ローカル環境からAWSのLinux仮想マシンにリモートアクセスしてみます。
ここで実行したコマンド
pwd
ls
ls -a -l
mkdir .ssh
mv ~/Desktop/FirstKey.pem ~/.ssh
chmod 400 ~/.ssh/FirstKey.pem
ssh -i ~/.ssh/FirstKey.pem ec2-user@(パブリックIP)
exit
06:Webサイトを公開しよう
このチャプターでは、引き続き、SSHでLinux仮想マシンに接続して、HTTPサーバーのApacheをインストールしていきます。
ここで実行したコマンド
パブリックIPアドレスなど、適時自分の環境に合わせて修正してください。
コマンドをローカル環境で実行
ssh -i ~/.ssh/FirstKey.pem ec2-user@(パブリックIP)
ssh -i ~/.ssh/FirstKey.pem ec2-user@(パブリックIP)
コマンドをLinux仮想マシンで実行
sudo yum -y update
sudo yum -y install httpd
sudo service httpd start
sudo chkconfig httpd on
ls /var/www/html
sudo vi /var/www/html/index.html
07:ファイルを転送しよう
このチャプターでは、ローカル環境で作成したhtmlファイルをWebサーバーに転送していきます。
ここで実行したコマンド
--コマンドをLinux仮想マシンで実行
--AWSに置いたhtmlファイルをデスクトップにダウンロード
scp -i ~/.ssh/FirstKey.pem ec2-user@(パブリックIP):/var/www/html/index.html ~/Desktop
--デスクトップに置いたhtmlファイルをAWSにアップロード
scp -i ~/.ssh/FirstKey.pem ~/Desktop/index.html ec2-user@(パブリックIP):~
--EC2ログイン
ssh -i ~/.ssh/FirstKey.pem ec2-user@(パブリックIP)
$$ ls
$$ sudo mv ~/index.html /var/www/html
$$ exit
上記のコマンドだと長くなってしまって大変なのでSCPコマンドを簡易的に
するための環境構築を行う。
--コマンドをローカル環境で実行
--EC2ログイン
$ ssh -i ~/.ssh/FirstKey.pem ec2-user@(パブリックIP)
--コマンドをLinux仮想マシンで実行
$$ sudo groupadd www
$$ sudo usermod -a -G www ec2-user
$$ exit
$$ groups
$$ sudo chown -R root:www /var/www
$$ sudo chmod 2775 /var/www
$$ find /var/www -type d -exec sudo chmod 2775 {} \;
$$ find /var/www -type f -exec sudo chmod 0664 {} \;
$$ exit
--コマンドをローカル環境で実行
$ scp -i ~/.ssh/FirstKey.pem ~/Desktop/index.html ec2-user@(パブリックIP):/var/www/html
SSHで権限を変更する
AWS入門編2:LAMP環境を構築しよう
01:LAMP環境を理解しよう
LAMP(ランプ)とは、Webアプリケーションの実行環境の組み合わせです。
Webアプリケーションの実行環境では、ふつう、OSとWebサーバー、データベース、スクリプト言語を組み合わせて利用します。
中でもLAMPは、Webサービスがはやり始めたころからある、オーソドックスな組み合わせです。OSにLinux(リナックス)、
WebサーバにApache(アパッチ)、データベースにMySQL(マイエスキューエル)、スクリプト言語にPHP(ピーエイチピー)という組み合わせを、
その頭文字をとって、LAMP(ランプ)と呼びます。
LAMP環境の構築手順
- PHPをインストールする
- MySQLをインストールする
- サンプル掲示板を設置する
- HTMLベースで改良する
- PHPベースで改良する
- PHPベースで改良する
02:PHPをインストールしよう
AWSに構築したWebサーバー上に、スクリプト言語のPHPをインストールしてみたいと思います。
PHPをインストールすると、Webページをプログラムによって表示したり、アクセスしてきたユーザーに合わせて、
内容を変化させてみます。
PHPインストールの作業手順
- Webサーバーの動作確認
- SSHでログインする
- 管理者権限に切り替える
- サーバの時間設定(UTCからJST)
- PHPのインストール
- PHPの設定
- Apacheの再起動
- PHPの動作確認
ここで利用したコマンド
sshコマンドでログイン
$ ssh -i ~/.ssh/FirstKey.pem ec2-user@(パブリックIP)
(zero版)
$ ssh -i ~/.ssh/aws-and-infra-ssh-key.pem ec2-user@(パブリックIP)
管理者権限に切り替える
$$ sudo su
時刻の確認
## date
ローカルタイムの設定
## ln -sf /usr/share/zoneinfo/Japan /etc/localtime
PHPをインストール
## yum install -y php
PHP設定ファイルのバックアップ
## cp /etc/php.ini /etc/php.bak
Apacheの再起動
## service httpd restart
※記号の意味
コマンドをローカル環境で実行
$ (コマンド)
コマンドをLinux仮想マシンで実行
$$ (コマンド)
コマンドをLinux仮想マシンで管理者権限で実行
(コマンド)
SSHコマンドによる接続
・Linux インスタンスへの接続 - Amazon Elastic Compute Cloud
https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/AccessingInstances.html
・SSH を使用した Linux インスタンスへの接続 - Amazon Elastic Compute Cloud
http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/AccessingInstancesLinux.html
・ネットワーク管理の基本Tips - @IT - SSHサーバーにログインするには? sshコマンド
http://www.atmarkit.co.jp/ait/articles/1503/23/news004.html
・端末エミュレータ - Wikipedia
https://ja.wikipedia.org/wiki/%E7%AB%AF%E
03:PHPの動作確認をしよう
簡単なPHPコードを作成し、動作を確認します。
設定ファイルのバックアップと復帰方法
設定ファイルを変更する場合、事前にバックアップを取っておくと安心です。
バックアップを取っておけば、もしも変更を間違えた場合も、すぐに復帰させることができます。
バックアップを取るには、次のように、ターミナルでファイルをコピーしておきます。
「cp」コマンドは、ファイルをコピーするコマンドです。
# cp (元々のファイル名) (バックアップファイル名)
例えば、PHPの設定ファイルをバックアップするには、次のコマンドを実行します。
# cp /etc/php.ini /etc/php.bak
バックアップを復帰させるには、次のように、バックアップファイルを元のファイルに上書きします。
# cp (バックアップファイル名) (元々のファイル名)
例えば、PHPの設定ファイルのバックアップを復帰させるには、次のコマンドを実行します。
# cp /etc/php.bak /etc/php.ini
■viの基本コマンド
vi (ファイル名) 指定ファイルを読み込み、viを起動する
i テキストを編集できる状態にする
escキー コマンドを入力できる状態にする
:wq ファイルを保存して終了するコマンド
:q! ファイルを保存しないで終了するコマンド
:set number 行番号の表示
:行番号 行番号の行へ移動
■viの参考資料
・viの使い方/基本操作
http://www.envinfo.uee.kyoto-u.ac.jp/user/susaki/command/vi.html
・viエディタの使い方
http://net-newbie.com/linux/commands/vi.html
・今さら聞けない高性能エディタVim入門Code部
https://blog.codecamp.jp/vim
■PHPの設定変更
「& ~E_NOTICE」を追加
error_reporting = E_ALL & ~E_DEPRECATED & ~E_NOTICE
OffからOnへ
display_errors = On
■PHPのテスト用ファイル
/var/www/html/index.phpに次のコードを入力
<?php
echo "hello PHP!";
?>
54.250.134.180/index.php
04:MySQLのインストール
MySQLインストールの作業手順
- MySQLのインストール
- MySQLの起動
- MySQLの設定
- 文字コードの設定
- phpMyAdminのインストール
- phpMyadminの設定
- phpMyadminの動作確認
ここで利用したコマンド
sshコマンドでログイン
※AWSでのインスタンス作成時に選んだOSによってSQLのパッケージが対応してないことがある!
Amazon Linux 2を選んだ人は下記のリンクを参考にしよう!
AWSのEC2で行うAmazon Linux2(MySQL5.7)環境構築
$ ssh -i ~/.ssh/FirstKey.pem ec2-user@(パブリックIP)
管理者権限に切り替える
$$ sudo su
※MySQLのインストール(Amazon Linux 2)
## sudo yum install mysql-community-server -y
※MySQLのインストール(Amazon Linux )ならいける?
## yum install -y mysql-server
追加プログラム(PHPのMySQLネイティブドライバ)のインストール
## yum install -y php-mysqlnd
MySQLの起動
## service mysqld start
MySQLの設定
## mysql_secure_installation
MySQLの文字コード設定のために、設定ファイルを開く
## vi /etc/my.cnf
MySQLの再起動
## service mysqld restart
※記号の意味
コマンドをローカル環境で実行
$ (コマンド)
コマンドをLinux仮想マシンで実行
$$ (コマンド)
コマンドをLinux仮想マシンで管理者権限で実行
## (コマンド)
MySQLの文字コード設定
character-set-server = utf8
05:phpMyAdminのインストール
MySQLをWebブラウザから管理するツールであるphpMyAdminをインストールします。
ここで利用したコマンド
phpMyAdminのダウンロード先を追加
## yum-config-manager --enable epel
phpMyAdminのインストール
## yum install -y phpmyadmin
phpMyAdminの設定(アクセス制限) のために、設定ファイルを開く
## vi /etc/httpd/conf.d/phpMyAdmin.conf
Apacheの再起動
## service httpd restart
※記号の意味
コマンドをローカル環境で実行
$ (コマンド)
コマンドをLinux仮想マシンで実行
$$ (コマンド)
コマンドをLinux仮想マシンで管理者権限で実行
(コマンド)
06:掲示板を設置しよう
LAMP環境上に簡単なWeb掲示板を設置してみます。
Web掲示板を設置手順
- MySQL上にデータベースを作成
- テーブルを作成する
- カラムを作成する
- bbs.phpをダウンロードする
- bbs.phpをアップロードする
- 動作確認
bbs.php( https://paiza-webapp.s3.amazonaws.com/files/learning/bbs/6/bbs.php )
※Windows :右クリック - 名前を付けてリンク先を保存
※Mac :CTRL + クリック - リンクに名前を付けて保存
データベースの作成情報
データベース
DB名: lesson
照合順序: utf8_general_ci
テーブルの定義
テーブル名: bbs
カラム数: 3
カラムの定義
名前: id, データ型: INT, インデックス: PRIMARY, A_I: オン
名前: content, データ型: TEXT
名前: updated_at, データ型: DATETIME
照合順序: utf8_general_ci
07:HTMLを改良しよう
LAMP環境上に設置したWeb掲示板をカスタマイズしていきます。
HTML部分の変更内容
- 見出し1のテキストを変更
- 見出し2のテキストを変更
- 背景色を変更
- Bootstrap CDNを適用
<!-- bootstrap CDN -->
<link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css"/>
<script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
今回のチャプターの変更が適応されたbbs.phpのダウンロード
bbs.php( https://paiza-webapp.s3.amazonaws.com/
08:PHPを改良しよう
LAMP環境上に設置したWeb掲示板を、さらにカスタマイズしていきます。
PHP部分の変更内容
- 行番号を追加
- 交互に色を変える
bbs.phpのダウンロード
前チャプターの完成版コード
bbs.php( https://paiza-webapp.s3.amazonaws.com/files/learning/bbs/7/bbs.php )
本チャプターの完成版コード
bbs.php( https://paiza-webapp.s3.amazonaws.com/files/learning/bbs/8/bbs.php )
※Windows :右クリック - 名前を付けてリンク先を保存
※Mac :CTRL + クリック - リンクに名前を付けて保存
bbs.phpの修正箇所
行番号を追加
// 取得したデータをテーブルで表示
?>
<table class="table">
<tr>
<th>No.</th>
<th>日時</th>
<th>投稿内容</th>
</tr>
<?php
while ($row = $stmt -> fetch(PDO::FETCH_ASSOC)) {
$i++;
?>
<tr>
<td><?php echo "$i"; ?></td>
<td><?php echo "$row[updated_at]"; ?></td>
<td><?php echo "$row[content]"; ?></td>
</tr>
<?php
}
?>
交互に色を変える
// 取得したデータをテーブルで表示
?>
<table class="table">
<tr>
<th>No.</th>
<th>日時</th>
<th>投稿内容</th>
</tr>
<?php
while ($row = $stmt -> fetch(PDO::FETCH_ASSOC)) {
$i++;
if ($i % 2 == 1) {
?>
<tr bgcolor="#cccccc">
<?php
} else {
?>
<tr>
<?php
}
?>
<td><?php echo "$i"; ?></td>
<td><?php echo "$row[updated_at]"; ?></td>
<td><?php echo "$row[content]"; ?></td>
</tr>
<?php
}
?>
</table>
ここで利用したコマンド
ファイルの転送
$ scp -i ~/.ssh/FirstKey.pem ~/Desktop/bbs.php ec2-user@(パブリックIP):/var/www/html
※記号の意味
コマンドをローカル環境で実行
$ (コマンド)
09:DBを改良しよう - 投稿の削除
Web掲示板を、さらにカスタマイズしていきます。
データベース操作の修正手順
- デバッグ用にidを表示
- 削除ボタンを追加
- 削除ボタンで送信されたidを表示
- 受信したidのデータを削除
- デバッグ用コードをコメントアウト
bbs.phpのダウンロード
前チャプターの完成版コード
bbs.php( https://paiza-webapp.s3.amazonaws.com/files/learning/bbs/8/bbs.php )
本チャプターの完成版コード
bbs.php( https://paiza-webapp.s3.amazonaws.com/files/learning/bbs/9/bbs.php )
※Windows :右クリック - 名前を付けてリンク先を保存
※Mac :CTRL + クリック - リンクに名前を付けて保存
bbs.phpの修正箇所
送信されたid
// 変数の設定
$content = $_POST["content"];
$delete_id = $_POST["delete_id"];
データを削除する
// データベースのデータの削除
$sql = "DELETE FROM bbs WHERE id = :delete_id;";
$stmt = $pdo->prepare($sql);
$stmt -> bindValue(":delete_id", $delete_id, PDO::PARAM_INT);
$stmt -> execute();
発言リストのテーブル
// 取得したデータをテーブルで表示
// echo "del_id:".$delete_id;
?>
<table class="table">
<tr>
<th>No.</th>
<!-- <th>id</th> -->
<th>日時</th>
<th>投稿内容</th>
</tr>
<?php
while ($row = $stmt -> fetch(PDO::FETCH_ASSOC)) {
$i++;
if ($i % 2 == 1) {
?>
<tr bgcolor="#cccccc">
<?php
} else {
?>
<tr>
<?php
}
?>
<td><?php echo "$i"; ?></td>
<!-- <td><?php // echo "$row[id]"; ?></td> -->
<td><?php echo "$row[updated_at]"; ?></td>
<td><?php echo "$row[content]"; ?></td>
<td>
<form action="bbs.php" method="post" role="form">
<button type="submit" class="btn btn-danger">削除</button>
<div class="form-group">
<input type="hidden" name="delete_id" value="<?php echo $row[id]; ?>" class="form-control"/>
</div>
</form>
</td>
</tr>
<?php
}
?>
</table>
10:DBを改良しよう - 投稿者名の追加
LAMP環境上に設置したWeb掲示板を、さらにカスタマイズしていきます。
掲示板の機能追加の手順
- 投稿フォームに、名前欄を追加
- 発言リストに、名前欄を追加
- データベースにuser_nameカラムを追加
- 名前情報を挿入するコードを追加
bbs.phpのダウンロード
前チャプターの完成版コード
bbs.php( https://paiza-webapp.s3.amazonaws.com/files/learning/bbs/9/bbs.php )
本チャプターの完成版コード
bbs.php( https://paiza-webapp.s3.amazonaws.com/files/learning/bbs/10/bbs.php )
※Windows :右クリック - 名前を付けてリンク先を保存
※Mac :CTRL + クリック - リンクに名前を付けて保存
bbs.phpの修正箇所
投稿フォームに名前欄を追加
<h2>投稿フォーム</h2>
<form action="bbs_41.php" method="post" role="form">
<div class="form-group">
<label class="control-label">名前</label>
<input type="text" name="user_name" class="form-control" placeholder="名前"/>
</div>
<div class="form-group">
<label class="control-label">投稿内容</label>
<input type="text" name="content" class="form-control" placeholder="投稿内容"/>
</div>
<button type="submit" class="btn btn-primary">送信</button>
</form>
送信された名前情報
// 変数の設定
$content = $_POST["content"];
$user_name = $_POST["user_name"];
$delete_id = $_POST["delete_id"];
名前情報をデータベースに挿入
// データベースへのデータの挿入
$sql = "INSERT INTO bbs (content, updated_at, user_name) VALUES (:content, NOW(), :user_name);";
$stmt = $pdo->prepare($sql);
$stmt -> bindValue(":content", $content, PDO::PARAM_STR);
$stmt -> bindValue(":user_name", $user_name, PDO::PARAM_STR);
$stmt -> execute();
発言リストに名前欄を追加
// 取得したデータをテーブルで表示
// echo "del_id:".$delete_id;
?>
<table class="table">
<tr>
<th>No.</th>
<!-- <th>id</th> -->
<th>名前</th>
<th>日時</th>
<th>投稿内容</th>
<th></th>
</tr>
<?php
while ($row = $stmt -> fetch(PDO::FETCH_ASSOC)) {
$i++;
if ($i % 2 == 1) {
?>
<tr bgcolor="#cccccc">
<?php
} else {
?>
<tr>
<?php
}
?>
<td><?php echo "$i"; ?></td>
<td><?php echo "$row[user_name]" ?></td>
<!-- <td><?php // echo "$row[id]"; ?></td> -->
<td><?php echo "$row[updated_at]"; ?></td>
<td><?php echo "$row[content]"; ?></td>
<td>
<form action="bbs_41.php" method="post" role="form">
<button type="submit" class="btn btn-danger">削除</button>
<div class="form-group">
<input type="hidden" name="delete_id" value="<?php echo $row[id]; ?>" class="form-control"/>
</div>
</form>
</td>
</tr>
<?php
}
?>
</table>