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