Php8 mongodb

MongoDB là hệ thống quản trị CSDL NoSQL phổ biến nhất trên thế giới. Tuy nhiên, mặc định Laravel PHP Framework lại không hỗ trợ MongoDB. Vì vậy trong hướng dẫn này, VinaSupport. com sẽ hướng dẫn các bạn cài đặt và tích hợp MongoDB vào dự án Laravel

II. Cài đặt và sử dụng

1. MongoDB là gì?

MongoDB là hệ thống quản trị CSDL NoSQL (Document Database), nơi bạn có thể thực hiện các truy vấn (query), có khả năng mở rộng, mềm dẻo và đặc biệt là miễn phí

  • Phát triển bể MongoDB Inc
  • play the first time. 02/11/2009
  • Phiên bản mới nhất. 4. 0. 31/10/052019
  • Kho. github. com/mongodb/mongo
  • Ngôn ngữ lập trình. C++, Go, JavaScript, Python
  • Hệ điều hành hỗ trợ. Windows Vista trở lên, Linux, OS X 10. 7 trở lên, Solaris, FreeBSD
  • Trang web www. mongodb. com

2. Cài đặt MongoDB trên Ubuntu

Để cài đặt MongoDB cần 1 máy chủ đã cài đặt sẵn HDH Ubuntu (Ubuntu Desktop hoặc Ubuntu Server), các bạn có thể cài đặt trên local hoặc sử dụng dịch vụ Vultr Cloud VPS mà mình đang sử dụng

Các bước cài đặt được thực hiện bằng lệnh như sau

Bước 1. Nhập “Khóa GPG công khai MongoDB” bằng cách sử dụng lệnh apt-key

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4

Bước 2. Add repo of MongoDB

Với Ubuntu 16. 04 LTS

echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/4.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.0.list

Với Ubuntu 18. 04 LTS

echo "deb [ arch=amd64 ] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.0.list

To know version Ubuntu you are used is what, or run command. lsb_release -dc

Bước 3. Cập nhật lại các gói

sudo apt-get update

Bước 4. Cài đặt MongoDB

Cài đặt bản mới nhất

sudo apt-get install -y mongodb-org

Cài đặt 1 phiên bản bất kỳ

sudo apt-get install -y mongodb-org=4.0.10 mongodb-org-server=4.0.10 mongodb-org-shell=4.0.10 mongodb-org-mongos=4.0.10 mongodb-org-tools=4.0.10

Bước 5. Khởi động MongoDB

sudo service mongod start

Kiểm tra MongoDB đã được cài đặt thành công chưa?

sudo service mongod status

3. Kết nối và quản lý MongoDB với Robo 3T

Robo 3T (trước đây là Robomongo) là một phần mềm MongoDB Client GUI chạy trên cả Windows, Linux và MacOS, các bạn có thể tải miễn phí tại đây

Sau khi cài đặt xong, mở Robo 3T lên và tạo 1 kết nối

Trường hợp tạo kết nối trên localhost thì mặc định không phải làm gì cả, Địa chỉ các bạn là localhost. Còn trường hợp kết nối từ xa (remote connect) thì phải sửa file /etc/mongod. conf as bên dưới để liên kết tới địa chỉ IP là 0. 0. 0. 0

Php8 mongodb

III. Cài đặt MongoDB PHP Extension

Để cài đặt mongodb Extension cho PHP, chúng ta sử dụng lệnh sau

________số 8_______

Sau đó thêm dòng sau vào file php. ini và khởi động lại httpd

extension=mongodb.so

Cài đặt gói jenssegers/mongodb cho Laravel Đâu là thư viện giúp Laravel có thể thao tác với MongoDB. Cài đặt thông qua Composer

Như các bạn đã biết Laravel-Sail không hỗ trợ Support Mongodb, hôm nay mình sẽ hướng dẫn các bạn cách thêm Service Mongodb vào Laravel-Sail và cài đặt các thành phần cần thiết để Laravel có thể kết nối được với Service

Khởi tạo dữ liệu với Laravel Sail

Tên dự án hệ thống chúng ta sẽ là "laravel-sail-mongodb" và tiến trình cài đặt theo lệnh sau

curl -s "https://laravel.build/laravel-sail-mongodb" | bash

Php8 mongodb

Truy cập project project và khởi động Docker

cd laravel-sail-mongodb
./vendor/bin/sail up -d

Php8 mongodb

Add new Service Mongodb

Trước khi có thể điều chỉnh thêm dịch vụ mongodb chúng ta cần public sail bằng cách thực thi lệnh sau

./vendor/bin/sail artisan sail:publish

Php8 mongodb

  • Lưu ý. trước khi thực hiện chỉnh sửa tệp docker-compose. yml bạn cần phải down docker-composer để không gây ra lỗi sau khi điều chỉnh và bắt đầu lại
./vendor/bin/sail down

Tiếp tục mở tệp docker-compose. yml sau khi thấy nó được sao chép ra ngoài thư mục gốc và thêm dịch vụ mongodb

# For more information: https://laravel.com/docs/sail
version: '3'
services:
    laravel.test:
        build:
            context: ./docker/8.0
            dockerfile: Dockerfile
            args:
                WWWGROUP: '${WWWGROUP}'
        image: sail-8.0/app
        ports:
            - '${APP_PORT:-80}:80'
        environment:
            WWWUSER: '${WWWUSER}'
            LARAVEL_SAIL: 1
            XDEBUG_MODE: '${SAIL_XDEBUG_MODE:-off}'
            XDEBUG_CONFIG: '${SAIL_XDEBUG_CONFIG:-client_host=host.docker.internal}'
        volumes:
            - '.:/var/www/html'
        networks:
            - sail
        depends_on:
            - mongo
    mongo:
        image: 'mongo:5.0'
        restart: always
        ports:
            - '${DB_PORT:-27017}:27017'
        environment:
            MONGO_INITDB_ROOT_USERNAME: '${DB_USERNAME}'
            MONGO_INITDB_ROOT_PASSWORD: '${DB_PASSWORD}'
            MONGO_INITDB_DATABASE: '${DB_DATABASE}'
        volumes:
            - 'sailmongo:/data/db/sail'
        networks:
            - sail
networks:
    sail:
        driver: bridge
volumes:
    sailmongo:
        driver: local

Đến bước này, coi như bạn đã cài đặt Docker thành công một dịch vụ mongodb mới

Cập nhật thành phần cần thiết để PHP có thể tương tác với Mongodb

Trong file docker/8. 0/Dockerfile chúng ****ta cần thêm các thành phần để giúp PHP có thể kết nối được với Mongodb

Củ thể ở đây, chúng ta sẽ cài đặt thêm php8. 0-mongodb trên Ubuntu

php8.0-mongodb

Add to after php8. 0-redis as the bottom

Php8 mongodb

Tiền hành động xây dựng lại Dịch vụ này để được cập nhật

./vendor/bin/sail build

Php8 mongodb

Kiểm tra kết quả Docker

Sau khi bạn thực hiện các bước ở trên, hãy xem các bước cập nhật docker và các thành phần cần thiết để đảm bảo rằng PHP có thể kết nối được với mongodb đã hoàn tất

Chạy lệnh để khởi động lại tất cả dịch vụ

./vendor/bin/sail up -d

Php8 mongodb

Như vậy chúng ta đã thấy trong dự án này có 2 dịch vụ bao gồm ( Web và mongodb )

Điều chỉnh cài đặt Laravel đích kết nối với thiết lập Service Mongodb ở trên

Trong tệp. env điều chỉnh lại thông tin như bên dưới

DB_CONNECTION=mongodb#Thành phần này sẽ được định nghĩa trong config
DB_HOST=mongo#Tên này là tên service khi chúng ta điều chỉnh docker-compose
DB_PORT=27017#Lưu ý là vì bên trong các docker gọi cho nhau nên port sẽ là 27017
DB_DATABASE=laravel_sail_mongodb
DB_USERNAME=sail
DB_PASSWORD=password

Php8 mongodb

Trong file config/database. php add config dành cho kết nối mongodb

'mongodb' => [
            'driver' => 'mongodb',
            'host' => env('DB_HOST'),
            'port' => env('DB_PORT'),
            'database' => env('DB_DATABASE'),
            'username' => env('DB_USERNAME'),
            'password' => env('DB_PASSWORD'),
            'options' => [
                'database' => env('DB_AUTHENTICATION_DATABASE', 'admin'),
            ],
        ],

Php8 mongodb

Cài đặt gói hỗ trợ Mongodb

cd laravel-sail-mongodb
./vendor/bin/sail up -d
0

Php8 mongodb

Sau khi cài đặt Gói hoàn tất quá trình chạy di chuyển

cd laravel-sail-mongodb
./vendor/bin/sail up -d
1

Php8 mongodb

Nếu kết quả giống như hình trên, thì mọi thứ cài đặt của chúng ta đã hoạt động

Từ giờ Mã của các bạn có thể hoạt động với Mongodb

Nội dung bài viết cũng hơi dài, mình xin kết thúc tại đây xem như chung ta đã hoàn thành vấn đề cài đặt để đảm bảo hoạt động giữa Laravel & Mongodb