はじめに
目的
この文書は「web サーバー 設定」について、初心者の方が実際に手を動かして学べるようにまとめたガイドです。Apacheのインストールから基本設定、ファイアウォールの設定、ルーターのポート開放、性能調整まで順を追って説明します。実践的な手順とコマンド例を中心に記載しますので、学習や小規模な検証に向いています。
対象読者
- Webサーバーを初めて構築する方
- 自宅や社内で簡単な公開テストを行いたい方
- 基本的なLinuxコマンドがわかる方(最低限の説明はあります)
この文書の特徴
- 専門用語をなるべく減らし、必要な場合は具体例で補足します。例えば「ポート」は通信の入り口、「ファイアウォール」は玄関の鍵といったイメージで説明します。
- 手順は実際のコマンド例を示します。例:Ubuntuでのapacheインストールや、firewalld/ufwの設定など。環境によってコマンドが異なる場合は注意点を明記します。
注意点(読む前に)
- 本番環境で実行する前にテスト環境で確認してください。設定ミスで外部にサービスが露出する可能性があります。
- 管理者権限(rootまたはsudo)が必要です。例:sudo apt update など。
次章からは具体的な構築演習に入ります。まずは全体の流れを把握してから進めてください。
サーバー構築演習の概要
演習の目的
サーバー構築演習では、実際に手を動かしてWebサーバーやアプリケーションサーバーを立ち上げる手順を学びます。Linuxの基本操作を実務に近い形で身につけ、トラブル対応力を高めます。
学習で得られるスキル
- OSインストールやユーザー管理、ファイル権限の扱い
- Webサーバー(例:Apache)の導入と起動確認
- ファイアウォールやルーターの設定、ポート開放の基本
- ログの確認と簡単なトラブルシューティング
演習環境の例
- ローカルPC上の仮想マシン(VirtualBox、VMware)
- Dockerコンテナによる軽量な環境
- クラウドの無料枠を使った実機に近い構成
具体例として、Ubuntuの仮想マシンにApacheを入れてブラウザで確認します。
進め方の基本
- 目的を明確にする(何を動かすか)
- 環境を用意する(VMやコンテナ)
- パッケージをインストールしサービスを起動する
- ネットワークとファイアウォールを確認する
- ログを見て動作を検証する
注意点とコツ
- ルート権限の取り扱いは慎重に行ってください。誤操作でシステムを壊す恐れがあります。
- 設定変更前にバックアップを取り、変更履歴を残す習慣をつけてください。
- 小さな手順ごとに動作確認すると問題を早く見つけられます。
Apacheのインストールと起動
概要
Webサーバーの第一段階はApacheの導入と起動確認です。ここではUbuntu系を想定し、具体的なコマンド例と動作確認手順を示します。
インストール手順
- パッケージ更新:sudo apt update
- Apacheをインストール:sudo apt install -y apache2
- -yは自動で「はい」を選ぶオプションです。処理は数分で終わります。
サービスの操作
- 起動:sudo systemctl start apache2
- 停止:sudo systemctl stop apache2
- 再起動:sudo systemctl restart apache2
- 状態確認:sudo systemctl status apache2
- 自動起動有効化:sudo systemctl enable apache2
状態がactive (running)になっていれば正常に動作しています。
ファイアウォール設定
- UFWを使う場合:sudo ufw allow ‘Apache’ もしくは sudo ufw allow 80/tcp sudo ufw allow 443/tcp
- 設定反映後、sudo ufw statusで許可を確認します。
動作確認
- ブラウザでサーバーのIPまたはドメインにアクセスし、Apacheのデフォルトページが表示されるか確認します。
- コマンド確認:curl -I http://localhost または curl -I http://サーバーIP
- HTTP/1.1 200 OK が返れば成功です。
トラブルシューティングのポイント
- ポート競合:既に別サービスが80番を使っていると起動に失敗します。sudo ss -tlnpで確認します。
- ログ確認:/var/log/apache2/error.log や journalctl -u apache2 -b で詳細を確認します。
- 設定ミス:設定を編集したら sudo apachectl configtest で文法チェックを行ってから再起動してください。
Apacheの基本設定
ここでは、Apacheの基本的な設定項目をわかりやすく説明します。設定ファイルの場所や重要なディレクティブ、複数サイト運用やSSL/TLSの設定までを扱います。
設定ファイルの場所
- メイン設定: /etc/apache2/apache2.conf — サーバー全体の基本設定が入ります。例: ログやモジュールの読み込み。
- サイト設定: /etc/apache2/sites-available/ — 個別サイトの設定ファイルを置きます。a2ensiteで有効化します。
- ドキュメントルート: /var/www/html/ — デフォルトの公開ディレクトリです。サイトごとに変更可能です。
重要なディレクティブ
- ServerName: サーバーのホスト名を指定します。例: ServerName example.com。省略すると警告が出ることがあります。
- DocumentRoot: 公開するコンテンツのディレクトリを指定します。例: DocumentRoot /var/www/html/example
設定を変えたら apachectl -t で構文チェックを行い、systemctl reload apache2 で反映します。
複数サイト(VirtualHost)の運用
VirtualHostを使うと1台のサーバーで複数サイトを動かせます。例:
< VirtualHost *:80 >
ServerName example.com
DocumentRoot /var/www/html/example
< /VirtualHost >
ファイルは sites-available に置き、a2ensite example.conf で有効化します。無効化は a2dissite です。
SSL/TLSの基本設定
SSLを有効にするには ssl モジュールを読み込み、証明書を指定します。主なディレクティブ:
– SSLEngine on
– SSLCertificateFile /path/to/fullchain.pem
– SSLCertificateKeyFile /path/to/privkey.pem
例として Let’s Encrypt を使う場合、証明書は /etc/letsencrypt/live/example.com/ に置かれます。a2enmod ssl と a2ensite default-ssl.conf で有効化後、再起動してください。
設定の反映と確認
- 構文チェック: apachectl -t
- 再起動: systemctl restart apache2
- 動作確認: curl -I http://localhost や https://example.com
ログは /var/log/apache2/error.log と access.log を確認します。
ファイアウォール設定の詳細
概要
サーバーを外部の不正接続から守るため、UFW(Uncomplicated Firewall)を使って必要な通信だけ許可します。基本方針は「入力を拒否し、必要なポートだけ開ける」ことです。
基本的な手順
- 現在の状態確認
sudo ufw status verbose で既存ルールを確認します。 - デフォルトの方針を設定
sudo ufw default deny incoming
sudo ufw default allow outgoing - 必要なポートを許可
- SSH: sudo ufw allow ssh または sudo ufw allow 22/tcp
- HTTP/HTTPS: sudo ufw allow ‘Apache Full’ または sudo ufw allow 80/tcp && sudo ufw allow 443/tcp
- UFWを有効化
変更前に必要なポートを設定してから sudo ufw enable を実行します。接続切断を避けるためSSHは先に許可してください。 - 状態確認
sudo ufw status numbered でルールの番号を含めて確認します。
便利な操作例
- ルール削除: sudo ufw delete NUM(status numberedで得た番号を使用)
- 特定IPだけ許可: sudo ufw allow from 203.0.113.5 to any port 22
- SSHの接続数制限(簡易): sudo ufw limit ssh
注意点
- ルールは有効化前に必ず設定しておくと安全です。\n- ログを有効にするとアクセスの痕跡が見えます: sudo ufw logging on
- 管理用IPが変わる環境では、誤って自分を締め出さないよう注意してください。
ルーターのポート開放設定
概要
サーバー側の設定完了後、ルーター側で80番(HTTP)と443番(HTTPS)を開放して、外部からの通信をサーバーのローカルIPに転送します。これによりインターネットからWebサイトへアクセスできるようになります。
準備(ローカルIPの確認と固定)
- サーバーのローカルIPを確認します(例: 192.168.1.100)。
- ルーターのDHCP予約でそのIPを固定するか、サーバー側で静的IPを設定します。IPが変わると転送が無効になります。
ルーターの設定手順(一般的な流れ)
- ブラウザでルーター管理画面にログイン(例: http://192.168.1.1)。
- 「ポート転送」「Virtual Server」「NAT」など該当メニューを開きます。
- ルールを追加します。主な項目の例:
- サービス名: web-server
- プロトコル: TCP
- 外部ポート: 80 → 内部ポート: 80 → 宛先IP: 192.168.1.100
- 外部ポート: 443 → 内部ポート: 443 → 宛先IP: 192.168.1.100
- 保存してルーターを再起動する必要がある場合は再起動します。
動作確認とテスト
- 同一LAN内ではブラウザで http://192.168.1.100 にアクセスして確認します。
- 外部からはスマートフォンのモバイル回線などLAN外から、ルーターのグローバルIP(またはドメイン)で確認します。
注意点とおすすめ設定
- ISPが80/443をブロックする場合があります。つながらないときは契約内容を確認してください。
- ルーターの管理画面は強力なパスワードにし、リモート管理は無効にしてください。
- HTTPSを使う場合は証明書(例: Let’s Encrypt)を用意し、ファイアウォールでポート許可を維持してください。
- 公開IPが変わる場合はDynamic DNSを検討してください。
上記の手順で外部からのアクセスを安全に開放できます。具体的な画面表示や用語はルーター機種で異なるため、取扱説明書も併せて参照してください。
同時接続数の調整と性能最適化
概要
想定される同時アクセス数に応じてサーバー設定を調整すると、安定した応答と無駄なリソース消費を防げます。ここではApacheとnginxそれぞれの主要パラメータと、簡単な計算例、運用時の注意点を丁寧に説明します。
Apacheでの調整ポイント
- 主なパラメータ:StartServers、MinSpareServers、MaxSpareServers、MaxRequestWorkers
- 計算例:1プロセスあたりのメモリが25MBで、利用可能メモリが4GB(約4000MB)の場合、最大同時処理数は4000 ÷ 25 = 160です。MaxRequestWorkersはこの値以下に設定します。
- 併せてKeepAliveTimeoutを短め(例:2〜5秒)にすると接続が長時間占有されにくくなります。
nginxでの調整ポイント
- 主なパラメータ:worker_processes(通常はCPUコア数に合わせる)、worker_connections
- 計算例:CPUが4コアでworker_processes=4、worker_connections=1024なら理論上の同時接続数は4×1024=4096です。実際はメモリやバックエンドの処理能力も考えます。
実運用での手順(簡潔)
- まず予想アクセス数と平均リクエストの重さ(メモリ・CPU)を概算します。
- 上の計算式で上限値を求め、設定に反映します。
- 負荷試験(ab、wrk、siegeなど)でボトルネックを探します。
- モニタリング(top、free、server-statusやstub_status)で実際のリソース使用を確認し、微調整します。
注意点とベストプラクティス
- メモリだけでなくCPUやディスクI/Oも影響します。単純な計算は目安に留めてください。
- 動的コンテンツが多い場合は1リクエスト当たりの消費が増えるため余裕を持った設定にします。
- ログのローテーションやプロセス再起動は段階的に行い、サービス断を避けます。
説明は以上です。設定値はサーバー環境やアプリの特性で変わりますので、必ず負荷試験と監視で検証してください。
サーバー構築の全体的な流れ
概要
Web・ファイルサーバー構築は段階的に進めます。各段階を順に完了することで、安全で使いやすい環境を作れます。
1. OSインストール
Ubuntu Serverをインストールします。インストール時はタイムゾーン、言語、ネットワーク設定、管理ユーザーの作成を確認します。ディスクは基本設定で問題ないことが多いです。
2. SSH接続準備(ファイアウォール・ポート設定)
SSHでリモート管理できるようにします。最初に管理ユーザーで接続を確認し、UFWなどでポート22を許可します。必要ならポート番号の変更やfail2banで不正アクセス対策を行います。
3. アプリケーションとDBの導入
グループウェアや共有サービスを入れる前に、MySQLなどのDBを導入し、初期パスワード設定と権限管理を行います。テスト用のデータベースを作成して動作確認します。
4. Webサーバー設定(Apache)
Apacheをインストールし、仮想ホストを作成してドキュメントルートを設定します。ローカルで正常に動くことを確認してから公開設定に移ります。
5. ルーターと公開設定
家庭や事務所のルーターでポート開放(NAT設定)を行います。固定IPがない場合は動的DNSを利用します。公開後はブラウザや外部から接続テストを行います。
6. セキュリティと運用
TLS(Let’s Encrypt)でHTTPS化し、定期バックアップとログ監視を設定します。権限とパッチ適用を定期的に確認して運用します。
第9章: まとめ
要点の振り返り
本記事では、Apacheのインストールから基本設定、ファイアウォール設定、ルーターでのポート開放、接続数の調整まで、実践的な手順を丁寧に示しました。実際のコマンド例(例: apt install apache2、firewall-cmdやufwの設定、ルーターのポート転送設定)を通して、手を動かしながら学べる構成にしています。
大切なポイント
- 最初に基本的な起動・確認を行って、サービスが正しく動くことを確認してください。簡単なページを用意して動作確認します。
- ファイアウォールは必要なポートだけを開けるようにしてください。外部公開前に設定を再確認します。
- ルーターのポート開放は自宅ネットワークを公開する操作です。パスワードや管理画面の変更など、基本的な対策を必ず行ってください。
- 同時接続数やチューニングは、実際の負荷を見て少しずつ設定を変えることが安全です。
実務で使うためのチェックリスト
- サービス起動とログ確認
- ファイアウォールで必要ポートのみ開放
- ルーターで正しいIPにポート転送
- SSL導入や不要サービスの停止
- 定期的なアップデートとバックアップ
次のステップの提案
まずは小さな公開サイトを作って、ログと負荷を観察してください。慣れてきたら自動化(スクリプトや構成管理)やバックアップ運用、監視を導入すると安心です。安全第一で段階的に学んでいきましょう。












