20%

KHUYẾN MẠI

Giảm giá khi nâng cấp web năm 2020

Bài 2: Cài đặt môi trường phát triển Laravel với Vagrant Homestead

Học laravel bài 2: Dựng môi trường phát triển

Cũng như học bất cứ thứ gì khác, trước khi bắt đầu, bạn sẽ cần chuẩn bị các đồ dùng thiết yếu. Và trong trường hợp của chúng ta, môi trường phát triển chính là “đồ dùng thiết yếu” phục vụ việc học Laravel. Như bạn đã biết thì Laravel là Framework của PHP, mà PC thông thường không thể tự chạy được nó. Do đó, chúng ta sẽ cần cài thêm một vài thứ để bạn có thể chạy được code PHP.

Có rất nhiều bộ công cụ khác nhau giúp bạn thực hiện chạy code PHP trên window, như XAMPP, WAMP,… nhưng sau một lúc đắn đo suy nghĩ, mình quyết định hướng dẫn bạn sử dụng Vagrant Homestead – Một môi trường phát triển hoàn được cung cấp bởi chính Laravel.

Một số thứ bạn cần biết trước khi bắt đầu

Git Bash (Dùng cho Windows)

Nếu bạn đang dùng Linux hoặc MacOS thì không cần quan tâm đến phần này, trên MacOS, Linux đã có sẵn Terminal, bạn chỉ việc mở ra và dùng thôi. Còn trên Windows, thật ra thì cũng có cmd, nhưng vấn đề là cmd sử dụng bộ lệnh khác thay vì bash shell. Và mình thì không biết mấy cái lệnh này :)). Mà có bạn cũng gần như chẳng bao giờ dùng đến nó trên server thật, trừ khi bạn setup windows server thì có thể(Mình cũng không rõ vấn đề này lắm, mình chưa setup windows server bao giờ).

May mắn là chúng ta có một công cụ thay thế khá tiện lợi, đó là Git Bash. Về cơ bản, nó sẽ giúp bạn run các câu lệnh bash shell trên windows. Còn nếu bạn không biết bash shell là gì thì cũng không sao, chỉ cần biết là nó dùng để chạy những câu lệnh mà bài viết này hướng dẫn là được rồi.

Để install Git Bash, bạn chỉ cần click vào đây, chọn phiên bản dành cho windows, download về và cài đặt. Sau khi cài đặt xong, bạn có thể tìm thấy nó trong thanh tìm kiếm của windows.

Lưu ý: Mỗi lần bạn mở Git Bash lên để sử dụng, bạn nên chuột phải và click vào “Run as administrator” để Git Bash có nhiều quyền nhất, giảm thiểu lỗi linh tinh khi sử dụng với Vagrant.

Cài đặt Git Bash thành công
Cài đặt Git Bash thành công

Một số lệnh Linux cơ bản sẽ sử dụng trong bài viết này

Mới đầu mình định để các bạn học một đống kiến thức Linux cơ bản luôn cơ :)), nhưng nghĩ lại thấy hơi cực, bạn sẽ nản mất. Nên thôi, mình sẽ giải thích tất cả các lệnh được sử dụng trong bài tại đây. Nếu bạn không hiểu lệnh nào thì có thể kéo lên đây xem lại nhé ^^. Còn kể ra thì, nếu bạn có hiểu biết về Linux từ trước rồi thì tốt hơn.

$ git clone https://github.com/haminh7328/blog-laravel-dotrinh.com.git ~/lrv-dotrinh.com # lấy toàn bộ source code trên remote repo về máy
----------------------
$ cd /home/vagrant/code/lrv-dotrinh.com # Lệnh "cd" gần tương tự như việc bạn mở thư mục hay duyệt thư mục bằng dòng lệnh.
----------------------
# Các lệnh còin lại thì mình đã giải thích chi tiết trong từng phần một rồi nên thôi không liệt kê vào đây nữa.

VirtualBox

VirtualBox là phần mềm hỗ trợ ảo hóa pc của bạn. Nghĩa là chương trình sẽ giúp bạn chia ổ cứng, ram, CPU để bạn có thể tạo ra một máy ảo (Virtual Machine – VM) gần như giống y máy thật, máy ảo này sẽ sử dụng một phần tài nguyên của máy thật để hoạt động. Nó sẽ có hệ điều hành riêng, hệ thống quả lý file, thư mục riêng,… Tóm lại, nó sẽ chia tài nguyên trên PC của bạn thành một hoặc nhiều máy tính ảo khác. Chúng hoạt động gần như độc lập so với máy thật.

Để install cái này thì cũng khá đơn giản, bạn chỉ cần Download nó tại đây, install thì cứ next, next, và next thôi :))

Vagrant

Như đã nói bên trên thì VirtualBox sẽ giúp bạn chia VM, và bây giờ sẽ đến lượt Vagrant, nó là một công cụ giúp bạn config, quản lý các VM một cách hiệu quả hơn. Thật ra thì bạn bạn có thể tương tác trực tiếp với VM, có cái thông qua Vagrant sẽ tiện lợi hơn nhiều thôi.

Install nó thì cũng tương tự như VirtualBox, download nó thì click vào đây. Sau khi install xong, bạn sẽ cần restart lại máy. Cứ restart như thường, bật lên là xong thôi.

Laravel Homestead là gì?

Homestead là một vagrant box đã đóng gói sẵn vô số công cụ cần thiết, để tạo lên một môi trường phát triển hoàn hảo dành cho Laravel hoạt động. Nó đã có sẵn tất cả các thứ, từ web server, database, php,… Tóm lại, là một môi trường hoàn hảo để phát triển Laravel. Và đặc biệt, nó được tạo ra bở chính tác giả phát triển framework này, vậy nên bạn biết nó lợi hại thế nào rồi đấy :)).

Tại sao bạn nên lựa chọn Homestead?

Về cơ bản mình thấy trong quá trình cài đặt, Homestead sẽ khó cài hơn khi bạn sử dụng các chương trình khác một chút. Ví dụ như khi dùng XAMPP, bạn chẳng cần hiểu biết gì mấy, thì với homestead lại khác. Bạn cần biết một chút kiến thức về máy ảo (Virtual Machine), biết cài đặt VirtualBox, biết sơ qua về Vagrant. Hơn nữa, nó sẽ chiếm nhiều tài nghuyên PC của bạn hơn. Nghe có vẻ khá phức tạp nhỉ :))

Nhưng đổi lại với những khó khăn ban đầu đó, bạn sẽ được rất nhiều lợi ích trong việc học, sau này áp dụng cho công việc. Bạn sẽ được quản lý một cái Virtual Machine và nó giống Server thật đến 95%. Do đó, bạn sẽ có thể làm quen với server, học sử dụng bash shell, sử dụng dòng lệnh,… Nói tóm lại là rất giống thật, nên bạn sẽ gần như không bị bỡ ngỡ khi có cơ hội sử dụng server thật.

Clone Laravel từ Github

Để thuận tiện cho quá trình hướng dẫn, mình đã tạo một project trên Github, bạn chỉ việc clone project đó về và làm theo hướng dẫn trong bài này là được. Để clone project, thực hiện chạy câu lệnh

 $ git clone https://github.com/haminh7328/blog-laravel-dotrinh.com.git ~/lrv-dotrinh.com

Câu lệnh bên trên sẽ clone toàn bộ project trên Github về và đặt vào thư mục ~/learn-lrv. Bây giờ, bạn chỉ việc cd vào đây và làm theo hướng dẫn.

Hướng dẫn cài đặt Laravel Homestead

Download Homestead Box

Để quá trình setup máy ảo diễn ra thuận lợi, bạn nên download homestead box về trước, như vậy sau này, sẽ khi sử dụng, máy bạn sẽ không cần download về nữa. Để thực hiện download Homestead box, bạn chạy câu lệnh sau:

 $ vagrant box add laravel/homestead

Mất khoảng 1 tiếng để hoàn thành, tùy tốc độ mạng. Trong lúc chờ đợi, bạn có thể mở thêm một cửa sổ Git Bash nữa lên để đọc tiếp bài này. Đến đoạn vagrant up thì nhớ check lại xem nó đã download xong chưa trước khi chạy nhé ===)))

Install Homestead

Để install Homestead trên máy của bạn thì trước tiên bạn cần clone Homestead trên github về với câu lệnh

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

Tiếp theo bạn chỉ cần cd vào thư mục ~/Homestead mà bạn vừa clone về, và run file init là xong. Bạn có thể chạy lần lượt các câu lệnh sau:

$ cd ~/Homestead
$ git checkout release
$ bash init.sh

Rồi, sau khi chạy xong các câu lệnh trên mà máy của bạn không báo lỗi gì thì chúc mừng, bạn đã install thành công Homestead rồi đấy. Bây giờ tiến tới tìm hiểu những thông tin quan trọng để có thể setup một môi trường Laravel hoàn chỉnh nhé.

Hướng dẫn sử dụng Homestead cơ bản

Homestead của thằng Laravel cũng có khá nhiều cái hay ho để vọc. Nhưng trong phạm vi bài viết này, mình sẽ chỉ hướng dẫn cách sử dụng cơ bản. Còn đối với những phần khác thì, có thể nói ra đây sẽ khó hiểu, mà cũng chẳng có tác dụng gì. Nên nếu bạn muốn, có thể tham khảo tài liệu gốc tại đây. Giờ thì bắt đầu thôi.

Như đã nói ở phần trước thì sau khi chạy file init.sh, máy của bạn sẽ tự tạo một file có tên là Homestead.yaml. Bây giờ, hãy mở file đó lên và bạn sẽ có 4 phần chính cần quan tâm, đó là Provider, Shared Folders, Nginx Sites và Databases. Cùng mình khám phá từng phần một nhé

Setting Provider

Oke, nếu bạn không biết Provider là gì, thì cứ hiểu lôm na đơn giản nó là các dịch vụ hỗ trợ chia VirtualMachine như là VirtualBox, VMWare,… Và như đã nói ở phần trước, chúng ta sẽ thống nhất sử dụng VirtualBox. Còn bạn muốn dùng những cái khác thì tùy bạn. Nhưng mình sẽ không hỗ trợ được gì nếu gặp lỗi, vì mình chưa dùng những cái khác bao giờ cả :))).

 provider: virtualbox 

Share Folders

Như mình đã giới thiệu ở phần trước, chúng ta đang đi đến dựng một máy ảo có hệ điều hành, cấu trúc thư mục,… khác hoàn toàn với máy thật bạn đang sử dụng. Vậy câu hỏi đặt ra ở đây là làm sao để đặt đống code của bạn vào trong cái máy ảo đó??? Và làm cách nào để mỗi lần bạn sửa code, thì code trong cái máy ảo kia cũng sẽ thay đổi??? Đây là lúc chúng ta cần quan tâm đến phần Share Folders.

Về bản chất, bạn cứ hiểu Share Folders là bạn sẽ chia sẻ một, hoặc vài thư mục trong máy của bạn với máy ảo. Nghĩa là bạn muốn thư mục nào trong máy thật của bạn sẽ tồn tại trong máy ảo bạn đang dựng, thì hãy setup nó tại đây.

config share folders trong homestead
Config share folders trong homestead

Mình sẽ giải thích từng phần một trong ví dụ bên trên. Đầu tiên bạn hãy để ý phần “map”, đây là nơi bạn sẽ đặt đường dẫn đến thư mục code của bạn. Còn “to” chính là đường dẫn đến thư mục bạn muốn đặt code của bạn trong Virtual Machine.

Như ví dụ của mình, mình đang đồng bộ thư mục code “lrv-dotrinh.com” mà mình đã clone từ phần trước, thư mục này sẽ được map tới thư mục /home/vagrant/code/lrv-dotrinh.com trong VM

Nginx Sites

Nếu bạn chưa biết nginx là gì, thì mình xin trả lời ngắn gọn như sau. Nginx là một web server mã nguồn mở hoạt động trên nền tảng Linux. Ờ thì bạn cứ hiểu đơn giản là nó sẽ giúp máy tính của bạn hoạt động với vai trò là một web server, nơi mà bạn có thể lưu trữ source code của 1 hoặc nhiều website và nó sẽ giúp mọi người có thể truy cập vào website đó. Cụ thể hơn, trong trường hợp này, nginx sẽ giúp VM phục vụ như một web server để máy thật có thể truy cập vào web của bạn.

Config Nginx Sites
Config Nginx Sites

Ở đây mình sẽ setup mỗi lần bạn truy cập vào http://lrv-dotrinh.com thì máy của bạn sẽ kết nối đến VM thay vì một website nào đó trên internet. Bạn không nên đặt tên website trên này trùng với tên của bất cứ website thật nào. Vì sau khi “up” vagrant lên, bạn sẽ không thể truy cập được web thật cho đến khi bạn destroy VM đi, hoặc sửa file hosts trong máy thật của bạn. Cái này thì bạn Google “tác dụng của file hosts trên windows/Linux/MacOS” để tìm hiểu chi tiết nhé.

Nếu bạn muốn config thêm nhiều sites hơn, chỉ cần viết tiếp xuống bên dưới với cấu trúc tương tự như vậy là được.

Database (Cơ sở dữ liệu)

Nếu bạn thậm chí còn đang không biết database là gì thì mình xin giải thích là nó là nơi để bạn lưu dữ liệu trong website của bạn. Ví dụ những thông tin của người dùng khi đăng ký tài khoản, hay những đoạn tin nhắn chat với nhau, những bài post,… tất cả đều được lưu vào trong một nơi gọi là database.

Mỗi website thường có một database riêng. Trong một số trường hợp, 2 website có thể sử dụng chung một database, nhưng những trường hợp này thì ít gặp, nên mình cũng sẽ không nói sâu. Mình sẽ chỉ đề cập đến trường hợp thông dụng nhất, một database sẽ có tránh nhiệm lưu dữ liệu cho 1 website.

Và với database, bạn sẽ có các công cụ để quản lý database khác nhau, chúng được gọi là RDBMS (Relational Database Management System). Trong Homestead, mặc định bạn đã được cài sẵn Mysql và PostgreSQL làm RDBMS. Mặc định trong file config đã có sẵn một database là “homestead”. Nếu bạn cần tạo thêm db thì cứ viết thêm tương tự như vậy là được.

Tạo Database trong Homestead

Như ở trên mình đã ví dụ cho bạn cách thêm 2 database. Còn trong project của chúng ta, bạn chỉ cần sử dụng 1 db là đủ. Bạn có thể tạo một db mới như ví dụ, không thì sử dụng db mặc định của homestead cũng được.

Cách để sử dụng Homestead

Rồi, sau khi đã config tất cả những thông tin cần thiết, việc còn lại bây giờ là làm sao để bật cái VM này lên. Trong thư mục Homestead, bạn chỉ cần chạy lệnh vagrant up, và chờ cho máy của bạn tự thực hiện những thứ đã config. Vậy thôi :))

Lưu ý khi thay đổi Configuration

Trong trường hợp bạn đã “up” vagrant lên rồi, mà lại tiếp tục muốn thay đổi config. Thì sau khi thay đổi xong, bạn phải chạy câu lệnh vagrant reload –provision thì các thay đổi mới được cập nhật trong VM(Virtual Machine).

Các lệnh cần thiết để install Laravel

Install môi trường phát triển coi như xong, giờ chúng ta cần phải install những thứ cần thiết trong Laravel. “Những thứ cần thiết” ở đây chính là các packages cần thiết để Laravel có thể hoạt động, và generate key cho project của bạn. Bạn thực hiện các bước như sau:

Nếu bạn đang ở ngoài thì thực hiện cd đến thư mục chứa homestead(trong hướng dẫn của mình sẽ là ~/Homestead), nếu vẫn đang trong thư mục chứa homestead rồi thì thôi, bạn chạy câu lệnh

$ vagrant ssh

Sau khi ssh vào trong VM, tiếp tục cd đến thư mục dự án mà bạn đã setup bên trên (như hướng dẫn của mình sẽ là /home/vagrant/code/lrv-dotrinh.com)

$ cd /home/vagrant/code/lrv-dotrinh.com

Sau khi cd vào đây rồi, giờ chúng ta bắt đầu thực hiện install những package cần thiết trong Laravel. Bạn thực hiện chạy những lệnh sau:

$ cp .env.example .env //Thực hiện copy file env, file này sẽ chứa các biến môi trường bạn cần config trong Laravel
$ composer install //install những package cần thiết
$ php artisan key:generate //generate key cho project

Sau khi chạy xong 2 commands bên trên, bạn chỉ cần config kết nối đến database nữa là xong. Bây giờ hãy mở file .env vừa copy bằng lệnh ở bên trên lên, chú ý đến những phần như trong ảnh dưới giúp mình.

Config kết nối đến database trong Laravel

Mình sẽ giải thích từng chỗ một:

  • DB_CONNECTION – Tùy vào loại RDBMS bạn đang sử dụng. Ở đây chúng ta đang dùng mysql nên để nguyên như vậy.
  • DB_HOST – Server sử dụng lưu database, để như trên nghĩa là nó đang sử dụng chính server của nó chứ không connect tới một server bên ngoài (127.0.0.1 tương đương với localhost)
  • DB_PORT – Port để kết nối đến database. Ở đây, Laravel đang được chạy trong VM, nên bạn để port là 3306 như bình thường
  • DB_DATABASE – Tên DB bạn vừa mới tạo trong config ở phần trước
  • DB_USERNAME – Username để login vào DB (mặc định là homestead)
  • DB_PASSWORD – Mật khẩu cho username (mặc định là secret)

Rồi, sau khi đã điền đầy đủ thông tin BD thì save file lại rồi mở trình duyệt lên và truy cập http://lrv-dotrinh.com để tận hưởng thành quả nhé.

Thành quả sau khi config Laravel
Thành quả sau khi config Laravel

Vậy là trong bài này, mình đã hướng dẫn bạn setup môi trường phát triển dự án Laravel. Quy trình khá giống với quy trình deploy một project lên server thật (lên server thật sẽ khó hơn một chút ^^). Bài này dừng lại ở đây thôi, nếu bạn có câu hỏi hay nhận xét gì thì để lại bình luận ở phía bên dưới để mình có thể giúp đỡ hoặc nghe những ý kiến của bạn.

Các bài viết không xem thì tiếc:

《Chia sẻ kiến thức này là người hào sảng》

2 Comments

    • Hiện tại thì chưa, nhưng trong những bài sau sẽ có bạn nhé. Mình code đến đâu thì mình viết blog đến đó mà, bạn kiên nhẫn một chút nhé ^^

Thảo luận

This site uses Akismet to reduce spam. Learn how your comment data is processed.

 
 
Facetime iPhone

Main Menu