Amazon EC2上のUbuntuにnginx, php-fpm, mysqlをインストールして,Drupal 7を動かす方法をまとめました.このサイトのセットアップ方法のメモでもあります.
環境
- Amazon EC2
- Ubuntu Server 14.04 LTS (HVM), SSD Volume Type (Ubuntu Server 14.04 LTS (HVM), EBS General Purpose (SSD) Volume Type.) Free tier eligible
- t2.micro
- nginx 1.4.6
- php5-fpm
- mysql
- Drupal 7
Amazon EC2のインスタンスの作成
Launch Instanceから以下のようにUbuntu Serverを作成する.
t2.microを選択する.
Purchasing option はoff,Networkはデフォルト,SubmetはNo preference, Auto-assign Public IPはEnable, IAM roleはNone, Shutdown behaviourはStop, termination protection はYes, MonitoringはNo, TenancyはSharedでとりあえずおーけー.
Storageの容量は用途に合わせて.General Purpose (SSD)とする.容量が大きくなるほど,IOPSの標準値が大きくなるみたい.程々の大きさにしたほうがよさそう.
Tagは特に必要なし.
Security Groupには,SSHでMyIPからのアクセスのみを許可するように設定する.あと,HTTPからのアクセスをanywhereとする.Security Groupの設定はホワイトファイアウォールなので,指定しないプロトコルはアクセスを受け付けないことに注意する.
SSHでログインするためのkey (pem) を作成する.以前のがあれば面倒なので使い回してもいいし,新規に作成してもよい.pemファイルは絶対になくさないようにする.
インスタンスの作成が完了.
いろいろインストール
sshにてログインすると,
WARNING! Your environment specifies an invalid locale.
This can affect your user experience significantly, including the
ability to manage packages. You may install the locales by running:
sudo apt-get install language-pack-UTF-8
or
sudo locale-gen UTF-8
と表示されるので,
sudo locale-gen UTF-8
を実行する.以下順次コマンドを実行する.
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install nginx mysql-server mysql-client
mysql_secure_installation
sudo apt-get install php5-fpm php5-mysql drush phpmyadmin
mysql_secure_installationは,mysqlのインストールをセキュアな設定にしてくれるツールらしい.実行して,すべてYesとする.
公開するディレクトリを作成する.デフォルトは/usr/share/nginx/htmlになっていて,この状態でブラウザーからPublic DNSをアドレスバーにコピペしてアクセスすると,
のような画面が表示される./usr/share/nginx/html/index.htmlにアクセスしているわけである.
nginxの設定
/etc/nginx/sites-available に設定ファイルを保存し,/etc/nginx/sites-enabled にそれへのシンボリックリンクを張ることで有効にする.
sudo ln -s /etc/nginx/sites-available/xxx /etc/nginx/sites-enabled/
/etc/nginx/sites-available に以下の内容のテキストファイルを作成する.
server {
server_name [domain];
root /home/ubuntu/drupal;
location ~* \.(txt|log)$ {
allow 192.168.0.0/16;
deny all;
}
location ~ \..*/.*\.php$ {
return 403;
}
location ~ ^/sites/.*/private/ {
return 403;
}
location ~ (^|/)\. {
return 403;
}
location / {
try_files $uri @rewrite;
}
location @rewrite {
rewrite ^ /index.php;
}
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $request_filename;
fastcgi_intercept_errors on;
fastcgi_pass unix:/var/run/php5-fpm.sock;
}
location ~ ^/sites/.*/files/styles/ {
try_files $uri @rewrite;
}
location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
expires max;
log_not_found off;
}
}
とすればphp-fpmを使った設定になり,とりあえずDrupalが動く準備ができる.詳しい説明は,以下のサイトにあるので参照のこと.
- Nginx + PHP-FPM + MySQL + phpMyAdmin on Ubuntu 12.04
- Drupal [nginx]
- perusio/drupal-with-nginx [GitHub]
/etc/nginx/nginx.conf を編集
client_max_body_size 100m;
という行を,http { }の中の最後の行に追加する.アップロードできるファイルのサイズを大きくするためである.
php-fpmの設定
/etc/php5/fpm/php.ini を編集
upload_max_filesize = 20M
post_max_size = 24M
としてアップロード可能なファイルサイズを増やしておく.phpmyadminでデータベースのインポートとエクスポートの際に便利.
/etc/php5/fpm/pool.d/www.conf を編集
listen = /var/run/php5-fpm.sock
みたいな行があるので,パスを確認して,上記のnginxのfastcgi_pass unix:に一致させておく.さもないとnginxで502 bad gatewayエラーが発生する.
サービスの再起動
service --status-all
でサービスの状況が分かる.
sudo service nginx restart
でnginxを再起動できる.設定ファイルを変更した後はこれをすることで設定を読み込んでくれる.php5-fpmも同様.詳細はこちら.
Drupalのインストール
こちら(Stardomainでの設定だが,だいたい同じ).
上記の設定でこちらの設定はほぼ完了.
あとは以前のデータをリストアし,設定を詰めていく.
chmod 644 sites/default/settings.php
chmod 755 sites/default