33
古いPCをLinuxウェブサーバーに変える方法

1989年にティム・バーナーズ=リー卿によって発明されたワールド・ワイド・ウェブ(www、通称ウェブ)は、「ユニバーサル・リンク・インフォメーション・システム」として誕生し、ハイパーテキスト・マークアップ言語(HTML)を用いたウェブサーバーを通じて文書や情報を共有していました。HTMLだけでは多くの機能を実現できず、リモートマシンからのリクエストを受け付け、ウェブブラウザ経由でユーザーにHTMLコンテンツを提供するウェブサーバーが必要です。今では当たり前のことになっていますが、当時はウェブサーバーとHTMLが非常に重要でした。

最初のウェブサーバーはデスクトップコンピュータでした。具体的には、CERN(欧州原子核研究機構、フランス語で「Conseil européen pour la Recherche Nucléaire」の頭文字をとったもので、英語では「欧州原子核研究機構」)のNeXTcubeコンピュータです。CERNはフランスとスイスの国境に位置するメイランに拠点を置いています。コンピュータには「このマシンはサーバーです。電源を切らないでください」という注意書きが貼られていました。電源を切らないと最初のウェブサーバーがオフラインになってしまうという警告でした。

1.ターミナルを開き、OS が最新のソフトウェアを実行していることを確認します

sudo apt update && sudo apt upgrade

Linuxウェブサーバー

(画像提供:Tom's Hardware)

2. Apacheウェブサーバーをインストールします。ウェブサーバーには様々な選択肢(nginixや非常にシンプルなPythonウェブサーバーなど)がありますが、まずはApacheから始めるのが良いでしょう。

Tom's Hardware の最高のニュースと詳細なレビューをあなたの受信箱に直接お届けします。

sudo apt install apache2

Linuxウェブサーバー

(画像提供:Tom's Hardware)

3. Apacheウェブサーバーのウェブトラフィック(ポート80)がファイアウォールを通過できるようにファイアウォールを調整します。Uncomplicated Firewall(ufw)は、技術的な詳細を深く掘り下げることなくファイアウォールを設定できるシンプルなツールです。

sudo ufw allow 'Apache Full'

Linuxウェブサーバー

(画像提供:Tom's Hardware)

4. Apache がインストールされ、実行されていることを確認します。

sudo systemctl status apache2

Linuxウェブサーバー

(画像提供:Tom's Hardware)

5.ウェブサーバーにSSHサーバーをインストールします。これは必須の手順ではありませんが、ウェブサーバーへのリモートアクセスと安全なアクセスがあれば、物理的なアクセスなしで設定の調整、簡単な修正、サーバーの電源投入などを行うことができます。SSHサーバーを使用しない場合は、手順9に進んでください。

sudo apt install openssh-server

Linuxウェブサーバー

(画像提供:Tom's Hardware)

6. SSH サーバーを有効にします。

sudo systemctl enable ssh

Linuxウェブサーバー

(画像提供:Tom's Hardware)

7. SSH サーバーを起動します。

sudo systemctl start ssh

Linuxウェブサーバー

(画像提供:Tom's Hardware)

8. SSHトラフィックを通過できるようにファイアウォールを調整します。SSHは通常ポート22を使用しますが、「ssh」を使用する場合はポート番号を知る必要はありません。

sudo ufw allow ssh

Linuxウェブサーバー

(画像提供:Tom's Hardware)

9.システムを再起動します。systemctlコマンドを使ってサービスを再起動できるため、これは必ずしも必要ではありません。再起動でも同じ効果が得られますが、基盤となるシステムもリセットされ、サーバーが再起動されます。

sudo reboot

10.ログインして新しいターミナルを開き、数行のシンプルなHTMLを含む新しいテストファイルを作成します。これにより、Apache Webサーバーがコンテンツを提供しているWebディレクトリ/var/www/のルートにhello.htmlというファイルが作成されます。

sudo nano /var/www/html/hello.html

11.ファイルに次の HTML を追加します。

<html>
<title>Test Page</title>
<head>
</head>
<body>
<h1>Hello, world!</h1>
</body>
</html>

12. CTRL + X、Y、ENTER の順に押してコードを保存します。

13.サーバー上で Web ブラウザーを開き、127.0.0.1/hello.html にアクセスすると、作成したページが表示されます。

Linuxウェブサーバー

(画像提供:Tom's Hardware)

14.ターミナルでサーバーのIPアドレスを取得します。アドレスをメモしておいてください。

hostname -a

15.別のコンピューターまたはデバイスでブラウザを開き、サーバーのIPアドレスに続けて/hello.htmlと入力します。以下は例です。

192.168.0.138/hello.html

Linuxウェブサーバー

(画像提供:Tom's Hardware)

これでシンプルなウェブサーバーが完成し、自宅ネットワーク上のユーザーにコンテンツを提供する準備が整いました。これを基盤として、フレームワークを使用することで、ウェブコンテンツをより視覚的に魅力的なものにすることができます。

Linuxウェブサーバー

(画像提供:Tom's Hardware)

例えば、tom.htmlという別のファイルを作成し、Bootstrapを使ってコンテンツを表示する大きく太字のページを作成しました。これはBootstrap用語ではヒーローと呼ばれます。Bootstrapのサンプルを参考に、コンテンツの表示方法を試してみてください。

外部サイトへのサービス提供

Linuxウェブサーバー

(画像提供:Tom's Hardware)

社内ウェブサーバー(イントラネットと呼ばれることもあります)を持つことは素晴らしいことですが、作成したコンテンツを世界と共有したい場合はどうすればよいでしょうか?そのためには、ポートフォワーディングを使ってルーターにサーバーへのトラフィックを許可するように指示する必要があります。しかし、IPアドレスはユーザーフレンドリーな手段とは言えません。そこで、DNSサービスを使ってサーバーにトラフィックを送信しましょう。

始める前に、十分に注意してください。ルーターを世界に公開するということは、誰かがあなたのIPアドレスを見て不正行為を企てる可能性があることを意味します。ご自身と財産を守るために、必要なセキュリティ対策をすべて講じてください。これは個人使用のみを目的としていますので、実稼働のハードウェアでは試さないでください。

1.ターミナルを開き、このコマンドを使ってルーターのIPアドレスを取得します。IPアドレスをメモしておいてください。

hostname -I

2.ルーターの設定を開き、「ポート転送」セクションに移動します。このセクションの場所はルーターによって異なりますが、この例では「詳細設定」>>「セキュリティ」にあります。

Linuxウェブサーバー

(画像提供:Tom's Hardware)

3.ルーターの設定で、トラフィックをサーバーのIPアドレスに転送します。内部ポートと外部ポートを、Webトラフィックのデフォルトポートである80番ポートのみを使用するように設定します。変更を有効にするには、変更を保存してください。

Linuxウェブサーバー

(画像提供:Tom's Hardware)

4. https://whatismyipaddress.com/を使用して、サーバーの外部 IP アドレスを取得します。

5.別のデバイスでブラウザを開き、外部IPアドレスの後に「/hello.html」と入力します。例:http://xxx.xxx.xxx.xxx/hello.html

ページにアクセスできる場合は先に進み、アクセスできない場合はルーターの設定を確認してから先に進んでください。

6.サーバーの URL を作成するには、https://www.duckdns.org/index.jspにアクセスして新しいアカウントを作成します。

7.新しいドメイン名を作成し、「ドメインを追加」をクリックします。ここではtomshardware.duckdns.orgを選択しました。これにより、外部IPアドレスが自動的に取得され、URLがそのIPアドレスを指すようになります。

Linuxウェブサーバー

(画像提供:Tom's Hardware)

8.別のデバイスで URL を開き、末尾に /hello.html を追加します。

Linuxウェブサーバー

(画像提供:Tom's Hardware)

9.ブラウザにテストページが表示されるはずです。プロジェクトのより興味深い目標を示すために、ブートストラップページを再利用しました。

Linuxウェブサーバー

(画像提供:Tom's Hardware)