Chef を用いたサーバ設定の変更例

Chef を用いたサーバ設定の変更例 Amimoto AMIでは、サーバの設定を chef で管理をしています。この設定ファイルを変更し、プロセスの再起動・設定ファイルの再読み込みをさせることで、サーバの設定変更を柔軟かつ短時間に行えます。ここではその変更方法を解説します。

Amimoto AMIでは、サーバの設定を chef で管理をしています。そのため、設定ファイルを変更し、プロセスの再起動・設定ファイルの再読み込みをさせることで、サーバの設定変更を柔軟かつ短時間に行えます。

なお、設定ファイルの変更は root 権限で行ってください。root での作業方法は「root ユーザとして作業する」をご参照ください。
 

変更可能な値

Webサーバである Nginx のclient_max_body_size、 MySQLの max_allowed_packet 、PHP の memory_limit など、lw1-amimoto/attributes at 2016.01 · Launch-with-1-Click/lw1-amimoto · GitHub にて定義されている値は、すべて変更が可能です。
 

編集するファイル

/opt/local/amimoto.json 

編集後に実行するコマンド

設定ファイルの編集後に、1と2の両方を実行してください

1 プロビジョニング

 # /opt/local/provision 

2. サービスの再起動

# service monit stop
# service nginx restart
# service php-fpm restart
# service mysql restart
# service monit start  

代表的な値の設定変更方法

ここでは PHP のメモリ上限 (memory_limit)、アップロード可能なファイルサイズの上限 (upload_max_filesize )、 MySQL の最大バッファサイズ・クエリーサイズ (max_allowed_packet ) の変更方法をご紹介します。
 

PHP の memory_limit

手順 (PHP の memory_limit を 512MB へ変更する場合)

  1. php の config内の"user": "nginx" 前の行へ "memory_limit": "512M", を追記してください
  2. 「編集後に実行するコマンド 」を実行してください
  3. その後、<?php phpinfo(); ?> などを記述したファイルを /var/www/vhosts/YOUR-DOMAIN/phpinfo.php と設置してブラウザからアクセスし、変更内容が正しく反映されたかを確認してください
  4. 確認後、設置した phpinfo.php ファイルは削除をしてください

設定サンプル

{
  "nginx": {
    "config": {
      "user": "nginx"
    }
  },
  "php": {
    "config": {
      "memory_limit": "512M",
      "user": "nginx"
    }
  },
  "run_list": [
    "recipe[amimoto]"
  ]
}

PHP の upload_max_filesize

手順 (PHP の upload_max_filesize を 30MB へ変更する場合)

  1. nginx の config へ "client_max_body_size": "30M", を追記してください
  2. php の config へ"upload_max_filesize": "30M", を追記してください
  3. 「編集後に実行するコマンド 」を実行してください
  4.  <?php phpinfo(); ?> などを記述したファイルを /var/www/vhosts/YOUR-DOMAIN/phpinfo.php と設置してブラウザからアクセスし、変更内容が正しく反映されたかを確認してください
  5.  確認後、設置した phpinfo.php ファイルは削除してください

設定サンプル

{
  "nginx": {
    "config": {
      "client_max_body_size": "30M",
      "user": "nginx"
    }
  },
  "php": {
    "config": {
      "upload_max_filesize": "30M",
      "user": "nginx"
    }
  },
  "run_list": [
    "recipe[amimoto]"
  ]
}

 MySQL の max_allowed_packet

手順 (MySQL の max_allowed_packet を16 MB へ変更する場合)

  1. mysql の config へ "max_allowed_packet": "16M", を追記してください。mysql  のセクションがない場合は以下の設定サンプルをご参考いただき、追記してください。
  2. 「編集後に実行するコマンド 」を実行してください。
  3. 次のコマンドを実行して、変更が反映されているかをご確認ください。
mysql> show variables like 'max_allowed_packet';
+--------------------+----------+
| Variable_name      | Value    |
+--------------------+----------+
| max_allowed_packet | 16777216 |
+--------------------+----------+
1 row in set (0.03 sec)

mysql> exit
Bye

設定サンプル

{
  "nginx": {
    "config": {
      "user": "nginx"
    }
  },
  "php": {
    "config": {
      "user": "nginx"
    }
  },
  "mysql": {
    "config": {
      "max_allowed_packet": "16M"
    }
  },
  "run_list": [
    "recipe[amimoto]"
  ]
}