Linux初心者がAzure仮想マシンでHTTPサーバを構築した話

Linux初心者がAzure仮想マシンでHTTPサーバーを構築した話

 

こんにちは!新卒でサイオステクノロジーに入社したごままぐろです。

本記事では、Linux初心者が研修で得た学びを以下の構成でご紹介します。LinuxはITパスポートなどの資格勉強で少し知っている程度だったのですが、この度新卒研修の一環としてLinux仮想環境でのサーバ構築を行いました。 これからLinuxを学ぶ方の参考になれば幸いです。

Linuxについて

Linuxとは

LinuxはWindowsやMacのようなOS(Operating System)の一種です。OSS(Open Source Software)として公開されているため、世界中の開発者が自由にプログラムの中身を確認したりカスタマイズできます。

厳密にいえば、「Linux」とはOSの核心である「カーネル」のことを指すようです。しかし実際には、カーネルに独自の管理ツールやアプリケーションを組み合わせた「Linuxディストリビューション」のことをLinuxと呼ぶことが多いそうです。

有名なLinuxディストリビューションには以下のものがあります。

  1. RedHat系: RHEL、AlmaLinux など
  2. Debian系: Debian、Ubuntu など

Linuxの特徴

Linuxには以下のような特徴があります。

  • 基本的に文字ベースで操作する
  • データをディレクトリとファイルの入れ子構造で管理する
  • ユーザごとに権限を設定できる

私の場合、このあたりの特徴を掴むのに時間がかかりました。今も完全に理解できているか分からないのですが、私なりの言葉で簡単に説明したいと思います。

LPI-Japanという団体が初学者向けに「Linux標準教科書」という資料を公開しているので、正確な情報を知りたい方はそちらを参照してみてください。

1.基本的に文字ベースで操作する

Linuxでは、キーボードで命令(コマンド)を入力するCUI(Character User Interface)での操作が基本です。

Linuxのコマンドは基本的に「コマンド」「オプション」「引数」で構成されます。

同じ操作でも、ディストリビューションによっては別のコマンドやオプションが存在する場合があるため、注意が必要です。

2.データをディレクトリとファイルの入れ子構造で管理する

Linuxでは、データはディレクトリとファイルの入れ子構造で管理されます。

ディレクトリはフォルダのようなもので、ファイルを整理するための入れ物です。ディレクトリの中にさらにディレクトリを作ることもでき、これを入れ子構造と呼びます。

ファイルを操作する時には、ファイルの住所(パス)を指定する必要があります。パスには、最上位(/ルートディレクトリ)からの絶対パスと、現在のディレクトリからの相対パスがあります。

  • 絶対パス:/home/username/newdir/file1.txt
  • 相対パス:(現在の位置が/home/usernameの場合)newdir/file1.txt

3.ユーザごとに権限を設定できる

Linuxには「ユーザ」という概念があります。ユーザには、人がログインして操作を行うためのものの他に、人がログインできず内部でプログラムを動かすためのものもあります。

Linuxでは、ユーザごとに権限を設定できます。権限には、読み取り(r)、書き込み(w)、実行(x)の3種類があります。

例えば、ファイルに何か書き込みたいと思っても、自身が操作するユーザにその権限がなければ書き込むことはできません。

権限を設定するコマンドもあるため、必要に応じて割り当てたり変更する必要があります。

本章の内容は以上です。

次章では、実際にLinux仮想環境を用意してサーバ構築を行った手順をご紹介します。

Linux仮想環境でのサーバ構築

仮想マシン(AzureVM)の用意

Linuxは、コンピュータ(ハードウェア)の機能を管理しプロセスとの仲立ちを行うカーネルと、カーネルに人間の出した命令(コマンド)を翻訳し伝えるシェルで構成されています。

実際にLinuxを動かして学ぶには、コマンドを出す対象となるコンピュータが必要です。

しかし私が現在使っているコンピュータはWindowsという別のシステムが管理しているため、Linuxのコマンドを書いても通じません。

そのため今回は仮想化されたコンピュータである「Azure VM(Virtual Machines)」というクラウドサービスを利用して仮想環境を構築しました。

仮想マシンOSには、「Red Hat Enterprise Linux (RHEL) 9.4」を選択しました。

Windows環境を維持したままLinuxを実際に操作する方法は他にもいろいろあるので、ご自身のパソコンやその他条件に応じて選択することをおすすめします。

仮想マシンにSSH接続

仮想マシンを作成したら、次はそれに接続する必要があります。

今回はSSHという通信プロトコルを使って接続しました。

SSHは暗号化された通信を行うためのプロトコルで、今回のようにコンピュータが手元にない(リモート)場合でも安全に接続することができます。

SSH接続の手順は以下の通りです。

  • 仮想マシン作成時に生成された秘密鍵を自分のパソコンに保存する
  • ターミナル(コマンドプロンプト)を開き、以下のコマンドを実行して接続する

ssh -i 秘密鍵のパス ユーザー名@IPアドレス

  • 初回接続時には、ホストキーの確認が求められるので「yes」と入力

    HTTP通信に必要なもののインストールと設定

    作成した仮想マシンには最低限の機能しかないため、目的に応じて必要な部品や設定を追加する必要があります。

    今回は、Webブラウザにアドレスを入力するとWebページが表示されるようにしたかったので、Apacheというものをインストールしました。

    1.Azure Portalで受信ポート規則の変更
    認証のため受信ポート22番(SSH)を許可する
    ソースは安全のため自分のIPアドレスに限定する

    2.仮想マシン上でApacheのインストール

    sudo dnf install httpd

    3.Apacheの起動と自動起動設定

    ・サービスの起動

    sudo systemctl start httpd

    ・自動起動の有効化

    sudo systemctl enable httpd

    4.RHELの内部ファイアウォールでHTTPトラフィックの許可

    ・HTTPの許可

    sudo firewall-cmd --add-service=http --permanent

    ・設定の反映

    sudo firewall-cmd --reload

    5.Azure Portalで受信ポート規則の変更
    Webページを閲覧するため受信ポート80番(HTTP)を許可する
    ソースは自分のIPアドレスに限定する

    表示するコンテンツの作成

    Apacheのデフォルト設定では、「/var/www/html」ディレクトリにHTMLファイルを置くことで、Webページとして表示されるコンテンツを作成できます。

    今回は、以下のコマンドで「index.html」を作成しました。

    sudo vi /var/www/html/index.html

    Linuxでファイルを編集するには、viエディタなどのテキストエディタを使用します。

    viエディタには実際に中身を編集するインサートモードと、ファイルの保存や終了などの操作を行うコマンドモードがあります。

    慣れないうちは操作が難しく、何度かパニックになりました。

    viエディタの基本的な操作方法を表した図

     

    Webページの表示確認

    Webブラウザに仮想マシンのIPアドレスを入力すると、作成したWebページが表示されます。

    Azure Portalの受信ポート規則でソースを自分のIPアドレスに限定しているため、他のIPアドレスからはアクセスできません。

    感想とまとめ

    以上が今回のサーバ構築で行った内容でした。全くの初心者の私にとっては非常に充実した経験となりました。

    実はこの後も様々な学習を続けており、現在は認証認可というもっと高度な設定に挑戦しています。余裕があれば現在取り組んでいる内容もまとめたいと思っているため、また機会があればよろしくお願いします。

    長くつたない文章を最後までお読みいただき、ありがとうございました。

    ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

    役に立った 役に立たなかった

    0人がこの投稿は役に立ったと言っています。
    エンジニア募集中!

    コメントを残す

    メールアドレスが公開されることはありません。 ※ が付いている欄は必須項目です