Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

Laravel5.4の環境構築

More than 3 years have passed since last update.

本記事では、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を入れる
vim-git.sh
yum update
yum install -y git vim
  • SELinuxとfirewallの無効化
SELinux-firewall.sh
setenforce 0
systemctl stop firewalld

SELinuxとfirewallの無効化はセキュリティレベルを下げる原因になるため、
環境構築が終了した場合にはどちらも有効にすることをお勧めする。

リポジトリの登録

repository.sh
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のインストール

apache.sh
yum install -y httpd
httpd -v
systemctl enable httpd
systemctl start httpd.service

MySQLのインストール

とりあえず、デフォルトmariaDBがインストールされているらしいのでアンインストールする。

maria.sh
yum -y remove mariadb-libs
rm -Rf /var/lib/mysql/
mysql.sh
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が起動し、初期パスワードを表示してくれる。

mysql-setup.sh
/usr/bin/mysql_secure_installation

上記のコマンドを実行し、旧パスワードと新パスワードを登録することでパスワードを更新することができる。

php7インストール

php7.sh
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

php70.repo
[remi-php70]
   priority=1

このように設定を変更することで問題となる依存関係を回避してインストールできるようになる。

php7に対応したapacheの設定

php7をapacheで利用する場合には、以下のモジュール設定を追加する必要がある。

/etc/httpd/conf/httpd.conf
<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>を書き換える。

/etc/httpd/conf/httpd.conf
<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行のコマンドを実行する。

composer.sh
curl -sS https://getcomposer.org/installer | php
mv ./composer.phar /usr/local/bin/composer

これで終了である。

apacheのDocumentRootを変更する。

Laravelのプロジェクトでは[project-name]/public/配下をDocumentRootに設定する必要がある。

/etc/httpd/conf/httpd.conf
DocumentRoot "/var/www/[project-name]/public"
<Directory "/var/www/[project-name]/public">
・・・・・・省略・・・・・・・・
</Directory>

というように上記の箇所を"/var/www/html"から"/var/www/[project-name]/public"に変更する。

Laravelプロジェクトの作成

"/var/www/"配下にプロジェクトを作成する。

project-make.sh
composer create-project --prefer-dist laravel/laravel [project-name]

これでLaravelのプロジェクトが生成される。
あとは権限の設定を変更する。
Laravelは権限に非常にうるさく、権限が許可されていないと実行できないケースが多い。
最初はフルアクセスで実行し、うまく起動した後に設定を閉めて行った方が環境構築はが容易になるかもしれない。

permission.sh
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で動かす

nocturnality
PHP / Kotlin / Python / Swift / JavaScript / TypeScript / GoLang
recode
Recode は個人開発者が集う Slack コミュニティです。エンジニア・デザイナー等の職種を問わず、多様性のあるコミュニティを目指しています。
http://hukumoto.pe-gawa.com/club/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away