納品されたサイトが使えない原因を徹底解説!対処法と予防策

ウェブサイトを納品したあと、すぐに利用開始できないケースは、納品業務の方にとっては大きなストレス源です。
「動かないのは自分のミスなのか、相手側の環境のせいなのか…」と不安になる前に、まずは原因を整理し、どのように対処すれば再発を防げるかを把握しておくことが重要です。
この記事では、納品後にサイトが使えなくなる主な原因を順を追って解説し、現場ですぐに使える対処法と、同じ問題を防ぐための予防策をまとめました。


納品後にサイトが使えなくなる主な原因

カテゴリ 具体例 トラブルシューティングのヒント
DNS関連 ・ドメインが正しいサーバに向いていない ・TTLが長すぎて変更が反映されない dignslookup で NS / A レコードを確認
SSL証明書 ・証明書が失効している ・証明書チェーンが不完全 SSL Labs の診断ツールでチェーンをチェック
サーバ環境 ・PHP/Node のバージョンが要件と合わない ・Webサーバの設定ミス php -vnode -vnginx -t 等でバージョン・設定を確認
ファイル・ディレクトリパーミッション ・実行権限が無い ・権限が過剰で読み込み不可 chmodchown で権限を修正
データベース接続 ・ホスト名・ユーザ・パスワードが違う ・データベースが利用不可 mysql -h で接続テスト、phpMyAdmin で確認
リソースの欠落 ・画像・JS・CSS ファイルがアップロードされていない ・URL が間違っている 開発環境で npm run buildgrunt などでビルドを実行
ビルド/デプロイ失敗 ・CI のビルドが成功していても実際にサーバに転送されていない git のリモート確認、FTP/SFTP のログを確認
外部API/CDN ・APIキーが無効 ・CDN が設定ミス API キーを再発行、CDN のオリジン設定をチェック
エラーログ ・PHP の display_errors がオフでエラーを見逃している エラーログ (error_log) を必ず確認

ポイント

  • 一度に全部調べようとせず、エラー内容・メッセージに沿って順序立てて検証する。
  • ログはすぐに確認し、原因の絞り込みに活用する。

対処法:実際に発生した問題を素早く解決する手順

1. サーバ状態(稼働確認)

# サーバが稼働しているか確認
ssh user@hostname
# Nginx の設定チェック
sudo nginx -t
# PHP-FPM の状態確認
sudo systemctl status php-fpm

2. DNS とドメイン確認

# DNS レコードを確認
dig example.com +trace
# TTL が長すぎる場合はレコードを短く設定してもらう

3. SSL 証明書の自動化

  • Let’s Encrypt を利用している場合は自動更新になっているか確認
sudo certbot renew --dry-run

4. ファイルパーミッション

# 適切な権限の一例
chmod -R 755 public
chmod -R 644 config
chown -R www-data:www-data .

5. データベース接続テスト

# MySQL なら
mysql -hホスト -uユーザー -pパス db名
# 接続できない場合は接続文字列(ホスト名・ユーザー・パスワード)を見直す

6. スタティックアセット確認

  • 画像・フォント・JS の URL が実際に存在するか
# Web ブラウザの devtools で 404 を確認

7. エラーログ解析

  • access.logerror.log の内容を確認し、エラーメッセージを収集
tail -f /var/log/nginx/error.log

8. 環境差異の再現

  • 開発環境と本番環境で同じ PHP/Node のバージョンを使用しているか
# コンテナ化(Docker)で環境を揃えるのがおすすめ

9. ロールバック

  • 直前の安定したバージョンに戻せるように、Git タグやバックアップを取得しておく
git tag v1.3.2
git checkout v1.3.2

予防策:再発しないようにするためのベストプラクティス

項目 実装例 効果
CI/CD パイプライン GitHub Actions, GitLab CI, Jenkins ビルド・テスト・デプロイを自動化し、手作業のミスを削減
環境構築の自動化 Docker Compose, Vagrant 開発・本番が同じ設定で再現可能
構成管理 Ansible, Terraform サーバ構成をコード化し、変更を追跡
自動テスト Selenium, PHPUnit, Jest 主要な機能・ビジーケースを網羅的に検証
ログと監視 Grafana + Prometheus, ELK スタック 事前に異常を検知し、アラートで対処
ドキュメント化 Wiki, Confluence 設定・操作手順をまとめ、次担当者へのロスを防止
ロールバック計画 ブルー/グリーンデプロイメント 本番で問題が起きてもすぐに旧バージョンへ切替
パーミッションの一元管理 NFS, S3 + IAM アクセス権限漏れを防止
バージョン固定 composer.lock, package.json の --save-exact 依存パッケージの自動更新で動作変化が起きないように
DNS への注意 TTL を短く、レコードを正確に 変更を即座に反映できるように

コツ

  • 設定ミスは「誰がどこで誤った値を入力した」かを追跡できるように、変更ログを必ず残す。
  • 「使えない」事象の原因が明確になったら、同じケースを想定したチェックリストを作成して次回の納品で必ず実行。

まとめ

  1. 原因を迅速に特定

    • エラー内容をログで掴み、DNS・SSL・権限・DB などカテゴリー別にチェック。
  2. 標準化された対処手順を実行

    • サーバ、DNS、SSL、ファイル権限・データベース接続などを一つずつ確認。
  3. 再発防止策を整備

    • CI/CD、コンテナ化、構成管理、監視、ロールバック計画を構築し、変更マネジメントを徹底。

納品後にサイトが使えないときは、一歩踏み込んで「なぜそうなったのか」を理解し、次回以降に活かすルーチンを作ることがカギです。
「すぐに動く」ことだけでなく、「同じミスを繰り返さない」習慣を築けば、ウェブサイトの品質とクライアントの信頼度を同時に高められます。


補足
実際にサイトを納品する際は、納品物の「デプロイ手順書」と「運用マニュアル」を添付し、クライアントに共有しましょう。
さらに、納品後30日以内に「ステータス確認」をスケジュールし、問題があれば早期に対処する体制を整えると安心です。

ガイチュウ博士

私は「ガイチュウ博士」。
外注Baseで、依頼の判断をサポートするために設計された架空のナビゲーターです。

これまでに蓄積された多数の外注事例をもとに、「この依頼は進めるべきか」「一度止まるべきか」を整理する役割を担っています。
感覚ではなく、条件や状況、リスクを分解して判断するのが特徴です。

得意なのは、曖昧な状態の整理です。
「なんとなく不安」「進めていいかわからない」といった状態を、そのままにしません。
チェック項目として分解し、一つずつ確認できる形に整えます。

私は結論を急ぎません。
必要な情報が揃っていない場合は、そのまま進めることのリスクも含めてお伝えします。
判断は、材料が揃ってからで十分です。

外注は便利ですが、同時に判断の連続でもあります。
その判断を落ち着いて行うための補助として、ここにいます。

ガイチュウ博士をフォローする
失敗事例・注意点

コメント