PHPフレームワーク「Laravel5」の環境をSCLのPHP5.4,Apache2.4,MariaDB5.5で作ってみた、その1
Laravel5, SCL の環境構築
Laravel4(ララベル)の環境を作ったけど、すでに Laravel5 が出ていたもあり折角なので、Software Collections から PHP 5.4以上, Apache, MariaDBを入れ環境を構築してみることにしてみました。
そして意外なところで3時間ほどはまりました。まあ勉強にもなりよかったんですけど、何故に毎回はまるんだろう?とw。
ソフトウェア | バージョン |
---|---|
Laravel | 5.0.16 |
PHP | 5.4.16 |
Apache | 2.4.6 |
MariaDB | 5.5.40 |
Varagnt
こんな定義でさくっと作って立ち上げときます。
config.vm.define :laravel5 do |laravel5|
laravel5.vm.network :private_network, ip: "192.168.11.213"
laravel5.vm.provider "virtualbox" do |v|
v.customize ["modifyvm", :id, "--memory", 384]
end
end
Software Collections (SCL) レポジトリのインストール
まずはじめに行っておくこと
# yum install centos-release-SCL
PHP, PHP-FPM のインストール
PHP は、いつもとおり。PHP-FPM (FastCGI Process Manager) を入れる理由は、SCL では libphp5.so, libphp5-zts.so が入らないから(ソースからコンパイルすれば入ります)な、そんな理由です(※ここで3時間ハマリました)。
あと mcrypt 入れないと Laravel が怒るのでいれますが、今回は最低限のパッケージだけ入れてますんで必要ならば適宜いれること。
# yum install php54
# yum install -y https://www.softwarecollections.org/en/scls/rhscl/php54/epel-6-x86_64/download/rhscl-php54-epel-6-x86_64.noarch.rpm
# yum install -y php54-php-mbstring php54-php-fpm php54-php-pdo php54-php-mysqlnd
# yum install -y https://www.softwarecollections.org/en/scls/remi/php54more/epel-6-x86_64/download/remi-php54more-epel-6-x86_64.noarch.rpm
# yum install -y php54-php-mcrypt
ログイン/reboot 時にphp54 を有効化
SCL でインスコすると /opt/rh 以下に配置され、かつ scl コマンドでごにょごにょしないといけないので、ログイン/reboot 時にphp54 を有効化しときます。
/etc/profile.d/enablephp54.sh ファイルを作成し内容は下記をこぴぺします。
#!/bin/bash
source /opt/rh/php54/enable
export X_SCLS="php54"
これで php -v
コマンド使えるようになります。
PHP-FPM の起動設定
設定するとこは多少あるけど、とりあえずデフォルトで立ち上げておきます。
ちなみにデフォルトだと 127.0.0.1:9000
でサービスが立ち上がります。
# service php54-php-fpm start
# chkconfig php54-php-fpm on
# chkconfig php54-php-fpm --list
Apache のインストール
こちらもさくっといつものとおり、な感じでサービス起動までやっときます。
念のためアクセスできるか確認しときと、よりgoodすね。
# sudo yum install httpd24
# service httpd24-httpd start
# /opt/rh/httpd24/root/usr/sbin/httpd -version
# chkconfig httpd24-httpd on
# chkconfig httpd24-httpd --list
ついでに MariaDB(MySql)をインストール
今回、登場ないけどついでにw
# yum install mariadb55 mariadb55-server
# service mariadb55-mysqld start
# chkconfig mariadb55-mysqld on
/etc/profile.d/enablemariadb55.sh ファイルを作成し内容は下記をこぴぺします。
#!/bin/bash
source /opt/rh/mariadb55/enable
Composerのインストール
Composer パッケージ管理プログラムを使うので、まずこれをインストールするとこから初めます。
# curl -sS https://getcomposer.org/installer | php
# mv composer.phar /usr/local/bin/composer
パスを追加します。.bashrc
に追加しておくといいことありますね。
export PATH=$PATH:/usr/local/bin
laravel5 をインストール(プロジェクトの作成)
最新版(バージョン指定しないと常に最新をもってくる)のlaravel5 をインストールテストと起動テストをしてみます。
※初回は、色々なコンポーネントを読み込むため非常に時間がかかります。
$ composer create-project laravel/laravel hogehoge --prefer-dist
$ cd hogehoge
$ php artisan serve --host="0.0.0.0" --port="9090"
http://192.168.11.213:9090
にアクセスし上記の画面が表示されればok
Apache で laravel のプロジェクトを動かす前に確認しておくこと
Apache -> FirstCGI 経由で php が実行されるかまず確認しておくこと。
いわゆる phpinfo の情報を前もって確認しておくことが重要、重要です(2度いった)。
テスト用に適当に conf ファイルを作り(下記を参照)ます。
Listen 8888
<VirtualHost 192.168.11.213:8888>
DocumentRoot /opt/rh/httpd24/root/var/www/html2
ServerName laravel5-test
<LocationMatch "^/.*\.php$">
ProxyPass fcgi://127.0.0.1:9000/opt/rh/httpd24/root/var/www/html2
</LocationMatch>
<Directory "/opt/rh/httpd24/root/var/www/html2/">
Require all granted
</Directory>
</VirtualHost>
phpのファイル作成しておきます。
# mkdir /opt/rh/httpd24/root/var/www/html2
# echo "<?php phpinfo(); ?>" > /opt/rh/httpd24/root/var/www/html2/phpinfo.php
Apache. php-fpm を再起動したら http://192.168.11.213:8888/phpinfo.php
を実行してみて下記の画面が表示されればok。
Apache で laravel のプロジェクトを動かす
scl でインスコした apache の DocumentRoot は、/opt/rh/httpd24/root/var/www/
なのでとりあえずお作法に従ってその下に Laravel プロジェクトを 作ってみる(どこでもいいんだけどねw)。
まずは、Laravel のプロジェクトを作成します。
# cd /opt/rh/httpd24/root/var/www/
# composer create-project laravel/laravel /opt/rh/httpd24/root/var/www/laravel5 --prefer-dist
symfony/event-dispatcher でGithub のアカウントを聞いてきたので素直に入力。
- Installing symfony/event-dispatcher (v2.6.4)
A token will be created and stored in "/root/.composer/auth.json", your password will never be stored
To revoke access to this token you can visit https://github.com/settings/applications
Username:
Password:
/opt/rh/httpd24/root/etc/httpd/conf.d
に以下のファイルをさくっと作り、httpd を再起動します。
Listen 9999
<VirtualHost 192.168.11.213:9999>
ServerName laravel5
DocumentRoot /opt/rh/httpd24/root/var/www/laravel5/public
DirectoryIndex index.html index.php
<LocationMatch "^/.*\.php$">
ProxyPass fcgi://127.0.0.1:9000/opt/rh/httpd24/root/var/www/laravel5/public
</LocationMatch>
<Directory "/opt/rh/httpd24/root/var/www/laravel5/">
Require all granted
</Directory>
</VirtualHost>
Apache 2.2 の conf そのまま使えると思ったら 2.4 から定義がだいぶ変更されていました。特に NameVirtualHost の指定をしなくてもよくなったり細々したところが。。。
httpd を再起動して…。http://192.168.11.213:9999/
にアクセスしてみます。okですよねw
参考にさせていただいたサイト様
apache インストール/設定 メモ
CentOS6.4にインストールしたApacheを設定する。
PHP5.5.5,PHP-FPMのインストール手順(Apache, Mysql)
Discussion