ウェブサイトやサービスを運営する際、本番環境を構築する手順は初心者にとって敷居が高いものです。Ubuntuは安定性と拡張性が高く、サーバー用途では最も人気のあるLinuxディストリビューションです。本マニュアルでは、UbuntuでのWeb管理をゼロからスタートする方を対象に、設定手順を「すぐに実践できる」形で網羅します。
主なポイントは以下の通りです。
- Ubuntuサーバーのインストール/初期設定
- ユーザー管理とSSH鍵認証
- Apache / Nginx とPHP・MySQL 等のWebスタック構築
- HTTPS 設定(Let’s Encrypt)
- ファイアウォールとセキュリティ
- ログと監視、バックアップ
- 基本的なパフォーマンスチューニング
この手順は「初心者がすぐに使える」ことを重視しているため、余計な機能は省き、最小限の構成要素から始めます。途中で必要に応じて追加・拡張できるように、ベースとなるステップを丁寧に解説します。
Ubuntu サーバーのインストールと初期設定
-
公式イメージのダウンロード
- ubuntu.com から LTS (Long Term Support) バージョンを取得。
- 例)`Ubuntu 24.04 LTS (x86_64)
-
ブートディスクの作成
$ dd if=ubuntu-24.04-live-server-amd64.iso of=/dev/sdX bs=4M status=progress -
インストール中に
- 国際化設定:タイムゾーンは必ず正しく設定。
- パッケージ管理:サーバーは
minimal installationを選択。 - ユーザー設定:rootは無効にし、一般ユーザーを作成。
-
初回ログイン後のアップデート
sudo apt update && sudo apt upgrade -yこれで最新のセキュリティパッチがインストールされます。
Tip
24.04で初期設定を完了したら、localeとtzdataの設定を確定させておくと、時間帯のずれが防げます。
ユーザー管理とSSH鍵認証
-
管理ユーザーでログイン
ssh user@your.server.ip -
sudo 権限を付与
sudo usermod -aG sudo userこれで
sudoコマンドを利用可能になります。 -
SSH鍵認証の設定
- クライアント側で鍵ペアを生成(
ssh-keygen -t ed25519) - 公開鍵をサーバーへ転送
ssh-copy-id user@your.server.ip
- クライアント側で鍵ペアを生成(
-
パスワード認証を無効化
/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_configでPermitRootLogin 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などを導入
デプロイメントの自動化
-
Git リポジトリの作成
- GitHub/GitLab でリポジトリを作成し、サーバーに
git cloneで取得。 git ssh keyを設定し、クローン可能に。
- GitHub/GitLab でリポジトリを作成し、サーバーに
-
CI/CD パイプライン
- GitHub Actions で
php lint,composer install,phpunitを実行。 - 成功したら自動デプロイスクリプトを呼び出し、
systemdサービスをリロード。
- GitHub Actions で
-
環境変数管理
dotenvファイルやsystemdunit のEnvironment=を利用。
まとめ
- Ubuntu LTS で安定した基盤を構築
- ユーザー管理と SSH 鍵でセキュリティを強化
- Apache/Nginx + PHP + MariaDB の標準スタックで即戦力
- Let’s Encrypt と Certbot で無料 HTTPS を導入
- UFW, Fail2Ban でサーバーを守る
- バックアップと監視で運用リスクを最小化
- パフォーマンスチューニングと自動デプロイで生産性アップ
これらを一つずつ確実に実装することで、初心者でも安心して運営できる Ubuntu Web サーバーが完成します。
各項目は必要に応じて拡張・変更が可能です。たとえば、Nginx なら php-fpm と caddy の混載、MySQL なら Percona、メモリキャッシュなら Redis などを組み合わせることで、さらに高速・安定したサービスを実現できます。ぜひ、ここで示した手順をベースに、自らのプロジェクトに合わせて最適化してみてください。

コメント