Amazon LinuxでLaravel5.1の初期ページが出せる状態を作る

スポンサーリンク

本日は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で動作確認まで」を参考にさせていただきました。

コメント

タイトルとURLをコピーしました