みーのぺーじ

みーが趣味でやっているPCやソフトウェアについて.Python, Javascript, Processing, Unityなど.

Amazon EC2のUbuntuでnginxとphp-fpmとDrupal 7

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を作成する.

f:id:atsuhiro-me:20151104005312p:plain:w300

t2.microを選択する.

f:id:atsuhiro-me:20151104005315p:plain:w300

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でとりあえずおーけー.

f:id:atsuhiro-me:20151104005318p:plain:w300

Storageの容量は用途に合わせて.General Purpose (SSD)とする.容量が大きくなるほど,IOPSの標準値が大きくなるみたい.程々の大きさにしたほうがよさそう.

f:id:atsuhiro-me:20151104005321p:plain:w300

Tagは特に必要なし.

f:id:atsuhiro-me:20151104005324p:plain:w300

Security Groupには,SSHでMyIPからのアクセスのみを許可するように設定する.あと,HTTPからのアクセスをanywhereとする.Security Groupの設定はホワイトファイアウォールなので,指定しないプロトコルはアクセスを受け付けないことに注意する.

f:id:atsuhiro-me:20151104005326p:plain:w300

SSHでログインするためのkey (pem) を作成する.以前のがあれば面倒なので使い回してもいいし,新規に作成してもよい.pemファイルは絶対になくさないようにする.

f:id:atsuhiro-me:20151104005330p:plain:w300

インスタンスの作成が完了.

f:id:atsuhiro-me:20151104005331p:plain:w300

いろいろインストール

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をアドレスバーにコピペしてアクセスすると,

f:id:atsuhiro-me:20151104005333p:plain:w300

のような画面が表示される./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が動く準備ができる.詳しい説明は,以下のサイトにあるので参照のこと.

/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

https://www.drupal.org/documentation/install/settings-file