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