Ubuntu Web管理完全マニュアル:初心者がすぐに使える設定手順

ウェブサイトやサービスを運営する際、本番環境を構築する手順は初心者にとって敷居が高いものです。Ubuntuは安定性と拡張性が高く、サーバー用途では最も人気のあるLinuxディストリビューションです。本マニュアルでは、UbuntuでのWeb管理をゼロからスタートする方を対象に、設定手順を「すぐに実践できる」形で網羅します。
主なポイントは以下の通りです。

  • Ubuntuサーバーのインストール/初期設定
  • ユーザー管理とSSH鍵認証
  • Apache / Nginx とPHP・MySQL 等のWebスタック構築
  • HTTPS 設定(Let’s Encrypt)
  • ファイアウォールとセキュリティ
  • ログと監視、バックアップ
  • 基本的なパフォーマンスチューニング

この手順は「初心者がすぐに使える」ことを重視しているため、余計な機能は省き、最小限の構成要素から始めます。途中で必要に応じて追加・拡張できるように、ベースとなるステップを丁寧に解説します。

Ubuntu サーバーのインストールと初期設定

  1. 公式イメージのダウンロード

    • ubuntu.com から LTS (Long Term Support) バージョンを取得。
    • 例)`Ubuntu 24.04 LTS (x86_64)
  2. ブートディスクの作成

    $ dd if=ubuntu-24.04-live-server-amd64.iso of=/dev/sdX bs=4M status=progress
    
  3. インストール中に

    • 国際化設定:タイムゾーンは必ず正しく設定。
    • パッケージ管理:サーバーは minimal installation を選択。
    • ユーザー設定:rootは無効にし、一般ユーザーを作成。
  4. 初回ログイン後のアップデート

    sudo apt update && sudo apt upgrade -y
    

    これで最新のセキュリティパッチがインストールされます。

Tip
24.04で初期設定を完了したら、localetzdata の設定を確定させておくと、時間帯のずれが防げます。

ユーザー管理とSSH鍵認証

  1. 管理ユーザーでログイン

    ssh user@your.server.ip
    
  2. sudo 権限を付与

    sudo usermod -aG sudo user
    

    これで sudo コマンドを利用可能になります。

  3. SSH鍵認証の設定

    • クライアント側で鍵ペアを生成(ssh-keygen -t ed25519
    • 公開鍵をサーバーへ転送
      ssh-copy-id user@your.server.ip
      
  4. パスワード認証を無効化
    /etc/ssh/sshd_config を編集

    PasswordAuthentication no
    AllowUsers user
    

    変更後は SSH サービスを再起動

    sudo systemctl restart sshd
    

必要なソフトウェアのインストール

1. Webサーバー

Apache

sudo apt install apache2 -y
sudo systemctl enable --now apache2

Nginx (より軽量)

sudo apt install nginx -y
sudo systemctl enable --now nginx

選択肢

  • Apacheはモジュール性が高く、初心者向け。
  • Nginxはリバースプロキシ等に強く、パフォーマンス重視。

2. PHP (FPM)

sudo apt install php-fpm php-mysql -y

PHP のバージョンは php -v で確認。

3. データベース

sudo apt install mariadb-server -y
sudo mysql_secure_installation

初期設定では root パスワードを強化、リモートアクセス禁止、テストデータベース削除などを行います。

4. メール送信(オプション)

sudo apt install postfix -y

必要に応じてメッセージ配信に Gmail などの別 SMTP を利用。

ウェブサイト基本設定

VirtualHost の作成(Apache 例)

<VirtualHost *:80>
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot /var/www/example.com/public

    ErrorLog ${APACHE_LOG_DIR}/example.com_error.log
    CustomLog ${APACHE_LOG_DIR}/example.com_access.log combined

    <Directory /var/www/example.com/public>
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

/etc/apache2/sites-available/example.com.conf に保存し、以下で有効化:

sudo a2ensite example.com.conf
sudo systemctl reload apache2

サイトディレクトリの作成

sudo mkdir -p /var/www/example.com/public
sudo chown -R $USER:$USER /var/www/example.com/public

PHP 設定ファイルの確認(phpinfo)

/var/www/example.com/public/info.php に次を記述しブラウザで表示。

<?php phpinfo(); ?>

HTTPS 設定(Let’s Encrypt)

Certbot のインストール

sudo apt install certbot python3-certbot-apache -y

Nginx を使用している場合は python3-certbot-nginx をインストール。

SSL 証明書の取得・自動更新

sudo certbot --apache -d example.com -d www.example.com

対話形式でメールアドレスの入力や自動リダイレクト設定を行います。
Certbot はデフォルトで renewal.conf を生成し、/etc/cron.d/certbot で自動更新します。

ファイアウォールとセキュリティ

UFW の設定

sudo ufw allow OpenSSH
sudo ufw allow 'Apache Full' # または 'Nginx Full'
sudo ufw enable
sudo ufw status verbose

これで SSH と HTTP(S) のみを許可したファイアウォールが構築されます。

Fail2Ban の導入

sudo apt install fail2ban -y

/etc/fail2ban/jail.local を編集して、SSH のブルートフォース対策を強化。

デフォルトのポリシー変更

  • /etc/ssh/sshd_configPermitRootLogin no を確認。
  • PasswordAuthentication no でパスワードログイン禁止。

バックアップ戦略

  • 定期的なデータベースのダンプ

    mysqldump -u root -p <database_name> > backup.sql
    
  • ファイル系のバックアップ

    rsync -avz --delete /var/www/example.com/ /backup/example.com/
    
  • 自動化
    cron を利用し、毎日深夜にバックアップスクリプトを走らせる。

パフォーマンスチューニング

項目 推奨設定
KeepAlive On, Timeout=5 KeepAliveTimeout 5
PHP-FPM pool pm = dynamic, max_children = 50 pm.max_children=50
HTTP/2 Enable listen [::]:443 ssl http2
キャッシュ Varnish / CDN オンプレミスなら Varnish、外部なら Cloudflare

PHP-FPM のチューニング例

/etc/php/8.2/fpm/pool.d/www.conf

pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 2
pm.max_spare_servers = 10

設定後はリロード:

sudo systemctl reload php8.2-fpm

監視とログ管理

  • Logwatch でログを集約しメール通知

    sudo apt install logwatch -y
    
  • fail2ban でブロックログ監視

  • Munin / Grafana で CPU・メモリ・ディスク使用量を可視化

    • munin-node, munin-html, grafana などを導入

デプロイメントの自動化

  1. Git リポジトリの作成

    • GitHub/GitLab でリポジトリを作成し、サーバーに git clone で取得。
    • git ssh key を設定し、クローン可能に。
  2. CI/CD パイプライン

    • GitHub Actions で php lint, composer install, phpunit を実行。
    • 成功したら自動デプロイスクリプトを呼び出し、systemd サービスをリロード。
  3. 環境変数管理

    • dotenv ファイルや systemd unit の Environment= を利用。

まとめ

  • Ubuntu LTS で安定した基盤を構築
  • ユーザー管理と SSH 鍵でセキュリティを強化
  • Apache/Nginx + PHP + MariaDB の標準スタックで即戦力
  • Let’s Encrypt と Certbot で無料 HTTPS を導入
  • UFW, Fail2Ban でサーバーを守る
  • バックアップと監視で運用リスクを最小化
  • パフォーマンスチューニングと自動デプロイで生産性アップ

これらを一つずつ確実に実装することで、初心者でも安心して運営できる Ubuntu Web サーバーが完成します。
各項目は必要に応じて拡張・変更が可能です。たとえば、Nginx なら php-fpmcaddy の混載、MySQL なら Percona、メモリキャッシュなら Redis などを組み合わせることで、さらに高速・安定したサービスを実現できます。ぜひ、ここで示した手順をベースに、自らのプロジェクトに合わせて最適化してみてください。

コメント

タイトルとURLをコピーしました