Học cách dựng môi trường bằng Laradock phần 1: Apache2 và MySql
3rd Aug 2022![Học cách dựng môi trường bằng Laradock phần 1: Apache2 và MySql](/sites/default/files/2022-08/laravel-3.png)
Hello everyone, hôm nay mình xin hướng dẫn các bạn dựng một môi trường phát triên Laravel với Apache2 và MySql bằng Laradock. Để sử dụng Laradock các bạn cần cài đặt docker và docker-compose, cách cài đặt có thể tham khảo tại đây.
Đầu tiên, các bạn nên có một project Laravel, nếu chưa có thì có thể clone project laravel mẫu tại đường dẫn https://github.com/laravel/laravel. Đây là cấu trúc thư mục của project laravel mẫu mà mình clone về.
git clone https://github.com/laravel/laravel.git laravel_example
Tiếp theo là vào project laravel_example clone laradock tại https://github.com/Laradock/laradock
cd laravel_example git clone https://github.com/Laradock/laradock.git
![Laravel](/sites/default/files/inline-images/laravel-4.png)
Bước tiếp theo, di chuyển đến thư mục laradock, copy file env-example để tạo file .env cho laradock.
![Laravel](/sites/default/files/inline-images/laravel-5.png)
Vậy là xong bước cơ bản để cài đặt laradock rồi.
Các biến môi trường cơ bản của Laradock
Để thiết đặt các môi trường sử dụng trong laradock các bạn vào file .env được tạo ở phía trên. Để tiện sử dụng các container của các laradock trong các project khác mình thường setting các biến môi trường sau:
# Choose storage path on your machine. For all storage systems DATA_PATH_HOST=~/.laradock/data_laravel_example
Đây là biến môi trường chỉ ra vị trí lưu trữ cơ sở dữ liệu của project trên máy thật của bạn để map với cơ sở dữ liệu trong laradock.
# Define the prefix of container names. This is useful if you have multiple projects that use laradock to have seperate containers per project. COMPOSE_PROJECT_NAME=laradock_laravel_example
Biến môi trường này dùng để phân biệt các laradock khác nhau của các project khác nhau. Ví dụ, bạn có 2 project mà cùng muốn dựng laradock lên trong một lúc, khi đó bạn cần có tên để phân biệt laradock này của project nào, biến môi trường COMPOSE_PROJECT_NAME có tác dụng như vậy.
Tiếp theo là biến môi trường để setting version của PHP sử dụng trong project:
### PHP Version ########################################### # Select a PHP version of the Workspace and PHP-FPM containers (Does not apply to HHVM). Accepted values: 7.3 - 7.2 - 7.1 - 7.0 - 5.6 PHP_VERSION=7.3
Dựng môi trường sử dụng Apache2 và MySql
Trong ví dụ đầu tiên, mình sẽ dựng một server sử dụng Apache2 và MySql version 8.0.
### APACHE ################################################ APACHE_HOST_HTTP_PORT=80 APACHE_HOST_HTTPS_PORT=443 APACHE_HOST_LOG_PATH=./logs/apache2 APACHE_SITES_PATH=./apache2/sites APACHE_PHP_UPSTREAM_CONTAINER=php-fpm APACHE_PHP_UPSTREAM_PORT=9000 APACHE_PHP_UPSTREAM_TIMEOUT=60 APACHE_DOCUMENT_ROOT=/var/www/public
Đây là biến môi trường của apache2, ở đây mình chỉ lưu ý đến các biến môi trường sau:
- APACHE_HOST_HTTP_PORT: dùng để setting cổng cho protocol HTTP của apache (mặc định để là 80)
- APACHE_HOST__HTTPS_PORT: dùng để setting cổng cho protocol HTTPS của apache (mặc định để là 443)
- APACHE_DOCUMENT_ROOT: dùng để setting thư mục gốc của project (thư mục gốc của một project laravel luôn là /var/www/public)
Các biến môi trường của MYSQL như sau:
### MYSQL ################################################# MYSQL_VERSION=8.0 MYSQL_DATABASE=default MYSQL_USER=default MYSQL_PASSWORD=secret MYSQL_PORT=3306 MYSQL_ROOT_PASSWORD=root MYSQL_ENTRYPOINT_INITDB=./mysql/docker-entrypoint-initdb.d
Như ở ví dụ, mình sẽ sử dụng mysql version 8.0, rồi tạo một database có tên là my_database, tạo user linh có password là password có quyền truy cập đến database my_database này. Một điểm lưu ý nữa là mình có thể setting mật khẩu cho user root, điều này có rất nhiều hữu ích cho sau này.
Sau khi setting xong như vậy, các bạn chạy command:
docker-compose build apache2 mysql
![Laravel](/sites/default/files/inline-images/laravel-6.png)
Khi đó docker sẽ build các image apache2 và mysql, tại đây tiến trình có thể kéo dài mất khoảng 30 phút hoặc lâu hơn, nên các bạn chờ nhé
Sau khi hoàn thành bước build, chạy command để dựng môi trường lên:
docker-compose up -d apache2 mysql
![Laravel](/sites/default/files/inline-images/laravel-7.png)
![Laravel](/sites/default/files/inline-images/laravel-8.png)
Sau khi dựng được các services apache2 và mysql như hình trên, các bạn tiến hành install compose của Laravel theo cách sau đây:
Sử dụng command sau để vào workspace của apache2:
docker-compose exec workspace bash hoặc docker-compose exec -ularadock workspace bash
- Khi sử dụng lệnh với option -ularadock thì khi thao tác với file trong workspace (ví dụ: tạo file, copy file) các bạn sẽ không cần phải phân quyền để có thể edit đươc file như khi sử dụng lệnh thứ nhất.
- Tuy nhiên, khi install composer lại cần đến quyền root, do đó nếu muốn thao tác với composer bắt buộc phải sử dụng lệnh thứ nhất hoặc option
![Laravel](/sites/default/files/inline-images/laravel-9.png)
Rồi sau đó tiến hành install composer:
composer install
![Laravel](/sites/default/files/inline-images/laravel-10.png)
OK, gõ lệnh xong thì đi đâu đó chơi đi ạ, bởi vì việc install composer có thể mất đến 10-15 phút. Sau khi đi chơi về các bạn gõ tiếp lệnh.
cp .env.example .env
![Laravel](/sites/default/files/inline-images/laravel-11.png)
Chạy tạm cái lệnh:
php artisan key:generate
Rồi sau đó vào file .env của laravel và setting kết nối đến MySql. Các bạn chỉ cần tập trung đến các tham số sau:
DB_CONNECTION=mysql DB_HOST=mysql DB_PORT=3306 DB_DATABASE=default DB_USERNAME=root DB_PASSWORD=root
Trong đó có DB_HOST thì mình luôn để là mysql vì đó là tên service mysql của laradock. Tiếp theo là DB_DATABASE là tên database các bạn setup trong file .env của laradock (trong trường hợp này là default). User để kết nối đến database mình để là root/root cho dễ nhớ :D.
Rồi xong, giờ thử chạy migrate, nếu chạy thành công thì OK xong xuôi.
![Laravel](/sites/default/files/inline-images/laravel-12.png)
Còn không thì bạn quá đen, xin mời tìm hiểu các lỗi khi chạy migrate của laravel.
Sau đó thì tận hưởng thành quả thui
![Laravel](/sites/default/files/inline-images/laravel-13.png)
Ở bài viết tiếp theo mình sẽ trình bày về Cách cài đặt môi trường Laravel sử dụng Nginx và MongoDB, các bạn hãy đón đọc nhé.
- 1064 views
Add new comment