こんにちは、キノトロープアカデミーです。

「キノトロープアカデミー」は、Web業界のトップランナーである株式会社キノトロープの社員が講師を務めるオンラインアカデミーです。リモートワーク時代に不可欠な「個のスキル」を高め、職人のような「匠」を目指す人を増やしたい。そんな願いを込め、基礎から経営判断、業務フローまで、一生モノのナレッジを惜しみなく公開していきます。

<入門編 第6回>
Webサイト制作のインフラ
についてお伝えします。

担当は高橋です。

Webサイトをインターネットに公開するには、サーバの構築からミドルウェアのインストール、定期的なバックアップ設定まで、インフラ面の知識が欠かせません。

Linuxコマンドやシェルスクリプトを活用することで、こうした環境構築や運用管理を効率的に行えるようになります。

Web制作に関わる方は、プログラミングと合わせてインフラの基礎も押さえておくことが重要です

”Webサイト制作のインフラ”をテーマに、
今日お伝えしたいことは3つあります。

Webサイトをインターネットに公開するために必要なものは、大きく
・インターネット
・ドメイン
・ハードウェア
・ソフトウェア
が必要です。

今回のインフラ編ではそのうちハードウェア部分の一部であるサーバとOS、ミドルウェア部分の構築設定について説明します。

なお、概要でイメージをつかんでもらうための内容として、個別の詳細については説明に含んでおりませんのでご了承ください。

OS、サーバ、ミドルウェアや各コマンドも詳細には奥深くたくさん知るべきところがありますが、今回はざっと流して全体を説明していきたいと思います。

また、Webサイトを公開する方法として、現在では各種SaaSやASPなどのサービスを利用する方法などもありますし、レンタルサーバに設置するとすぐ利用が開始できるレベルのものではあります。

ただ、今回はAWS上にEC2というものでサーバを立ててそこに必要なソフトウェアをインストールしてみることとします。

それでは初めにAWS上にEC2サーバを構築します。AWSを起動し、EC2のインスタンス起動を行います。
OSはAmazonLinux2というものを利用します。

以降の詳しい手順は下記の動画をご覧ください。

https://www.youtube.com/watch?v=4W579Lqn-ew

サイトを公開するために必要なものとして最低限Webサーバが必要です。
今回は
WebサーバとしてはApache、
プログラムの実行環境としてはPHP、
データベースとしてMySQL
をインストールします。

まず、初めにLinuxサーバにSSHで接続します。Windowsの場合TeraTermなどのSSH接続ソフトを利用します。SSHはコマンドライン、CUIでOSを操作するためのものです。

外部の人、悪意のある人に接続をされると問題が大きいものですので、SSHは通常IP制限をするなり内部ネットワークからの通信のみとする制限を行います。

それでは実際にSSHで接続します。

IPアドレス:きまったIPアドレス
ユーザ名:ec2-user
鍵認証ファイル:作成(ダウンロード)した.pemファイル

Linuxコマンドはコンピュータに対して様々な操作をできるものです。
主なものを紹介します。

cd:ディレクトリ移動
ls リスト:フォルダやファイルの一覧表示(オプションにより表示形式や並び順を制御できる)
pwd:現在位置表示
sudo su :ルート権限を可能な状態とする(※許可されている場合)
cat **** :ファイルの中身を表示
Linux:スラッシュ区切り
Windows:(¥バックスラッシュ区切り)

それでは利用するソフトウェアをインストールします。

ソースからインストールとパッケージでインストールという方法がありますが、今回はパッケージからインストールします。

方法は簡単で以下のコマンドを入力します

・Apache httpd / php / mysq のインストール
yum install httpd
yum install php
yum install mariadb-server
Yum install php-mysql

・自動起動設定

systemctl enable httpd
systemctl enable mariadb

・起動

systemctl start httpd
systemctl start mariadb

systemctl restart httpd
systemctl restart mariadb

これでインストールと起動が完了しました。

ここから本来であれば様々設定が必要となりますが、今回は標準設定のまま利用します。

起動後IPアドレスにアクセスしてみるとApacheのWelcomeページが表示されます。

ここに前回までで作成してPHPのプログラムとデータベースを設置してみます。

create database mytest;
use mytest;
create table timestable ( x int,y
int,answer int);
insert

シェルスクリプトはバッチ処理とよばれるような定期処理が実行可能です。

主にはバックアップ設定などで利用できますので、バックアップの場合の例を作成します。

mkdir /var/www/scripts/
mkdir -p /var/www/backup/daily/
cd /var/www/scripts/

~~~

Vi backup.sh
-----
#!/bin/sh
EXEC_DATE=`date '+%y%m%d%H%M%S'`
BACKUP_DIR=/var/www/backup/daily
TARGET_DIR=/var/www/html
EXCLUDE_STRING=""
FILE_NAME=www_html

tar zcvf
${BACKUP_DIR}/${FILE_NAME}.${EXEC_DATE}.tar.gz ${TARGET_DIR}/*
${EXCLUDE_STRING}

#delete files
#find $BACKUP_DIR -type f -mtime +5 | xargs
rm -f

Exit
-----
chmod 755 backup.sh

./backup.sh

crontab –e
----------------
# backup daily
30 2 * * * /var/www/scripts/backup.sh
----------------
※毎日2時半にバックアップが実行されるようになる。
※5日分バックアップされそれ以前のものは削除される
※この他AWSであれば、サーバ丸ごとのバックアップスナップショットでのバックアップも行うのが通常です。

動画でも解説していますのでページ下部のリンクからぜひご覧ください。

最後までご覧いただきありがとうございました。

の3点についての内容でした。

\ がんばれ!Web担当者 /

Web担当者応援マガジン

属人化の嵐の中で、時間と各部署と
そして上司と戦うWeb担当者のために

大規模Webサイトの運用業務に
よくある課題を解決するための手法を
簡潔にまとめました!

大規模CMS成功の法則