ติดตั้งและคอนฟิก Laravel เบื้องต้น

ปีใหม่ทั้งที อยากปรับปรุงวิธีการเขียนโปรแกรมให้เป็นรูปแบบมากขึ้น หลายคนแนะนำมาให้ใช้ Framework เลยลองหาข้อมูลศึกษาดู

สำหรับ PHP มีหลาย Framework ที่มีผู้พัฒนาออกมา ให้สามารถนำมาใช้ได้ฟรี ลองเปรียบเทียบหาข้อมูลแล้ว คิดว่า laravel น่าจะดูดีสุด เลยมาแชร์วิธีการใช้กัน

Laravel เป็น PHP Web Application Framework ที่ถูกออกแบบ สำหรับการพัฒนาเว็บแอพพลิเคชันด้วย PHP ในรูปแบบ MVC (Model View Controller)

ความต้องการขั้นต่ำ

เวอร์ชั่นของ laravel ณ ตอนที่เขียนบทความนี้คือเวอร์ชั่น 4.2 ต้องใช้ PHP เวอร์ชั่น 5.4 ขึ้นไป และมี php mcrypt ติดตั้ง

ดังนั้นถ้าติดตั้งบน CentOS 6 ต้อง ติดตั้ง PHP 5.5 บน CentOS 6 ก่อน

ติดตั้งโมดูลของ php เพิ่มเติม

[root@cent6-php ~]# yum install php55w-mcrypt
[root@cent6-php ~]# yum install php55w-mysql

ติดตั้ง laravel

ตามคำแนะนำบนเว็บไซต์ laravel.com ให้ใช้ composer เพื่อติดตั้ง laravel

หมายเหตุ หากยังไม่มี composer สามารถดูวิธีติดตั้งได้ที่  ติดตั้ง composer ไว้บริหารจัดการ PHP Library

[alice@cent6-php ~]$ composer global require "laravel/installer=~1.1"
Changed current directory to /home/alice/.composer
./composer.json has been created
Loading composer repositories with package information
Updating dependencies (including require-dev)
  - Installing symfony/console (v2.6.1)
    Downloading: 100%         

  - Installing guzzlehttp/streams (2.1.0)
    Downloading: 100%         

  - Installing guzzlehttp/guzzle (4.2.3)
    Downloading: 100%         

  - Installing laravel/installer (v1.1.3)
    Downloading: 100%         

symfony/console suggests installing symfony/event-dispatcher ()
symfony/console suggests installing symfony/process ()
symfony/console suggests installing psr/log (For using the console logger)
Writing lock file
Generating autoload files

composer จะช่วยติดตั้ง library ที่จำเป็นโดยอัตโนมัติ

ไฟล์ที่ได้จะอยู่ในไดเร็กทอรี .composer ใน home ของผู้ใช้ที่รันคำสั่ง composer

ตัวอย่างไฟล์ที่ได้จากการรันคำสั่ง composer ติดตั้ง laravel

[alice@cent6-php ~]$ ls -l .composer/
total 20
drwxr-xr-x. 4 alice users 4096 Jan  4 15:02 cache
-rw-r--r--. 1 alice users   63 Jan  4 15:02 composer.json
-rw-r--r--. 1 alice users 7910 Jan  4 15:04 composer.lock
drwxr-xr-x. 7 alice users 4096 Jan  4 15:04 vendor

[alice@cent6-php ~]$ ls -l .composer/vendor/
total 24
-rw-r--r--. 1 alice users  183 Jan  4 15:04 autoload.php
drwxr-xr-x. 2 alice users 4096 Jan  4 15:04 bin
drwxr-xr-x. 2 alice users 4096 Jan  4 15:04 composer
drwxr-xr-x. 4 alice users 4096 Jan  4 15:04 guzzlehttp
drwxr-xr-x. 3 alice users 4096 Jan  4 15:04 laravel
drwxr-xr-x. 3 alice users 4096 Jan  4 15:03 symfony

[alice@cent6-php ~]$ ls -l .composer/vendor/bin/
total 0
lrwxrwxrwx. 1 alice users 28 Jan  4 15:04 laravel -> ../laravel/installer/laravel

เพื่อความสะดวกในการรัน laravel แนะนำให้เพิ่ม PATH ~/.composer/vendor/bin

[alice@cent6-php ~]$ vi .bash_profile 
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
	. ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin:~/.composer/vendor/bin

export PATH

ล็อกเอาท์แล้วล็อกอินใหม่ เพื่อโหลดไฟล์ .bash_profile ให้คอนฟิก PATH ใหม่มีผล

[alice@cent6-php ~]$ echo $PATH
/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/alice/bin:/home/alice/.composer/vendor/bin

ลองรันคำสั่ง laravel

[alice@cent6-php ~]$ laravel 
Laravel Installer version 1.1

Usage:
 [options] command [arguments]

Options:
 --help (-h)           Display this help message.
 --quiet (-q)          Do not output any message.
 --verbose (-v|vv|vvv) Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug.
 --version (-V)        Display this application version.
 --ansi                Force ANSI output.
 --no-ansi             Disable ANSI output.
 --no-interaction (-n) Do not ask any interactive question.

Available commands:
 help   Displays help for a command
 list   Lists commands
 new    Create a new Laravel application.

สร้างเว็บแอพด้วย laravel

ใช้คำสั่ง cd เปลี่ยนไปยังไดเร็กทอรีที่เก็บไฟล์เว็บ เช่น /var/www/html/

ใช้คำสั่ง laravel สร้างเว็บแอพใหม่ ชื่อ blog

[alice@cent6-php ~]$ cd /var/www/html/
[alice@cent6-php html]$ laravel new blog
Crafting application...
Application ready! Build something amazing.

ดูผลลัพธ์ที่ได้

[alice@cent6-php html]$ ls -l
total 4
drwxr-xr-x. 6 alice users 4096 Jan  4 15:25 blog

[alice@cent6-php html]$ ls -l blog/
total 100
drwxr-xr-x. 12 alice users  4096 Jan  4 15:25 app
-rw-r--r--.  1 alice users  2452 Jan  4 15:25 artisan
drwxr-xr-x.  2 alice users  4096 Jan  4 15:25 bootstrap
-rw-r--r--.  1 alice users   717 Jan  4 15:25 composer.json
-rw-r--r--.  1 alice users 58562 Jan  4 15:25 composer.lock
-rw-r--r--.  1 alice users   146 Jan  4 15:25 CONTRIBUTING.md
-rw-r--r--.  1 alice users   567 Jan  4 15:25 phpunit.xml
drwxr-xr-x.  3 alice users  4096 Jan  4 15:25 public
-rw-r--r--.  1 alice users  2051 Jan  4 15:25 readme.md
-rw-r--r--.  1 alice users   519 Jan  4 15:25 server.php
drwxr-xr-x. 20 alice users  4096 Jan  4 15:25 vendor

cd เข้าไปในไดเร็กทอรี blog ที่สร้างใหม่

[alice@cent6-php html]$ cd blog/

ไฟล์สำคัญไฟล์หนึ่งของ laravel คือ artisan เป็นไฟล์ php ที่ใช้ในการพัฒนาโปรแกรมด้วย laravel โดยจะมีโหมดคำสั่งต่างๆ และรูปแบบออปชั่นการใช้แตกต่างกันไป

[alice@cent6-php blog]$ php artisan 
Laravel Framework version 4.2.16

Usage:
  [options] command [arguments]
...

เริ่มต้นเพื่อความปลอดภัยของข้อมูล laravel แนะนำให้ใช้ php artisan ตามด้วยคำสั่ง key:generte เพื่อสร้าง key ใหม่

[alice@cent6-php blog]$ php artisan key:generate
Application key [KngSucY4b64pcFlMO16RR0i239gMyP4j] set successfully.

key ใหม่ที่ได้จะถูกแก้ไขในไฟล์ app/config/app.php โดยอัตโนมัติ

[alice@cent6-php blog]$ cat app/config/app.php 
...
    /*
    |--------------------------------------------------------------------------
    | Encryption Key
    |--------------------------------------------------------------------------
    |
    | This key is used by the Illuminate encrypter service and should be set
    | to a random, 32 character string, otherwise these encrypted strings
    | will not be safe. Please do this before deploying an application!
    |
    */

    'key' => 'KngSucY4b64pcFlMO16RR0i239gMyP4j',
...

แสดงผลแอพบนหน้าเว็บ

ในไดเร็กทอรี public นี้จะมีไฟล์ .htaccess index.php เพื่อใช้เป็นไดเร็กทอรีหลักของหน้าเว็บ หรือ DocumentRoot

[alice@cent6-php blog]$ ls -al public/
total 24
drwxr-xr-x. 3 alice users 4096 Jan  4 15:25 .
drwxr-xr-x. 6 alice users 4096 Jan  4 21:07 ..
-rw-r--r--. 1 alice users    0 Jan  4 15:25 favicon.ico
-rw-r--r--. 1 alice users  356 Jan  4 15:25 .htaccess
-rw-r--r--. 1 alice users 1586 Jan  4 15:25 index.php
drwxr-xr-x. 2 alice users 4096 Jan  4 15:25 packages
-rw-r--r--. 1 alice users   24 Jan  4 15:25 robots.txt

ล็อกอินด้วย root แก้ไขคอนฟิกของเว็บเซิร์ฟเวอร์เพื่อชี้ DocumentRoot

[root@cent6-php ~]# vi /etc/httpd/conf/httpd.conf 
...
#
# DocumentRoot: The directory out of which you will serve your
# documents. By default, all requests are taken from this directory, but
# symbolic links and aliases may be used to point to other locations.
#
DocumentRoot "/var/www/html/blog/public"
...

รีสตาร์ตเซอร์วิส httpd เพื่อให้คอนฟิกใหม่มีผล

[root@cent6-php ~]# service httpd restart
Stopping httpd:                                            [  OK  ]
Starting httpd:                                            [  OK  ]

ทดลองเปิดด้วย browser

l-01

 

ขึ้นข้อความ Error in exception handler

สาเหตุเป็นเพราะว่า laravel ต้องมีการเขียนไฟล์ลงไดเร็กทอรี app/storage ด้วย

cd เข้าไปใน app/ แล้วเปลี่ยน permission ของไดเร็กทอรี storage รวมทั้งไดเร็กทอรีย่อยๆ ด้วย

[alice@cent6-php blog]$ cd app/
[alice@cent6-php app]$ chmod -R 777 storage/

หากเซิร์ฟเวอร์มีการเปิดใช้ SELinux ด้วย ต้องใช้คำสั่ง chcon เปลี่ยน type เป็น httpd_sys_content_rw_t เพื่อให้โปรเซส httpd สามารถอ่านเขียนไฟล์หรือไดเร็กทอรีได้

[alice@cent6-php app]$ chcon -R -t httpd_sys_content_rw_t storage/

ลองเปิดหน้าเว็บบน browser อีกครั้ง

l-02

ข้อมูลอ้างอิง

Leave a Reply

Your email address will not be published.