laravel5.4の環境構築手順メモ

laravel5.4の環境構築メモです。

環境

  • vagrant
  • CenOS6.7
  • apache2系
  • mysql5.7
  • php7系
  • composer
  • Laravel5.4

centOS6.7インストール

mkdir centos_laravel
cd centos_laravel
vagrant box add centos_laravel https://github.com/CommanderK5/packer-centos-template/releases/download/0.6.7/vagrant-centos-6.7.box

・設定ファイルを作成

vagrant init centos_laravel

・Vagrantfileを編集

20行目config.vm.box_check_update = false
35行目config.vm.network "private_network", ip: "192.168.33.10"
46行目config.vm.synced_folder ".", "/var/www/html"としてVagrantfileがあるディレクトリとCentOS側の/var/www/htmlを同期させる
52行目config.vm.provider "virtualbox" do |vb|
57行目vb.memory = "1024"
58行目end

vagrant起動

vagrant up
vagrant ssh

Apacheインストール

sudo yum update
sudo yum -y install httpd
httpd -v

これで良い感じに出たら、Apacheが入っている。

Mysql5.7インストール

sudo rpm --import http://dev.mysql.com/doc/refman/5.7/en/checking-gpg-signature.html
sudo rpm -ihv http://dev.mysql.com/get/mysql57-community-release-el6-7.noarch.rpm
yum --disablerepo=\* --enablerepo='mysql57-community*' list available
sudo yum --enablerepo='mysql57-community*' install -y mysql-community-server
sudo service mysqld start

Mysqlのパスワード変更

以下のコマンドで初期設定のパスワードを確認

grep -e 'A temporary password is generated for root@localhost' /var/log/mysqld.log
=>A temporary password is generated for root@localhost: **********

*********の部分が初期パスワード。


※以下のようなエラーが出る場合

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

Socketファイルがないことが原因みたい。mysqlを再起動すると、/var/lib/mysql/mysql.sockが自動的に作成される。

対応コマンド↓
sudo /etc/init.d/mysqld restart

Mysqlパスワード変更

mysql -u root -p
set password for root@localhost=password(‘任意のパスワード’);

PHP7系のインストール

参照:http://qiita.com/ozawan/items/caf6e7ddec7c6b31f01e

CentOS6系の標準リポジトリPHPバージョンは5.3なので、7の場合はリポジトリを追加してのインストール作業が必要になる。

・EPELリポジトリを追加

sudo yum install epel-release

・Remiリポジトリを追加

sudo rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm

・php7.0をインストール

sudo yum install --enablerepo=remi,remi-php70 php php-devel php-mbstring php-pdo php-gd

確認

rpm -qa | grep php
php --version

・Composerをインストール

curl -sS https://getcomposer.org/installer | php

パスが通っている場所にリネームする


sudo mv composer.phar /usr/local/bin/composer

確認

composer

上のコマンドで良い感じに出たらインストールされている。

・laravelインストーラーダウンロード

composer global require "laravel/installer=~1.1"

※以下のエラーが出る場合

Failed to download symfony/process from dist: The zip extension and unzip command are both missing, skipping.

おそらくzip、unzipコマンドがインストールされていないため起きたエラー。

対応コマンド

sudo yum install -y zip unzip
完了したら再度以下のコマンドを実行
composer global require "laravel/installer=~1.1"

PATHを通す


echo 'export PATH=~/.composer/vendor/laravel/installer:$PATH' >> ~/.bash_profile
$ source .bash_profile
$ laravel
=>Laravel Installer version 1.3.3

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

sudo vi /etc/httpd/conf/httpd.conf

以下のようにディレクトリを変更。ディレクトリは実際に仮想環境上でプロジェクトがある位置を指定。この場合は、www/以下にプロジェクトがある。

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

AllowOverride None→Allに変更

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

composer create-project --prefer-dist laravel/laravel [project-name]

作れない

・・・が、

sudo chmod -R o+rw /var/www/

権限変更すると作れる

・プロジェクト起動

php artisan serve
以下エラー
PHP Warning:  require(/var/www/laravel_test/bootstrap/../vendor/autoload.php): failed to open stream: No such file or directory in /var/www/laravel_test/bootstrap/autoload.php on line 17
PHP Fatal error:  require(): Failed opening required '/var/www/laravel_test/bootstrap/../vendor/autoload.php' (include_path='.:/usr/share/pear:/usr/share/php') in /var/www/laravel_test/bootstrap/autoload.php on line 17

ファイルがないみたいなので、composer installを実行↓

以下エラー
  Problem 1
    - phpunit/phpunit 5.7.9 requires ext-dom * -> the requested PHP extension dom is missing from your system.

・対応コマンド 作ったlaravelプロジェクトで以下を実行

sudo yum --enablerepo=remi-php70 install php-xml
composer install

php artisan serveは起動するが、ipをブラウザで打っても表示されない→権限がおかしい。

プロジェクト配下にstorageがあるのでそこの権限を変えます。

cd storage
sudo chmod 777 *

これでipアドレスで表示はできる。が、ブラウザ上ではまだエラー↓

RuntimeException in Encrypter.php line 43:
The only supported ciphers are AES-128-CBC and AES-256-CBC with the correct key lengths.

キーを生成すれば良いらしい。

php artisan key:generate
php artisan cache:clear

画面を確認すると出たああああああ。

やったああああああああああああああああああああ!!!


vagrantと同期している場合 vagrantとフォルダを同期している場合は、仮想マシン上でいくら権限変更してもうまくいきませんでした。 ローカルのフォルダの権限をいじると同期されてうまくいきます。。。

sudo chmod -R a=rwX laravel_test/storage
sudo chmod 777 laravel_test/bootstrap/cache