読者です 読者をやめる 読者になる 読者になる

ぱんくずリスト

気になる話をちらほらと。

CentOSでWebサーバー構築

久しぶりに書く記事ですが、研究室でのサーバ構築レクチャーの備忘録です。

深くやらず、ローカル環境内でHello Worldを表示するだけの簡単なWebサーバ構築です。

気分が乗れば発展的なことも後々やるかもです。(希望があればやります)

注意点

今回CentOSのインストール時にユーザーは作成しますが、基本的このハンズオンでコマンドを入力するときは全てスーパーユーザー(root)で入力します。
通常ユーザーではエラーを吐くコマンドもありますのでご注意ください。 (rootでやることが気になる方は、visudoでユーザーでsudoコマンドを使えるように設定してください)

前準備

VirtualBoxのインストール

ここからVirtualBoxインストーラをダウンロードして、インストール

CentOSのイメージのダウンロード

ここの"DVD ISO"から最新版OSイメージをダウンロード。 ※たくさんURLがありますが、全てミラーサイトなので、どこからでも同じイメージをダウンロードできます。

仮想マシンの作成

  1. virtual boxを起動
  2. 新規(左上の青いボタン)を押す
    f:id:pankuz:20170210231332p:plain

  3. 仮想環境の名前を入力(ここではCentOS 7と入力)して、続けるを押す

    • 下のタイプとバージョンは名前をOSの名前を入力すると自動で変わります(変わらないときは手動で変える)
      f:id:pankuz:20170210231448p:plain
  4. モリーサイズは初期値のまま続けるを押す

    • 気になるようであれば、自分のPCのメモリと相談して変更する(基本Linuxであれば512MBもあれば十分だと思うけど)
  5. 仮想ハードディスクを作成するにチェックを入れて作成を押す

  6. 特にこだわりが無ければVDIにチェックを入れて続ける
  7. 可変サイズにチェックを入れて続ける

    • 固定サイズの方が高速なので、容量に余裕があれば固定サイズにするのもあり
  8. 何もいじらず作成を押す

  9. 仮想マシンの構築完了

仮想マシンにOSをインストールする前準備

  1. メニューバーのVirtualBox -> 環境設定…をクリック

  2. ネットワーク -> ホストオンリーネットワークをクリックし、右側の+の描かれたボタンを押す

  3. vboxnet0という項目が作成されたら、ドライバーのようなアイコンをクリックして、vboxnet0の設定画面を開く

  4. アダプター欄の[IPv4アドレス]と[IPv4ネットマスク]を確認する。(後々利用します) 確認したら設定画面を全て閉じる。
  5. 作成した仮想マシンを選択して、新規の隣の設定を押す
  6. ネットワーク -> アダプター2 を押し、ネットワークアダプターを有効化にチェック、割り当てにホストオンリーアダプターを設定してOKを押す
    • これはホストOS(自分のPC)とゲストOS(仮想マシン)間のみのネットワークを作るための設定です。

centosのインストール

  1. 作成した仮想マシンを選択して起動
  2. インストールするディスクイメージを聞かれるので、ダウンロードしたイメージを選ぶ(最初から選ばれてなかったら右のボタンでフォルダから選択する)

  3. 起動したらInstall CentOS Linux 7を選択してEnter

  4. 言語選択のメニューが出でくるので日本語を探して続行

  5. インストールの概要画面が出てきたらソフトウェアの選択をクリック

  6. 今回はGUIなサーバー構築なので、サーバー(GUI使用)を選択して完了(アドオンは何も選択しなくて大丈夫です)

  7. 概要画面に戻ったらインストール先をクリックし、何もいじらずに完了を押す。

  8. 概要画面に戻ったらネットワークとホスト名をクリック、全てのネットワークをオンにし、完了を押す

  9. インストール開始を押し、インストールが終わるのをひたすら待つ

  10. インストールが終わったらユーザー作成、ROOTパスワードをクリックして設定を終えたら設定完了ののち再起動
  11. 再起動後に、ライセンスの確認をし設定を完了させると、ログイン画面に映るので、先ほど作成したアカウントでログインできたら完了

ネットワークのセットアップ

現時点だと、ホストOSとゲストOS間をsshで接続できないため、先ほど設定したホストオンリーアダプターに固定IPの設定を行います
1. nmtuiコマンドでnetwork managerを起動
# nmtui
2. 「接続の編集」を選択してEnter
2-1. Enterを押すと、ネットワークの一覧が表示されます。
今回の例だと「enp0s3=NAT」「enp0s8=ホストオンリーアダプター」を表しています。
3. ホストオンリーアダプターの設定をするのでenp0s8を選択してEnter
4. 固定IPを割り振りたいので、IPv4設定を<自動>から<手作業>にする(スペースキーでモードを切り替え)
5. IPv4設定の右にある<表示する>を選択しEnter、出てきた設定欄のアドレスの欄に設定したいIPアドレス(例:192.168.56.10/24 <- 最後の/24を忘れずに)を入力する
5-1. 今回は2で192.168.56.1/24の設定を行なっているので、使用できるIPアドレスは192.168.56.2~254です。
6. IPv6は使わないので、ついでに<自動>から<無視する>に設定して完了、nmtuiの画面を閉じる。
7. ネットワークの設定を更新するためにsystemctl restart networkで再起動
# systemctl restart network
8. ip addr コマンドでenp0s8の欄に上で設定したIPアドレスが表示されて入れば完了

ホストOSからゲストOSへSSH接続

  1. ip addrコマンドでゲストOSのipアドレスを確認
    $ ip addr
  2. enp0s8の欄に先ほど設定したIPアドレスが割り振られていることを確認して、そのIPを覚える
  3. ホストOS(自分のPC)に戻って、Macであればターミナルでsshコマンド、WindowsであればTeratermCygwinなどでssh接続を行う
    ここら辺は自分でググってください
  4. ssh接続ができれば完了

Apacheの設定

ついに本題、webサーバとして利用するためにapache(httpd)の設定を行います。
1. yumからhttpdをインストール
# yum install -y httpd
2. systemctlコマンドからhttpdを起動、およびサーバ起動時に自動的に起動するよう設定
# systemctl start httpd # systemctl enable httpd これで(ローカル環境で)webサーバが構築されました!
おめでとうございます!
これでホストOSのブラウザでURL欄にIPアドレスを直接入力すればapacheのページが開きまs…

( ゚д゚) ・・・

(つд⊂)ゴシゴシ

(;゚д゚) ・・・

(つд⊂)ゴシゴシゴシ

(;゚Д゚) …!?

つ、繋がんねえ工エエェェエエ工!!

はい、"ホストOS"のブラウザでは繋がらないんですね。
と言うのも現時点では外部からhttpにアクセスするポート(80番ポート)が開いてないため繋がらないんですね。
と言うわけで次は80番ポートを解放していきましょう。
ちなみに、外部から接続できないだけなので、ゲストOSのブラウザであれば正常に繋がります。

80番ポート解放

CentOS7では、セキュリティの観点から初めからいくつかのポートが閉じられています。(もしかしたら全てかも、気になる方は調べて、どうぞ)
セキュリティ設定はfirewalldというものを利用しているらしいので、firewalldの設定をうまくいじってポートを解放していきます。
と、いうわけで以下のコマンドを入力してください。

// デフォルトで起動を許可するサービスにhttpを追加することでポートを解放
# firewall-cmd --add-service=http --permanent
// firewallの設定をリロード
# firewall-cmd --reload

これで80番ポートが解放されました!
ホストOS側のブラウザで以下の画面が表示されれば一通りの作業は完了です。

Hello, Apache World

最後に自作のhtmlファイルを表示できるようにして見ましょう。 apacheでは、デフォルトでは上で示した画像が表示されますが、設定ファイルに記述されているディレクトリに指定されたファイル名でhtmlファイルを保存すると、デフォルトのページではなく、指定したhtmlファイルを参照して表示するようになります。 何もいじっていない状態では 「var/www/html/index.html」を参照するようになっているので、cdで移動、vimなどでindex.htmlを作成してみましょう。

# cd /var/www/html
# vim index.html
<html>
<body>
<h1>Hello, Apache World</h1>
</body>
</html>

index.htmlを作成、保存をし、ブラウザで開いて記述通りの表示がなされれば完了です。