開発運用

NginxとPHP-FPMで複数サイトホスティング

Ubuntu 14.04でNginxとPHP-FPMを使用して複数のサイトを安全にホスティングする方法についての完全かつ包括的なガイドを日本語でご紹介します。以下にそのステップを説明します。

前提条件

  • Ubuntu 14.04がインストールされているサーバー
  • サーバーへの管理者権限(sudo権限)があること
  • 基本的なLinuxコマンドやサーバー管理に関する知識

1. NginxとPHP-FPMのインストール

最初に、NginxとPHP-FPMをインストールします。

bash
sudo apt-get update sudo apt-get install nginx sudo apt-get install php5-fpm php5-cli php5-mysql php5-mcrypt php5-curl

これで、NginxとPHP-FPMがインストールされました。インストール後、両方のサービスが正しく動作しているか確認します。

bash
sudo systemctl start nginx sudo systemctl start php5-fpm

両方のサービスを自動起動するように設定します。

bash
sudo systemctl enable nginx sudo systemctl enable php5-fpm

2. Nginxの設定ファイルの編集

次に、Nginxの設定ファイルを編集して、複数のサイトをホスティングできるようにします。まず、Nginxの設定ファイルをバックアップしておきます。

bash
sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.backup

次に、サイトごとに設定ファイルを作成します。/etc/nginx/sites-available/ディレクトリに、新しいサイトの設定ファイルを追加します。

bash
sudo nano /etc/nginx/sites-available/example.com

以下のように設定します。example.comはホスティングしたいサイトのドメイン名に置き換えてください。

nginx
server { listen 80; server_name example.com www.example.com; root /var/www/example.com/public_html; index index.php index.html index.htm; location / { try_files $uri $uri/ =404; } location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } error_log /var/log/nginx/example.com_error.log; access_log /var/log/nginx/example.com_access.log; }

この設定では、example.comドメインに対して、/var/www/example.com/public_htmlにあるファイルを提供するように設定しています。

設定ファイルを保存した後、サイトを有効化するためにシンボリックリンクを作成します。

bash
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/

設定をテストし、エラーがないか確認します。

bash
sudo nginx -t

テストが成功したら、Nginxを再起動して変更を反映させます。

bash
sudo systemctl restart nginx

3. PHP-FPMの設定

PHP-FPMの設定を変更して、複数のサイトに対応させます。設定ファイルを編集します。

bash
sudo nano /etc/php5/fpm/pool.d/www.conf

このファイルで、usergroupの設定を変更して、Nginxが実行するユーザーとグループに合わせます。

ini
user = www-data group = www-data

その後、PHP-FPMを再起動して設定を反映させます。

bash
sudo systemctl restart php5-fpm

4. サイトのディレクトリとパーミッションの設定

次に、各サイトのディレクトリを作成し、適切なパーミッションを設定します。

bash
sudo mkdir -p /var/www/example.com/public_html sudo chown -R www-data:www-data /var/www/example.com

5. SSLの設定(推奨)

Webサイトのセキュリティを強化するために、SSL(HTTPS)を設定することをお勧めします。まず、Let’s Encryptを使用して無料のSSL証明書を取得します。

bash
sudo apt-get install python-software-properties sudo add-apt-repository ppa:certbot/certbot sudo apt-get update sudo apt-get install certbot python-certbot-nginx

証明書を取得するために、以下のコマンドを実行します。

bash
sudo certbot --nginx -d example.com -d www.example.com

SSL証明書が正常にインストールされたら、Nginx設定ファイルを自動で更新し、HTTPSが有効になります。

6. セキュリティの強化

複数のサイトをホスティングする場合、セキュリティを強化するためのいくつかの対策を行うことが重要です。

ファイアウォールの設定

サーバーに対する不要なアクセスを防ぐために、UFW(Uncomplicated Firewall)を使用してファイアウォールを設定します。

bash
sudo ufw allow 'Nginx Full' sudo ufw enable

Fail2Banのインストール

ログイン試行の制限や攻撃者のIPアドレスをブロックするために、Fail2Banを使用することをお勧めします。

bash
sudo apt-get install fail2ban

インストール後、設定ファイルを編集して、Nginxのログに基づいた保護を有効にします。

bash
sudo nano /etc/fail2ban/jail.local

設定ファイルに以下の内容を追加します。

ini
[nginx-http-auth] enabled = true port = http,https logpath = /var/log/nginx/error.log maxretry = 3

設定を保存して、Fail2Banを再起動します。

bash
sudo systemctl restart fail2ban

7. サイトのテスト

最後に、設定した複数のサイトが正常に動作しているかをテストします。ブラウザでhttp://example.comまたはhttps://example.comにアクセスし、サイトが表示されることを確認します。

また、PHPが動作しているかも確認するために、info.phpというファイルを作成し、PHP情報を表示させます。

php
phpinfo(); ?>

このファイルをサイトのドキュメントルートに置き、ブラウザでアクセスしてPHPの設定が正しいか確認します。

結論

このガイドでは、Ubuntu 14.04でNginxとPHP-FPMを使用して複数のサイトを安全にホスティングするための手順を説明しました。これらの設定を通じて、セキュアなWebサーバーを構築し、複数のサイトを効率的に管理できるようになります。また、SSLやファイアウォール、Fail2Banなどのセキュリティ対策を施すことで、Webサーバーをより安全に運用できます。

Back to top button