とことん Linux サーバ 構築 練習 ~ Apache Postfix Dovecot BIND (DNS) 研修コースに参加してみた
今回参加した研修コースは とことん Linux サーバ 構築 練習 ~ Apache Postfix Dovecot BIND (DNS) です。
とにかくサーバを構築しまくりの 1 日コースでした。「習うより慣れろ」方式です。クラウド時代を迎え、なかなかイチからサーバ構築を行う機会は少なくなってきているので、これからインフラ構築に携わる方にはとてもオススメです。
また、今や DNS やメールなどはクラウド、専門アプリケーション、サービスでやることが多くなっていますので、yum インストールして設定する、ということはとても新鮮で、また中の仕組みが学べる内容でした!
クラウドネイティブな時代だからこそ、こういった基礎的な構築体験は研修じゃないと出来ないなぁと思います。
では、どんな内容だったのかレポートします!!
もくじ
コース情報
想定している受講者 |
|
---|---|
受講目標 |
|
講師紹介
インフラと言えば、、、もうこの方です。
どうすれば技術を身につけられるか、理解できるか、研究しつづけるインフラ系の人気トレーナー
今日もお名前だけを紹介して「今日一日は色々な Linux サーバを構築しましょう」ということでスタートしました。
今日構築するサーバの概要
- VM として Virtual Box を使います
- OS ( CentOS 7 ) を使います
- サーバアプリケーションをインストール
- DNS
- database
- www / Blog サイト
- 構築手順は、ほぼ同じなので、どんなものが来ても構築できるようになります (!!!)
今日はいつもの 3 時間研修ではなく、一日研修なので、とにかく一杯構築できます。
ちなみに、サーバー、サーバ、ルーター、ルータ、いつも記述で困りますが、調べたところ、どっちでもいいそうです。うーむ。。
各サーバアプリケーションについて
- www
- Web ページを配信する
- apache や nginX や IIS ( Windows 系)
- 今日は Apache を使います
- DNS
- ドメイン名を IP アドレスに変換
- BIND を使います
- 普段あまり触りませんが、どんな仕組みになっているのか見えます
- Mail
- Postfix / Dovercot を使います
- こちらも中の仕組みをのぞいてみましょう
このなかで、Mail サーバはまだ立てることも機会もありそうかなぁと思いますが、どうでしょう。。
もう、SendGrid や MailChimp 、はたまた Amazon SES などを使いますかね。
手順 1 サーバ初期設定
いよいよここから、ひたすら構築演習です。まずは OS のインストールと設定から。
OS のインストール
- 仮想マシンのメモリの割り当てについて
- OS そのものが動けばよいのであれば 512MB
- 色々なアプリケーションを動かす場合 1GB は必要
- 画面をポチポチして VM を設定
- VM を立ち上げ CentOS をインストール
- ネットワーク設定
- 管理者パスワードを設定
手順 2 ネットワーク環境の設定
hostnamectl set-hostname [名前]
でホスト名を設定- DNS を設定するときにドメイン名が必要になるため
- IP アドレスを設定
- 今回は座席毎に固定の IP を振ります
192.168.17.**/24
- サブネットマスクは postfix で
- デフォルトゲートウェイ / DNS を設定
- DNS は公開 DNS を使うとよいです
- 今回は
8.8.8.8
を使います // Google の公開 DNS
systemctl restart network
で再起動
- 今回は座席毎に固定の IP を振ります
ip a
で設定を確認
この座席ごとに IP を振った理由は、、、 あとのお楽しみです。
手順 3 セキュリティ設定
今日使うアプリケーションの通信を許可します。
firewall-cmd --list-all
で現在の設定を確認- 下を書いたファイルを作ってコピペで一気に実行
firewall-cmd --permanent --zone=public --add-service=dns # UDP/53, TCP/53 のようにポート番号を指定してもOK
firewall-cmd --permanent --zone=public --add-service=http
firewall-cmd --permanent --zone=public --add-service=https
firewall-cmd --permanent --zone=public --add-service=smtp
firewall-cmd --permanent --zone=public --add-service=pop3
firewall-cmd --permanent --zone=public --add-service=imap
firewall-cmd --permanent --reload
firewall-cmd --list-all
で確認
手順 4 各種サーバアプリケーション設定
続いて、www や DNS など構築する際、共通する操作をまとめます。
インストールコマンド yum
- インターネットを使ってインストールすることが多いので、まずもってこれが出来ていることが前提
- まず
ping [何らかのURL]
で確認
- まず
yum list installed
ですでにインストールされているものを確認してみますyum list installed | grep python
などのように grep で絞るとラクチン
どんなアプリケーションでも共通の操作
yum -y install [app]
でインストール/etc/(hoge).conf
の設定ファイルを編集- サービスの起動と有効化
systemctl start [app]
systemctl restart [app]
設定ファイルのところだけがアプリケーションによって異なります。
Web サーバ構築 ( Apache )
では、実際にWebサーバから構築していきます。
httpd の設定
- 設定ファイルの場所
root/
| ├ etc/
| ├ httpd/
| ├ conf/
| ├ http.conf
- vi で編集
vi /etc/httpd/conf/httpd.conf
で設定ファイルを開くset number
で行番号が出るようにしましょう:151 allowOverride None
の None を = に変更
systemctl enable httpd
で有効化systemctl status httpd
で確認- – 実際にブラウザからIPアドレスを入力するとテストページを表示
出ました!
コンテンツを編集
- html ファイルの場所
- httpd をインストールすると下のディレクトリとファイルが作成される
root/
| ├ var/
| ├ www/
| ├ html/
| ├ index.html
- index.html を vi で編集
<html>
<head>
<title>test page</title>
</head>
<h1>instsv</h1>
<body>
this is a test page.
</body>
</html>
DNS サーバ 構築 ( BIND )
DNS について
- ドメインについて知ろう
- www.yahoo.co.jp :FQDN
- www :ホスト名
- yahoo.co.jp :ドメイン名、組織名
- DNS の仕組み
- DNS クライアント (リゾルバ resolver と呼ばれる) がクライアント PC にある
- クライアント PC から DNS サーバに問い合わせ
- サーバはゾーンデータベース (組織名-IP アドレスをまとめたファイル) を検索
- 組織毎に DNS がある
- DNS は分散システム (分散している DNS 同士で解決している)
- サーバからIPアドレスをローカルに返す
- リゾルバの設定
- クライアント PC も必要
- DNS サーバも必要
- ドメイン名の仕組み
.
ルートドメイン- .gov .com .jp など // TLD ( TLD TopLevelDomain) とも言う
- root-server.org にあります
- .co.jp
- yahoo.co.jp
- jp の DNS サーバから問い合わせしている
なるほど、それで IP アドレスの設定をするときに、DNS サーバの IP アドレスを入力するのですね。
DNS 設定の前に
- 今日のDNS
- .
- com
- example
- 教室用の PC 1 ~ 24 台 (組織がg1 ~ g24)
- com
- sv1.g24.example.com // 本名
- www.g24.example.com // 別名
- .
- インストール時の注意
- apache を httpd としたように BIND は named という名前でインストール
- name のディレクトリ
root/
| ├ var/
| ├ named/
| ├ ゾーンファイル // IPアドレスファイルを置く
|
| ├ etc/
| ├ named.conf // DNSサーバ全体設定
- 設定の手順
- named.conf を設定
- ゾーンファイル を設定
DNS 構築・設定 演習
- DNS サーバ ( BIND ) をインストール
yum -y install bind bind-utils
// bind-utils は便利ツール
- 全体設定
vi /etc/named.conf
で編集 -> 実験しやすいよう設定をゆるめるlisten-on port 53 { 127.0.0.1; };
-> 127.0.0.1 を any に変更 // どこで受付するかallow-query { localhost; }
-> localhost を any に変更 // どこからのアクセスに限るか- などなどを設定
- 一番下の行にゾーン情報を追加
zone "g**.example.com" IN {
type master;
file "g**.exapmle.com.zone";
allow-update ( none; );
};
- ゾーンファイル
vi /var/named/g**.example.zone
を作成 // .zone を .db にする派もある- めっちゃ厳しいので注意が必要
- 左に _(スペース) は絶対に入れない
- TAB キーでインデントするとよいでしょう
- @ はドメイン名の省略 // 昔の時代のため 1 文字でも減らしたかった
.
を忘れない
$STL 1D
@ IN SOA sv1,g**.example.com. root.g**.example.com. ( ;root は管理者のメールアドレス。ただしメールアドレスとはいえ @ をつけるとドメイン名とみなされる
1 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
IN NS sv01.g**.example.com.
IN MX 10 sv01
sv01 IN A 192.168.17.**
www IN CNAME sv01
mail IN CNAME sv01
systemctl rstart named
で DNS サーバを再起動dig www.g**.example.com
で確認 // dig もしくは nslookupntmui
で DNSサーバのIPアドレスを変更- 自分自身を示す特殊なIP 127.0.0.1 を入れておくと、柔軟に変わる
- ドメイン名補足
- (別名) CNAME www.g**.example.com
- CNAME は別のホストでも良い (例えば別サーバにある)
- (本名) Aレコード instsv.g**.example.com
- (別名) CNAME www.g**.example.com
おおー。CNAMEって、そういうことだったんですね。
別ドメインで作った Web ページを同じドメインにするときに CNAME を設定してもらっていましたが、そんな便利な仕組みで動いていたんですね。
メール サーバ 構築 ( Postfix / Dovecot )
メール の仕組み
POP は受信と安易に記憶していたのですが、mail サーバとクライアントのプロトコルだったんですね。(前提が浅はかすぎる…)
こうやってプロトコルがどんな役割を果たしているのかわかると、なぜその設定をするのかわかるので、とても助かります。
Postfix / Dovecot の設定
- まずは MX レコードで引けるかどうか確認
dig g**.example.com mx
yum -y install posffix dovecot
でmailサーバをインストール- dovecot が POP3 と IMAP のメール受信サーバ
- Postfix はメール配信サーバ
vi /etc/postfix/main.cf
で設定ファイルを編集- :76 myhostname で サーバ名を編集
- :83 mydomain ドメイン名を編集
- など
- 有効化と無効化
- :113 inet_interfaces = all
- など
vi /etc/dovecot.conf
で設定ファイルを編集- :24 protocols = imap pop3 でプロトコルを設定
vi /etc/dovecot/conf.d/10-mail.conf
でファイルを編集- :30 mail_location = maildir:~/Maildir // postfixのディレクトリを設定
vi /etc/dovecot/conf.d/10-auth.conf
で認証ファイルを編集- :10 -#-disable_plaintext_auth = no // #を削除して有効にする
vi /etc/dovecot/conf.d/10-ssl.conf
で認証ファイルを編集- :8 ssl = no // SSL 認証を無効化
- メールクライアント ( MaxFree ) をインストール
- GUI で SMTP/POP3 などを設定
- 新谷さんのアドレスにメール送信 !
けっこう多くの設定ファイルを編集するので、受講者の皆さんも集中して作業していました。
それだけに、最後、新谷さんにメールを送信できて、新谷さんからの返信を受信できると、とても心地よい達成感を感じてらっしゃったようです。
PC ごとに IP を振った意味は、この体験にあったんですね。ニクい演出です。
WordPress を使ってアプリケーションサーバとデータベースサーバを構築
最後に、実際のアプリケーション、WordPress を構築します。
- MariaDB のインストール
- PHP のインストール
- その他 必要なライブラリもインストール
- WordPress のインストール
- WordPress のデフォルトページを www/html/wp に配置
- WordPress にログインして画面でポチポチDBなどを設定
- 表示!!
簡単なブログシステムですが、実際のアプリケーションを立ち上げると、動いた体験がとてもいい感じです。
最後 WordPress で作業をしながら、このコースは修了となりましたが、多くの方が構築に夢中になって残って作業をしていたのが印象的でした。
まとめ
このコースでは 1 日を通じて、DNS、mail、実際のアプリケーションサーバと、ひたすら構築しました。
DNS やメールは普段設定しないので、貴重な仕組みの学習と体験になったことに加え、
DNS が設定できた -> mail 配信できた -> mail アドレスが出来たので、WordPress でログインできた
と体験が繋がっていたので、それが受講者みなさんが演習に夢中になる要因だったと思います。
インフラ構築に慣れるとともに、面白いと思える学習体験ができるので、インフラエンジニアになろうとする方にはとてもオススメです !!!
label SE カレッジの無料見学、資料請求などお問い合わせはこちらから!!
label SEカレッジを詳しく知りたいという方はこちらから !!
IT専門の定額制研修 月額28,000円 ~/ 1社 で IT研修 制度を導入できます。
年間 670 講座をほぼ毎日開催中!!
SEプラスにしかないコンテンツや、研修サービスの運営情報を発信しています。