本記事では、CentOS7でLaravel5.4の環境構築方法を紹介する。
Laravelはバージョンアップの頻度が高く、マイナーアップデートでも仕様が大きく変わる。
現在の最新バージョンはLaravel5.4.9である。
この最新の環境でのLaravel環境構築の文献が非常に少ない。
またよく起こるエラーの回避法なども体系的にまとめられていない。
本記事は今回環境構築を行なったことを参考にエラーが出ず、コマンドをコピペするだけで環境構築ができることを目指す。
はじめに
今回、ローカル環境からLaravel5.4.9の環境をサーバにデプロイしたいと友人に頼まれたので、一緒に環境構築を行なった時のコマンドを追いながらメモをとる。
環境構築をして気づいたのは、なかなか最新の環境での文献が少なく何が正解なのかわからないところだと思った。
構成する実行環境・およびマシン環境
・CentOS7.3
・PHP7
・MySQL5.7
・apache2.4
上記の環境を構築する。
マシンはさくらVPSを利用しているが、環境はOS依存なので、
さくらのVPSに限らずCentOS7.3の環境なら基本的に再現できる。
とりあえずやること
まず、いくつかやっておくべきことがある。
- yumをアップデートしてvimとgitを入れる
yum update
yum install -y git vim
- SELinuxとfirewallの無効化
setenforce 0
systemctl stop firewalld
SELinuxとfirewallの無効化はセキュリティレベルを下げる原因になるため、
環境構築が終了した場合にはどちらも有効にすることをお勧めする。
リポジトリの登録
yum -y install epel-release.noarch
yum -y install epel-release
rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
vim /etc/yum.repos.d/epel.repo
上記のコマンドを打ったら、編集画面で[epel]の中身を"enable=1"を”enable=0”にする。
apacheのインストール
yum install -y httpd
httpd -v
systemctl enable httpd
systemctl start httpd.service
MySQLのインストール
とりあえず、デフォルトmariaDBがインストールされているらしいのでアンインストールする。
yum -y remove mariadb-libs
rm -Rf /var/lib/mysql/
yum install http://dev.mysql.com/get/mysql57-community-release-el6-7.noarch.rpm
yum-config-manager --enable mysql57-community-dmr
yum install -y --enablerepo=mysql57-community-dmr mysql-community-server
mysql --version
systemctl enable mysqld.service
systemctl start mysqld.service
grep password /var/log/mysqld.log
追記:この方法でmysqlがインストールできない場合があるようである。
以下のコマンドを実行することで改善することが確認できた。
yum -y install mysql-community-server
上記のコマンドを全て実行するとMySQLが起動し、初期パスワードを表示してくれる。
/usr/bin/mysql_secure_installation
上記のコマンドを実行し、旧パスワードと新パスワードを登録することでパスワードを更新することができる。
php7インストール
yum install --enablerepo=remi,remi-php70 -y install php php-cli php-devel php-common php-mbstring php-mysql php-phpunit-PHPUnit php-pecl-xdebug php-fpm php-gd php-gmp php-mcrypt php-opcache php-pdo php-xml
上記のコマンドで必要なPHPのパケージをインストールできる。
追記:ここでパッケージ install は利用できません。
といったエラーが表示された場合には以下の手順で回避することができる。
まず、php7.0のrepoファイルを開くvim /etc/yum.repos.d/remi-php70.repo
[remi-php70]
priority=1
このように設定を変更することで問題となる依存関係を回避してインストールできるようになる。
php7に対応したapacheの設定
php7をapacheで利用する場合には、以下のモジュール設定を追加する必要がある。
<IfModule prefork.c>
#LoadModule php5_module modules/libphp5.so
LoadModule php7_module modules/libphp7.so
</IfModule>
また、Laravelでは.htaccessを利用するための設定が必要である。
今回は、/etc/httpd/conf/httpd.confの中にある<Directory "/var/www/html"></Directory>
を書き換える。
<Directory "/var/www/html">
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
Require all granted
AllowOverride All
</Directory>
これで編集は完了するので、再度systemctl restart httpd.service
コマンドを実行する。
composerのインストール
phpでパッケージの管理を行う際にはcomposerを利用する。
パッケージのバージョンがアップデートした時にアップデートの処理を裏側で担ってくれるとても重要なソフトウェア!!!
composerを入れるのは以下の2行のコマンドを実行する。
curl -sS https://getcomposer.org/installer | php
mv ./composer.phar /usr/local/bin/composer
これで終了である。
apacheのDocumentRootを変更する。
Laravelのプロジェクトでは[project-name]/public/
配下をDocumentRootに設定する必要がある。
DocumentRoot "/var/www/[project-name]/public"
<Directory "/var/www/[project-name]/public">
・・・・・・省略・・・・・・・・
</Directory>
というように上記の箇所を"/var/www/html"
から"/var/www/[project-name]/public"
に変更する。
Laravelプロジェクトの作成
"/var/www/"配下にプロジェクトを作成する。
composer create-project --prefer-dist laravel/laravel [project-name]
これでLaravelのプロジェクトが生成される。
あとは権限の設定を変更する。
Laravelは権限に非常にうるさく、権限が許可されていないと実行できないケースが多い。
最初はフルアクセスで実行し、うまく起動した後に設定を閉めて行った方が環境構築はが容易になるかもしれない。
chown -R apache:apache [project-name]
chmod -R 777 [project-name]
おわりに
今回は、Laravelの環境構築について最新の環境で構築を行なってみた。
あまり日本語の文献がなかったので記載したが、正直そこまで複雑な設定は存在しなく、慣れている人であれば、1時間もあれば構築できるレベルではある。
依存関係でphp7.0のリポジトリを参照させるのが少しつまるポイントだと思うので、そこだけ注意すればスムーズな構築が可能だろう・・・
参考文献
Laravel 5.4 インストール
CentOS7にApache2.4+PHP7+mysql5.7のLAMP環境構築
CentOS7へPHP7+MySQL5.7+Apache2.4のインストール&設定
yumでCentOS6.7にPHP7をインストールする方法とハマった点
CentOS 7 に LAMP 環境を構築する手順 (Apache, MySQL, PHP)
nginx+php-fpmをyumでインストールして、WordPress/CakePHPを動かす設定
composer 導入をまじめに考える
Laravel5をDockerで動かす