Ubuntu 14.04でNginxとPHP-FPMを使用して複数のサイトを安全にホスティングする方法についての完全かつ包括的なガイドを日本語でご紹介します。以下にそのステップを説明します。
前提条件
- Ubuntu 14.04がインストールされているサーバー
- サーバーへの管理者権限(
sudo
権限)があること - 基本的なLinuxコマンドやサーバー管理に関する知識
1. NginxとPHP-FPMのインストール
最初に、NginxとPHP-FPMをインストールします。
bashsudo 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がインストールされました。インストール後、両方のサービスが正しく動作しているか確認します。
bashsudo systemctl start nginx sudo systemctl start php5-fpm
両方のサービスを自動起動するように設定します。
bashsudo systemctl enable nginx
sudo systemctl enable php5-fpm
2. Nginxの設定ファイルの編集
次に、Nginxの設定ファイルを編集して、複数のサイトをホスティングできるようにします。まず、Nginxの設定ファイルをバックアップしておきます。
bashsudo cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.backup
次に、サイトごとに設定ファイルを作成します。/etc/nginx/sites-available/
ディレクトリに、新しいサイトの設定ファイルを追加します。
bashsudo nano /etc/nginx/sites-available/example.com
以下のように設定します。example.com
はホスティングしたいサイトのドメイン名に置き換えてください。
nginxserver {
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
にあるファイルを提供するように設定しています。
設定ファイルを保存した後、サイトを有効化するためにシンボリックリンクを作成します。
bashsudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
設定をテストし、エラーがないか確認します。
bashsudo nginx -t
テストが成功したら、Nginxを再起動して変更を反映させます。
bashsudo systemctl restart nginx
3. PHP-FPMの設定
PHP-FPMの設定を変更して、複数のサイトに対応させます。設定ファイルを編集します。
bashsudo nano /etc/php5/fpm/pool.d/www.conf
このファイルで、user
とgroup
の設定を変更して、Nginxが実行するユーザーとグループに合わせます。
iniuser = www-data
group = www-data
その後、PHP-FPMを再起動して設定を反映させます。
bashsudo systemctl restart php5-fpm
4. サイトのディレクトリとパーミッションの設定
次に、各サイトのディレクトリを作成し、適切なパーミッションを設定します。
bashsudo 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証明書を取得します。
bashsudo 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
証明書を取得するために、以下のコマンドを実行します。
bashsudo certbot --nginx -d example.com -d www.example.com
SSL証明書が正常にインストールされたら、Nginx設定ファイルを自動で更新し、HTTPSが有効になります。
6. セキュリティの強化
複数のサイトをホスティングする場合、セキュリティを強化するためのいくつかの対策を行うことが重要です。
ファイアウォールの設定
サーバーに対する不要なアクセスを防ぐために、UFW(Uncomplicated Firewall)を使用してファイアウォールを設定します。
bashsudo ufw allow 'Nginx Full'
sudo ufw enable
Fail2Banのインストール
ログイン試行の制限や攻撃者のIPアドレスをブロックするために、Fail2Banを使用することをお勧めします。
bashsudo apt-get install fail2ban
インストール後、設定ファイルを編集して、Nginxのログに基づいた保護を有効にします。
bashsudo nano /etc/fail2ban/jail.local
設定ファイルに以下の内容を追加します。
ini[nginx-http-auth]
enabled = true
port = http,https
logpath = /var/log/nginx/error.log
maxretry = 3
設定を保存して、Fail2Banを再起動します。
bashsudo 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サーバーをより安全に運用できます。