Edited at

そろそろ暖かくなってきたし CentOS6 に Laravel5 をインストールしてみた

More than 3 years have passed since last update.

最小構成かな?

またまたvagrant上に構成しています。firewallの設定は割愛します。

vagrant環境は以下の通りです。

OS:CentOS6.5

PHP:5.6.7

MySQL:5.5.43


Vagrantfile

こんな感じ


Vagrantfile

Vagrant.configure(2) do |config|

config.vm.box = "centos65"
config.vm.network "private_network", ip: "192.168.33.10"
config.vm.synced_folder "./data", "/var/www/html"
end


Laravelに必要なもの

PHP:5.4 以上

PHPモジュール:php-mcrypt(えむくりぷとと読むらしい…), php-mbstring, php-pdo, php-mysqlnd, php-tokenizer(これ使ってるのか?)

必要のないものはインストールしません。

これがいまのところベターな構成ではないでしょうか。


PHPをインストール

PHP5.4以上ということですが、せっかくなので5.6をインストールします。



  1. PHP5.6に必要なremiレポジトリを追加します。


    console

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




  2. PHPと関連モジュールたちをインストール


    console

    $ sudo yum install -y --enablerepo=remi --enablerepo=remi-php56 php php-mcrypt php-mbstring php-pdo php-mysqlnd php-tokenizer
    




  3. 確認


    console

    $ php -v
    
    PHP 5.6.7 (cli) (built: Mar 19 2015 15:09:09)
    Copyright (c) 1997-2015 The PHP Group
    Zend Engine v2.6.0, Copyright (c) 1998-2015 Zend Technologies




Composerを手に入れる

Laravelは基本的にComposerでインストールします。Composerをゲットしましょう。



  1. Composerをローカルインストール


    console

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




  2. 今回はグローバルインストールしたいので、すでにPATHが通っているディレクトリに移動させます。


    console

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




  3. 確認


    console

    $ composer
    
    ______
    / ____/___ ____ ___ ____ ____ ________ _____
    / / / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
    / /___/ /_/ / / / / / / /_/ / /_/ (__ ) __/ /
    \____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
    /_/
    Composer version 1.0-dev (921b3a0eba139820716f7aeefb553197c14656d8) 2015-04-15 18:27:04




Laravelインストーラーを手に入れる



  1. 公式のインストーラーがあるので、ゲットする。


    console

    $ composer global require "laravel/installer=~1.1"
    




  2. PATHを通す


    console

    $ echo 'export PATH=~/.composer/vendor/laravel/installer:$PATH' >> ~/.bash_profile
    




  3. 設定を反映


    console

    $ source .bash_profile
    




  4. 確認


    console

    $ laravel
    
    Laravel Installer version 1.2.0




Laravelプロジェクトを作成する



  1. さきほどPATHを通したlaravelコマンドを使う


    console

    $ laravel new test
    
    Crafting application...
    Generating optimized class loader
    Compiling common classes
    Application key [hogehogehogehogehoge] set successfully.
    Application ready! Build something amazing.

    今回はtestというプロジェクトを作成しますが、各自変えてください。

    rails ne.. うっ頭が…




動かしてみる



  1. Laravelにはアーチさんという職人がいるそうです。この方がビルトインサーバーもやってくれます。


    console

    $ cd test
    
    $ php artisan serve --host 0.0.0.0
    Laravel development server started on http://0.0.0.0:8000/


    artisan【名詞】

    熟練工, (腕のいい)職人

    多分読みはアーチさんではなくアルチザン…

    この状態でhttp://192.168.33.10:8000 にアクセス

    Imgur

    おー

    なんかナウいぞ




Apacheで動かす



  1. 関連モジュールとしてインストールされる記憶があったけど、インストールされていないならインストールする。


    console

    $ sudo yum install httpd
    


    console

    $ sudo service httpd start
    
    Starting httpd: httpd: apr_sockaddr_info_get() failed for vagrant-centos65.vagrantup.com
    httpd: Could not reliably determine the servers fully qualified domain name, using 127.0.0.1 for ServerName
    [ OK ]

    起動した

    ServerName変えろよって怒られる。いつものこと。




  2. 自動起動の設定もしちゃう


    console

    $ sudo chkconfig httpd on
    




  3. 確認

    http://192.168.33.10 アクセス

    Imgur

    ここまではOK

    ここでさっきのLaravelホーム画面みたいなの出したい




とりあえずvagrantのsync設定書き換える

vagrant使ってない人は飛ばしてください。


Vagrantfile

Vagrant.configure(2) do |config|

config.vm.box = "centos65"
config.vm.network "private_network", ip: "192.168.33.10"
config.vm.synced_folder "./data", "/var/www/html", owner: "apache", group: "apache", :mount_options => ["dmode=775"]
end

ディレクトリの所有者とグループをApacheに変更しつつ、apacheユーザーとapacheグループのみにread & write権限を付与


console

$ vagrant reload


リロードします。


プロジェクトをドキュメントルートに移動



  1. 普通にmv


    console

    $ sudo mv test/ /var/www/html/
    




  2. vagrant使ってない人はここで権限の設定しとく


    console

    $ sudo chown -R apache:apache /var/www/html/test/
    
    $ sudo chmod -R 775 /var/www/html/test/




Apacheの設定からドキュメントルートとか設定



  1. ドキュメントルートを書き換える


    console

    $ sudo sed -i 's_DocumentRoot \"/var/www/html\"_DocumentRoot \"/var/www/html/test/public\"_' /etc/httpd/conf/httpd.conf
    

    プロジェクト名testの部分は各自書き換えてください




  2. Apache起動するたびに怒られるのでServerNameも書き換える


    console

    sudo sed -i 's/#ServerName www.example.com:80/ServerName 127.0.0.1/' /etc/httpd/conf/httpd.conf
    




  3. .htaccessも許可しとく


    console

    $ sudo sed -i '/<Directory \"\/var\/www\/html\">/,/<\/Directory>/ s/AllowOverride None/AllowOverride All/' /etc/httpd/conf/httpd.conf
    

    こいつを変えておかないとルーティングがうまくいかない。




  4. Apache再起動する


    console

    $ sudo service httpd restart
    
    Stopping httpd: [ OK ]
    Starting httpd: [ OK ]

    もう怒られない。




  5. 確認

    http://192.168.33.10 アクセス

    Imgur

    おぉ




Laravel触ってみる



  1. http://192.168.33.10/home アクセス

    Imgur

    どうやらScaffoldでユーザー周りは作成されている模様

    右上のRegisterから新規ユーザー作ってみる

    Imgur

    register

    Imgur

    …せやな




データベースに接続する



  1. MySQLをインストールする。


    console

    $ sudo yum install -y --enablerepo=remi mysql-server
    
    $ sudo service mysqld start
    Starting mysqld: [ OK ]

    自動起動しとく


    console

    $ sudo chkconfig mysqld on
    




  2. データベースを作成する


    console

    $ mysql -uroot
    
    mysql> create database laravel;
    mysql> \q
    Bye

    データベース名laravelにしましたが、好きな名前で構いません。




  3. 設定ファイルを作成する


    console

    $ cd /var/www/html/test/
    
    $ sudo vi .env


    .env

    DB_HOST=localhost
    
    DB_DATABASE=laravel
    DB_USERNAME=root
    DB_PASSWORD=null

    DB_DATABASEはさきほどのデータベース名

    それ以外は上記のような形に書き換える




  4. Migrateする


    console

    $ sudo php artisan migrate
    
    Migration table created successfully.
    Migrated: 2014_10_12_000000_create_users_table
    Migrated: 2014_10_12_100000_create_password_resets_table

    これでデータベースにテーブルとかカラムとか作ってくれる

    ほんとrailsっぽい




Laravel触ってみる(2回目)

もっかいRegister

Imgur

はい、ドーン!

Imgur

サインアップできました。

なんかもうお腹いっぱい。


終わりに

これから新卒とか、入学とかでPHP始めようと考えてる人の役に立てばと思う。Laravelのコードはまだ書いてないけど、多分これからLaravel使っていくと思うし、またエラーで悩んだりしたらTips残したい。