本日はAWSのAmazon Linuxを利用してLaravel5.1の初期ページが出せる状態を作ってみようと思います。
環境
- Amazon Linux 2015.9 64bit
Nginxのインストール
$ sudo yum install nginx
$ sudo chkconfig nginx on
$ sudo service nginx start
remiをインストール
remiを入れていきます。
$ sudo rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
$ sudo vi /etc/yum.repos.d/remi.repo
全部enabledが0になっていることを確認します。
また、remi-php56の箇所だけ最後にpriority=1を付けます。
[remi-php56]
name=Remi's PHP 5.6 RPM repository for Enterprise Linux 6 - $basearch
#baseurl=http://rpms.remirepo.net/enterprise/6/php56/$basearch/
mirrorlist=http://rpms.remirepo.net/enterprise/6/php56/mirror
# NOTICE: common dependencies are in "remi-safe"
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi
priority=1 ←これ追加
PHPをインストール
必要そうな奴をいれる
$ sudo yum install php php-mbstring php-mysql php-fpm php-devel php-pdo php-xml --enablerepo=remi-php56
入っていることを確認
$ php -v
PHP 5.6.19 (cli) (built: Mar  3 2016 08:05:32)
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
composerを入れる
インストール
$ curl -sS https://getcomposer.org/installer | php
$ sudo mv composer.phar /usr/local/bin/composer
入ったか確認
$ composer --version
Composer version 1.0-dev (fe134d3359ff6533f5462743cada35eabaf2350f) 2016-03-08 13:41:06
並列DLプラグインのprestissimoを入れる(入れなくてもOK)
$ composer global require hirak/prestissimo
Laravelを入れる
先に、laravelを置く作業用のディレクトリの所有者及びグループを変更しておきます。
$ sudo chown -R ec2-user:nginx /usr/share/nginx
今回は5.1を指定してインストールします。
$ cd /usr/share/nginx
$ composer create-project laravel/laravel:5.1 laravel
php-fpmの設定
設定を幾つか変更します。
$ sudo vi /etc/php-fpm.d/www.conf
userとgroupをapacheからnginxに変更する
; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
;       will be used.
; RPM: apache Choosed to be able to access some dir as httpd
user = nginx
; RPM: Keep a group allowed to write in log dir.
group = nginx
動作をUnixドメインソケットに変更
listen = 127.0.0.1:9000
↓
listen = /var/run/php-fpm/php-fpm.sock
listenの方もownerとgroupをnginxに変更
; Set permissions for unix socket, if one is used. In Linux, read/write
; permissions must be set in order to allow connections from a web server.
; Default Values: user and group are set as the running user
;                 mode is set to 0660
;listen.owner = nobody
;listen.group = nobody
↓
listen.owner = nginx
listen.group = nginx
php-fpmの起動と登録
$ sudo service php-fpm start
$ sudo chkconfig php-fpm on
nginxの設定ファイルを作る
$ sudo vi /etc/nginx/conf.d/default.conf
server {
    listen       80;
    server_name  ec2-xx-xx-xxx-xx.ap-northeast-1.compute.amazonaws.com;
    # Document Root設定
    root   /usr/share/nginx/<project_name>/public;
    # Indexファイル設定
    index  index.php index.html index.htm;
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }
    location ~ \.php$ {
        try_files $uri /index.php =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        fastcgi_max_temp_file_size 0;
        fastcgi_buffer_size 4K;
        fastcgi_buffers 64 4k;
        include        fastcgi_params;
    }
}
色々再起動する
$ sudo service nginx restart
$ sudo service php-fpm restart
対象のURLにアクセスすればLaravel5の文字が表示されます。
ちゃんと動かなかった時
$ sudo tail -f /var/log/nginx/error.log でエラーログを確認してみる
やってて躓いたところ。
- php-xmlを入れ忘れていた。
- php-fpmのlistenの時のownerとgroupを指定しておかないとパーミッションでエラーになる
- /usr/share/nginx以下がrootグループになっているとパーミッションの問題が出てくるのでnginxグループにしたほうが色々やりやすい
参考
一部Nginxなどの環境設定に「CentOS 7 + Nginx + MySQL5.6 + PHP5.6 (Laravel5.1) インストール nginx+php-fpmで動作確認まで」を参考にさせていただきました。
 
  
  
  
  
コメント