การติดตั้งและใช้งาน Laravel

Reference: https://laravel.com/docs/5.4/homestead

ติดตั้ง VirtualBox

  1. คลิกที่นี่เพื่อไปยังหน้า download VirtualBox และทำการติดตั้ง VirtualBox

ติดตั้ง Vagrant

  1. คลิกที่นี่เพื่อไปยังหน้า download VirtualBox จากนั้นทำการติดตั้ง Vagrant
  2. รันคำสั่งเพื่อ download homestead box
vagrant box add laravel/homestead
$vagrant box add laravel/homestead
==> box: Loading metadata for box 'laravel/homestead'
    box: URL: https://vagrantcloud.com/laravel/homestead
This box can work with multiple providers! The providers that it
can work with are listed below. Please review the list and choose
the provider you will be working with.

1) parallels
2) virtualbox
3) vmware_desktop

Enter your choice: 2
==> box: Adding box 'laravel/homestead' (v2.2.0) for provider: virtualbox
    box: Downloading: https://vagrantcloud.com/laravel/boxes/homestead/versions/
2.2.0/providers/virtualbox.box
    box: Progress: 0% (Rate: 31436/s, Estimated time remaining: 18:46:01)==> box
: Waiting for cleanup before exiting...
    box: Progress: 0% (Rate: 41216/s, Estimated time remaining: 11:52:43)
==> box: Box download was interrupted. Exiting.

ติดตั้ง Homestead

สำคัญ: ถ้าใช้ Windows ควรจะใช้ Git bash ในการรัน command ต่อจากนี้ เนื่องจาก command จะอยู่ใน linux command syntax

รันคำสั่งเพื่อไปยังหน้า home และทำการ clone Homestead

cd ~

git clone https://github.com/laravel/homestead.git Homestead

// cd ไปยัง folder Homestead
cd Homestead

// Checkout version ที่ stable
git checkout v5.4.0

// สร้างไฟล์ Homestead.yaml (สำหรับ config)
bash init.sh

// ตรวจสอบที่อยู่ไฟล์
pwd

// ควรจะจำตำแหน่งโฟลเดอร์นี้ให้ดีเพราะต้องใช้อีกหลายครั้ง

ตรวจสอบ private key และ public key

cd ~/.ssh

// หากไม่มีโฟลเดอร์ ssh
ssh-keygen
// กด enter รัวๆ และไปลำดับต่อไป

// หากมีโฟลเดอร์ .ssh
ls

// หากมีไฟล์ id_rsa และ id_rsa.pub ให้ข้ามไปลำดับต่อไป

// หากไม่มีไฟล์​ id_ras และ id_ras.pub
ssh-keygen
// กด enter รัวๆ และไปลำดับต่อไป

เปิดไฟล์ Homestead.yaml

---
ip: "192.169.10.10"
memory: 2048
cpus: 1
provider: virtualbox

authorize: ~/.ssh/id_rsa.pub

keys:
    - ~/.ssh/id_rsa

folders:
    - map: ~/Code
      to: /home/vagrant/Code

sites:
    - map: example.app
      to: /home/vagrant/Code/example.app/public

databases:
    - homestead

ports:
    - send: 63790
      to: 6379

ส่วนประกอบของไฟล์แต่ละส่วนมีหน้าที่ดังนี้

---
ip: "192.169.10.10" // ip ของ guest os 
memory: 2048 // memory ที่ host os จะแชร์ให้ guest os
cpus: 1 // จำนวน core ของ cpu ที่ host os จะแชร์ให้ guest os
provider: virtualbox // provider ที่ใช้ในการสร้าง guest os

authorize: ~/.ssh/id_rsa.pub // public key ที่ใช้ในการ authen เพื่อ ssh เข้าใช้งาน guest os

keys:
    - ~/.ssh/id_rsa // private key ที่ใช้ในการ authen เพื่อ ssh เข้าใช้งาน guest os

folders: // Folder ที่แชร์ระหว่าง host os และ guest os
    - map: ~/Code
      to: /home/vagrant/Code

sites: // เว็บไซต์ที่ต้องการให้ guest os สร้างการ mapping
    - map: homestead.app
      to: /home/vagrant/Code/Laravel/public

databases: // Database ที่ต้องการให้ guest os สร้าง
    - homestead

ports: // Port ที่ต้องการ forward จาก host os ไปยัง guest os
    - send: 63790
      to: 6379

เนื่องจากเราได้ทำการผู้โฟลเดอร์ ~/Code จาก host os ไว้กับ guest os จึงต้องทำการสร้างโฟลเดอร์ Code

cd ~

mkdir Code

เข้าใช้งาน guest os

// เข้าสู่โฟลเดอร์ Homestead
cd ~/Homestead

// คำสั่ง start up guest os
vagrant up

// คำสั่งเข้าสู่ guest os
vagrant ssh

terminal ควรจะแสดงผลดังนี้

vagrant@homestead:~$

เข้าสู่โฟลเดอร์ Code ใน guest os และทำการสร้าง Laravel project

cd ~/Code

// เนื่องจากในไฟล์ Homestead.yaml เราได้สร้างโดเมน homstead.app 
// ให้ map กับโฟลเดอร์ /home/vagrant/Code/Laravel/public
// ดังนั้นเราจึงจำเป็นต้องสร้าง laravel project ชื่อ Laravel
laravel new Laravel

หากทุกอย่างถูกต้อง Terminal ควรจะแสดงผลการติดตั้ง Laravel ออกมาประมาณนี้

Crafting application...
Loading composer repositories with package information
Installing dependencies (including require-dev) from lock file
Package operations: 59 installs, 0 updates, 0 removals
  - Installing doctrine/inflector (v1.1.0): Loading from cache
  - Installing erusev/parsedown (1.6.3): Loading from cache
  - Installing jakub-onderka/php-console-color (0.1): Loading from cache
  - Installing symfony/polyfill-mbstring (v1.4.0): Loading from cache
  - Installing symfony/var-dumper (v3.3.5): Loading from cache
  - Installing psr/log (1.0.2): Loading from cache
  - Installing symfony/debug (v3.3.5): Loading from cache
  - Installing symfony/console (v3.3.5): Loading from cache
  - Installing nikic/php-parser (v3.0.6): Loading from cache
  - Installing jakub-onderka/php-console-highlighter (v0.3.2): Loading from cache
  - Installing dnoegel/php-xdg-base-dir (0.1): Loading from cache
  - Installing psy/psysh (v0.8.9): Loading from cache
  - Installing vlucas/phpdotenv (v2.4.0): Loading from cache
  - Installing symfony/css-selector (v3.3.5): Loading from cache
  - Installing tijsverkoyen/css-to-inline-styles (2.2.0): Loading from cache
  - Installing symfony/routing (v3.3.5): Loading from cache
  - Installing symfony/process (v3.3.5): Loading from cache
  - Installing symfony/http-foundation (v3.3.5): Loading from cache
  - Installing symfony/event-dispatcher (v3.3.5): Loading from cache
  - Installing symfony/http-kernel (v3.3.5): Loading from cache
  - Installing symfony/finder (v3.3.5): Loading from cache
  - Installing swiftmailer/swiftmailer (v5.4.8): Loading from cache
  - Installing paragonie/random_compat (v2.0.10): Loading from cache
  - Installing ramsey/uuid (3.6.1): Loading from cache
  - Installing symfony/translation (v3.3.5): Loading from cache
  - Installing nesbot/carbon (1.22.1): Loading from cache
  - Installing mtdowling/cron-expression (v1.2.0): Loading from cache
  - Installing monolog/monolog (1.23.0): Loading from cache
  - Installing league/flysystem (1.0.40): Loading from cache
  - Installing laravel/framework (v5.4.30): Downloading (100%)
  - Installing laravel/tinker (v1.0.2): Downloading (100%)
  - Installing fzaninotto/faker (v1.6.0): Loading from cache
  - Installing hamcrest/hamcrest-php (v1.2.2): Loading from cache
  - Installing mockery/mockery (0.9.9): Loading from cache
  - Installing webmozart/assert (1.2.0): Loading from cache
  - Installing phpdocumentor/reflection-common (1.0): Loading from cache
  - Installing phpdocumentor/type-resolver (0.4.0): Loading from cache
  - Installing phpdocumentor/reflection-docblock (3.2.0): Loading from cache
  - Installing phpunit/php-token-stream (1.4.11): Loading from cache
  - Installing symfony/yaml (v3.3.5): Loading from cache
  - Installing sebastian/version (2.0.1): Loading from cache
  - Installing sebastian/resource-operations (1.0.0): Loading from cache
  - Installing sebastian/recursion-context (2.0.0): Loading from cache
  - Installing sebastian/object-enumerator (2.0.1): Loading from cache
  - Installing sebastian/global-state (1.1.1): Loading from cache
  - Installing sebastian/exporter (2.0.0): Loading from cache
  - Installing sebastian/environment (2.0.0): Loading from cache
  - Installing sebastian/diff (1.4.3): Loading from cache
  - Installing sebastian/comparator (1.2.4): Loading from cache
  - Installing phpunit/php-text-template (1.2.1): Loading from cache
  - Installing doctrine/instantiator (1.0.5): Loading from cache
  - Installing phpunit/phpunit-mock-objects (3.4.4): Loading from cache
  - Installing phpunit/php-timer (1.0.9): Loading from cache
  - Installing phpunit/php-file-iterator (1.4.2): Loading from cache
  - Installing sebastian/code-unit-reverse-lookup (1.0.1): Loading from cache
  - Installing phpunit/php-code-coverage (4.0.8): Loading from cache
  - Installing phpspec/prophecy (v1.7.0): Loading from cache
  - Installing myclabs/deep-copy (1.6.1): Loading from cache
  - Installing phpunit/phpunit (5.7.21): Loading from cache
symfony/var-dumper suggests installing ext-symfony_debug ()
symfony/console suggests installing symfony/filesystem ()
psy/psysh suggests installing ext-pdo-sqlite (The doc command requires SQLite to work.)
psy/psysh suggests installing hoa/console (A pure PHP readline implementation. You'll want this if your PHP install doesn't already support readline or libedit.)
symfony/routing suggests installing doctrine/annotations (For using the annotation loader)
symfony/routing suggests installing symfony/config (For using the all-in-one router or any loader)
symfony/routing suggests installing symfony/dependency-injection (For loading routes from a service)
symfony/routing suggests installing symfony/expression-language (For using expression matching)
symfony/event-dispatcher suggests installing symfony/dependency-injection ()
symfony/http-kernel suggests installing symfony/browser-kit ()
symfony/http-kernel suggests installing symfony/class-loader ()
symfony/http-kernel suggests installing symfony/config ()
symfony/http-kernel suggests installing symfony/dependency-injection ()
paragonie/random_compat suggests installing ext-libsodium (Provides a modern crypto API that can be used to generate random bytes.)
ramsey/uuid suggests installing ext-libsodium (Provides the PECL libsodium extension for use with the SodiumRandomGenerator)
ramsey/uuid suggests installing ext-uuid (Provides the PECL UUID extension for use with the PeclUuidTimeGenerator and PeclUuidRandomGenerator)
ramsey/uuid suggests installing ircmaxell/random-lib (Provides RandomLib for use with the RandomLibAdapter)
ramsey/uuid suggests installing moontoast/math (Provides support for converting UUID to 128-bit integer (in string form).)
ramsey/uuid suggests installing ramsey/uuid-console (A console application for generating UUIDs with ramsey/uuid)
ramsey/uuid suggests installing ramsey/uuid-doctrine (Allows the use of Ramsey\Uuid\Uuid as Doctrine field type.)
symfony/translation suggests installing symfony/config ()
monolog/monolog suggests installing aws/aws-sdk-php (Allow sending log messages to AWS services like DynamoDB)
monolog/monolog suggests installing doctrine/couchdb (Allow sending log messages to a CouchDB server)
monolog/monolog suggests installing ext-amqp (Allow sending log messages to an AMQP server (1.0+ required))
monolog/monolog suggests installing ext-mongo (Allow sending log messages to a MongoDB server)
monolog/monolog suggests installing graylog2/gelf-php (Allow sending log messages to a GrayLog2 server)
monolog/monolog suggests installing mongodb/mongodb (Allow sending log messages to a MongoDB server via PHP Driver)
monolog/monolog suggests installing php-amqplib/php-amqplib (Allow sending log messages to an AMQP server using php-amqplib)
monolog/monolog suggests installing php-console/php-console (Allow sending log messages to Google Chrome)
monolog/monolog suggests installing rollbar/rollbar (Allow sending log messages to Rollbar)
monolog/monolog suggests installing ruflin/elastica (Allow sending log messages to an Elastic Search server)
monolog/monolog suggests installing sentry/sentry (Allow sending log messages to a Sentry server)
league/flysystem suggests installing league/flysystem-aws-s3-v2 (Allows you to use S3 storage with AWS SDK v2)
league/flysystem suggests installing league/flysystem-aws-s3-v3 (Allows you to use S3 storage with AWS SDK v3)
league/flysystem suggests installing league/flysystem-azure (Allows you to use Windows Azure Blob storage)
league/flysystem suggests installing league/flysystem-cached-adapter (Flysystem adapter decorator for metadata caching)
league/flysystem suggests installing league/flysystem-copy (Allows you to use Copy.com storage)
league/flysystem suggests installing league/flysystem-eventable-filesystem (Allows you to use EventableFilesystem)
league/flysystem suggests installing league/flysystem-rackspace (Allows you to use Rackspace Cloud Files)
league/flysystem suggests installing league/flysystem-sftp (Allows you to use SFTP server storage via phpseclib)
league/flysystem suggests installing league/flysystem-webdav (Allows you to use WebDAV storage)
league/flysystem suggests installing league/flysystem-ziparchive (Allows you to use ZipArchive adapter)
league/flysystem suggests installing spatie/flysystem-dropbox (Allows you to use Dropbox storage)
laravel/framework suggests installing aws/aws-sdk-php (Required to use the SQS queue driver and SES mail driver (~3.0).)
laravel/framework suggests installing doctrine/dbal (Required to rename columns and drop SQLite columns (~2.5).)
laravel/framework suggests installing guzzlehttp/guzzle (Required to use the Mailgun and Mandrill mail drivers and the ping methods on schedules (~6.0).)
laravel/framework suggests installing league/flysystem-aws-s3-v3 (Required to use the Flysystem S3 driver (~1.0).)
laravel/framework suggests installing league/flysystem-rackspace (Required to use the Flysystem Rackspace driver (~1.0).)
laravel/framework suggests installing nexmo/client (Required to use the Nexmo transport (~1.0).)
laravel/framework suggests installing pda/pheanstalk (Required to use the beanstalk queue driver (~3.0).)
laravel/framework suggests installing predis/predis (Required to use the redis cache and queue drivers (~1.0).)
laravel/framework suggests installing pusher/pusher-php-server (Required to use the Pusher broadcast driver (~2.0).)
laravel/framework suggests installing symfony/dom-crawler (Required to use most of the crawler integration testing tools (~3.2).)
laravel/framework suggests installing symfony/psr-http-message-bridge (Required to psr7 bridging features (0.2.*).)
sebastian/global-state suggests installing ext-uopz (*)
phpunit/php-code-coverage suggests installing ext-xdebug (^2.5.1)
phpunit/phpunit suggests installing ext-xdebug (*)
phpunit/phpunit suggests installing phpunit/php-invoker (~1.1)
Generating optimized autoload files
> php -r "file_exists('.env') || copy('.env.example', '.env');"
> Illuminate\Foundation\ComposerScripts::postInstall
> php artisan optimize
Generating optimized class loader
The compiled services file has been removed.
> php artisan key:generate
Application key [base64:+dJ+tHeJj7iK0+mAaG3ey9oqoZkyWUuvLsBbDT5/0l4=] set successfully.
Application ready! Build something amazing.
vagrant@homestead:~/Code$

แก้ไข hosts file ที่ host os เพื่อให้รู้จักกับ homestead.app และสามารถเข้าถึงได้ทาง browser ไฟล์ hosts ของ windows จะถูกสร้างไว้ที่ C:\Windows\System32\drivers\etc\hosts และของ linux ถูกสร้างไว้ที่ /etc/hosts ให้เปิดไฟล์ขึ้นมาและทำการเพิ่ม record ต่อไปนี้ไว้ที่ล่างสุดของไฟล์

192.168.10.10  homestead.app

ทำการทดสอบโดยเข้า homestead.app ที่ browser

results matching ""

    No results matching ""