ウェブサーバーのインストールと設定 (Nginx/Apache)
1. Webサーバーとは?
今日はNginxとApache、2つの人気Webサーバーについて話します。講義の最後には、あなたのサーバーがインターネット上でユーザーをにこやかに迎える準備が整います。
コマンドに飛び込む前に、そもそも何を目指しているのかを考えましょう。Webサーバーというのは、HTTPリクエスト(例えば、ユーザーがブラウザでサイトのURLを入力する)を受け取り、それを処理して対応するコンテンツ(HTMLページ、ファイル、または「404 Not Found」のようなエラー)を返すプログラムです。これはユーザーとあなたのコンテンツをつなぐ架け橋です。
Nginx vs Apache: Webサーバーの戦い
もしNginxとApacheがカフェで出会ったら:
- Nginxはラベンダーラテを注文して、すべてを非同期で処理するだろう。「リクエストを渡してくれ、すぐにファイルを返すよ。邪魔しないでね!」。
- Apacheは、逆に、もっと伝統的に振る舞い、各タスクにスレッドを作成して、丁寧に対応し、ただし大量のリクエストでは少し遅くなるかもしれない。
簡単な違い:
特徴 | Nginx | Apache |
---|---|---|
アーキテクチャ | 非同期 | スレッド指向 |
パフォーマンス | 高負荷時に高い | 動的な処理 (PHP/Perl) に適応 |
簡潔性 | 設定が簡単、ただし独自の癖がある | より汎用的だが、少し複雑 |
どちらを選ぶべきか?
- 静的なファイル(例えばブログやランディングページ)だけのサイトなら、Nginxがおすすめです。
- 動的なWebアプリケーション(例えばPHPサイト)を扱うなら、Apacheはより柔軟性を提供します。
2. Webサーバーのインストール
さて、なぜ必要なのか理解したところで、さっそくインストールを始めましょう。NginxとApacheの両方のインストール方法を見ていきます。どちらが好きか選んでインストールするか、両方一緒にインストールしてプロフェッショナル気分を味わいましょう。
Nginxのインストール
パッケージリストを更新します:
sudo apt-get update
Nginxをインストールします:
sudo apt-get install nginx
サーバーのステータスを確認します:
sudo systemctl status nginx
問題がなければ、
active (running)
のような状態が表示されます。デフォルトのページを確認します: ブラウザを開き、
http://localhost
と入力します。Nginxのウェルカム画面が表示され、インストールが成功したことを確認できます。
Apacheのインストール
パッケージリストを更新します:
sudo apt-get update
Apacheをインストールします:
sudo apt-get install apache2
サーバーのステータスを確認します:
sudo systemctl status apache2
Nginxと同様に、ステータスは
active (running)
でなければなりません。デフォルトのページを確認します: ブラウザを開き、
http://localhost
にアクセスします。今度はApacheのデフォルトページが表示されます。
3. ウェブサーバーの基本設定
設定はどこに隠れているの?
Nginxのメイン設定ファイルはここにあります:
/etc/nginx/nginx.conf
Apacheの場合:
/etc/apache2/apache2.conf
お気に入りのエディタ (たとえばnano
) を使って設定ファイルを開いてみて!
sudo nano /etc/nginx/nginx.conf
ここが君の最初の冒険の始まり:もしかしたら、今は何も分からないかも。設定ファイルってまるでRPGの呪文みたいに見えるかもしれない。でも心配しないで、これから一緒に学んでいこう!
サーバーの起動、停止、再起動
Linuxでサービスを管理する方法を知っていれば「半分は解決した」みたいなもの。これがウェブサーバーの基本的な管理コマンドだよ:
Nginxの場合:
sudo systemctl start nginx # 起動
sudo systemctl stop nginx # 停止
sudo systemctl restart nginx # 再起動
sudo systemctl reload nginx # 設定の再読み込み
Apacheの場合:
sudo systemctl start apache2
sudo systemctl stop apache2
sudo systemctl restart apache2
sudo systemctl reload apache2
設定の確認
サーバーを再起動する前に、設定にミスがないかいつも確認しよう:
Nginxの場合:
sudo nginx -t
Apacheの場合:
sudo apachectl configtest
設定ミスがある場合はエラーが表示されるから、うっかりサーバーを壊してしまうことはないよ!
4. デモ: 初めてのサイトを起動する
これから、Web開発者が大好きなことをやるよ – 驚くほどクリエイティブな名前「Hello Server」でサイトを作る。
Nginxの場合
サイト用のディレクトリを作成する:
sudo mkdir -p /var/www/hello sudo nano /var/www/hello/index.html
ファイルに次の内容を記入する(そう、シンプルが一番だよ):
<h1>Hello, Nginx Server!</h1>
設定を作る:
sudo nano /etc/nginx/sites-available/hello
シンプルな設定例:
server { listen 80; server_name hello.local; root /var/www/hello; index index.html; location / { try_files $uri $uri/ =404; } }
設定を有効化する:
sudo ln -s /etc/nginx/sites-available/hello /etc/nginx/sites-enabled/ sudo nginx -t sudo systemctl reload nginx
ローカルマシンで
hello.local
というドメイン名を設定するために/etc/hosts
にエントリを追加する:127.0.0.1 hello.local
ブラウザでサイトを確認する: http://hello.local.
hostsファイルはIPアドレスとドメイン名のマッピングを含むよ。これがローカルDNSサーバーみたいなものだね。このファイルはすべてのオペレーティングシステムに存在する。Windowsにもあって、C:\Windows\System32\drivers\etc\hostsにあるよ。
Apacheの場合
ディレクトリを作成する:
sudo mkdir -p /var/www/hello sudo nano /var/www/hello/index.html
ファイルに以下を記入する:
<h1>Hello, Apache Server!</h1>
仮想ホスト設定を作成する:
sudo nano /etc/apache2/sites-available/hello.conf
設定例:
<VirtualHost *:80> ServerName hello.local DocumentRoot /var/www/hello <Directory /var/www/hello> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory> </VirtualHost>
設定を有効化する:
sudo a2ensite hello.conf sudo systemctl reload apache2
/etc/hosts
にエントリを追加する:127.0.0.1 hello.local
動作を確認する: http://hello.local.
今日のレクチャーを終えたら、主要なWebサーバーのインストールと設定が自分でできるようになるよ。ちょっと頑張れば、本格的なサイトやアプリケーションもデプロイできるようになる。HTTPSはまた別のタイミングで紹介するね。
GO TO FULL VERSION