LoginSignup
2
5

More than 5 years have passed since last update.

vagrant にcentos7 + php7 + composer + apache + mysql5.7 + laravel5を導入する

Last updated at Posted at 2017-05-03

vagrant にcentos7 + php7 + composer + apache の作業環境を作る方法はこちら
http://qiita.com/ShirakawaYoshimaru/items/97da2167039b3dc12536

composerを使ってlaravel installerをinstall

$ composer global require "laravel/installer"

5分くらいかかった。ログもほとんどでなくてフリーズしているのかと思った。。。

laravelコマンドがどこからでも使えるようにPATHを通す

vagrant環境のcomposerでは/home/vagrant/.config/composer/vendor/binにinstallされるらしい。

$ export PATH="$PATH:/home/vagrant/.config/composer/vendor/bin"

laravelコマンドを使って新規プロジェクトを作成する

$ laravel new blog

3~4分かかった。何やらDLしていた。

これでカレントディレクトリにblogディレクトリが作成され、その中にlaravel関連ファイルがごそっと作られた。

laravelのテストページを正常に表示させるためにいろいろ修正していきます。

apacheのドキュメントルートを変更する

laravelのドキュメントルートは、laravel newコマンドを実行した時に作成されるプロジェクト名ディレクトリの中にあるpublicディレクトリになります。
今回、/home/vagrantlaravel newコマンドを実行したので、ドキュメントルートは以下になります。

/home/vagrant/blog/public

apacheのドキュメントルートは、初期設定だと/var/www/htmlになっているのでこれを変更します。

viで/etc/httpd/conf/httpd.confファイルを開きます。

$ sudo vi /etc/httpd/conf/httpd.conf
変更箇所その1
これを
DocumentRoot "/var/www/html"
こうじゃ
DocumentRoot "/home/vagrant/blog/public"
変更箇所その2
これを
<Directory "/var/www">
こうじゃ
<Directory "/home/vagrant/blog/public">

apacheの再起動

httpd.confを反映させるためにapacheを再起動します。

$ sudo systemctl restart httpd

これでドキュメントルートがlaravelのドキュメントルートに切り替わりました。

ブラウザから見てみる。

結果;失敗
スクリーンショット 2017-05-03 15.33.32.png

Forbidden。エラーが発生しました。

apacheのエラーログを見てみる。

apacheのログを見る時はtail -Fコマンドを使うと便利。ログの更新があったらリアルタイムに出力してくれる。

$ sudo tail -F /etc/httpd/logs/error_log

tail -Fを実行し後にもう一度localhost:8080にアクセスするとログにエラーが流れました。

ログを読む
[Wed May 03 06:34:55.074878 2017] [core:error] [pid 16920] (13)Permission denied: [client 10.0.2.2:60741] AH00035: access to / denied (filesystem path '/home/vagrant/blog') because search permissions are missing on a component of the path

Permission deniedのようです。
/home/vagrant/blogへのアクセス権限がないのかな?・・・?

パーミッションを正しく変更
$ chmod 701 /home/vagrant
$ chmod 701 /home/blog

*710のほうがよい?
=>いや、701じゃないと動かなかった。(グループを作ってないから?)

やっちゃだめ
chmod -R 701 blog/

ディレクトリ以下すべてのパーミッションを変えるとクラッシュ?してlaravelが起動されなくなる。

chmod時にこんなエラーがでる
chmod: `blog/storage/framework/views/7a39a28791aba17c2aa3698c84d94c319c0d9baa.php' のパーミッションを変更しています: 許可されていない操作です
chmod: `blog/storage/framework/sessions/EC3JfcOR7mESQjKadqXDvdeQNsdUwqo72uddIjlw' のパーミッションを変更しています: 許可されていない操作です

でも

$ chmod -R 777 /home/blog

をやっても動いた。最後の一桁は1じゃなくて7でやったほうが良いのかも?

vagrantディレクトリとblogディレクトリのパーミッションを変更してブラウザからアクセスすると
画面にLaravelの文字が!
スクリーンショット 2017-05-03 16.16.26.png

こちらを参考に500エラーを解消する
http://ponkotsuengine.hatenablog.com/entry/2017/02/11/165507



●SELinuxをOFF

※これやっとかないと、インストール後のブラウザアクセスで500エラーになります。apacheのエラーログに

PHP Warning: Unknown: failed to open stream: Permission denied in Unknown on line 0

PHP Fatal error:  Unknown: Failed opening required '/home/laravel/project/public/index.php' (include_path='.:/usr/share/pear:/usr/share/php') in Unknown on line 0

が出ます。



・とりあえずOFF
setenforce 0

・リブート後も反映されるように設定ファイル編集しておく。
vi /etc/selinux/config
disabledに変更し保存
SELINUX=disabled

mysqlをインストール

mysqlのインストール
Laravel5系でmysqlを使用する場合はmysql5.7のほうが良い。5.6以下だとphp artisan migrateした時にuserテーブル作成時にエラーが出た。(5.6だと初期カラムの長さが足りない??短すぎる??らしい)

$ sudo yum -y install mysql-community-server
*これだけじゃダメかも?

エラーがが出てしまった。。。

$ sudo yum -y install mysql-community-server
...略...

パッケージ mysql-community-server は利用できません。
エラー: 何もしません

mysqlのリポジトリを入れる?

$ sudo yum -y install http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm

もう一度mysqlをインストールしてみる

$ sudo yum -y install mysql-community-server
こっちのほうがいいかも↓
$ sudo yum --enablerepo='mysql57-community*' install -y mysql-community-server
5.7をインストール
インストール成功

mysqlコマンドをやるとエラー

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

mysqlのステータスを確認してみる(mysqldじゃなくてmysql.serviceでも動くみたいだけど何が違うんだろう?)

$ sudo systemctl status mysqld
● mysqld.service - MySQL Community Server
   Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
   Active: inactive (dead)

mysql死んでた。ので起動させる

$ sudo systemctl start mysqld
$ sudo systemctl enable mysqld

ドライバを入れる。

$ sudo yum install --enablerepo=remi,remi-php70 php-mysqlnd

mysqlのrootのパスワードを変更しないと何もできないのでパスワード変更する
http://qiita.com/RyochanUedasan/items/9a49309019475536d22a
(パスワード変更が必須なのはmysql 5.7versionからかも)

アパッチ再起動

$ sudo systemctl restart httpd

確認

$ php -r "phpinfo();" | grep -i pdo
PDO
PDO support => enabled
PDO drivers => mysql, sqlite
pdo_mysql
PDO Driver for MySQL => enabled
pdo_mysql.default_socket => /var/lib/mysql/mysql.sock => /var/lib/mysql/mysql.sock
pdo_sqlite
PDO Driver for SQLite 3.x => enabled

pdoのdriverにmysqlが入っているのがわかる。これでphp artisan migrateとかできるようになった。

以上。

2
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
5