Thứ sáu, 11/01/2019 | 00:00 GMT+7

Cách thiết lập thủ công server Prisma trên Ubuntu 18.04

Prisma là lớp dữ liệu thay thế các công cụ lập bản đồ quan hệ đối tượng (ORM) truyền thống trong ứng dụng của bạn. Cung cấp hỗ trợ cho cả việc xây dựng server GraphQL cũng như API REST, Prisma đơn giản hóa việc truy cập database với trọng tâm là an toàn kiểu và cho phép di chuyển database khai báo . An toàn kiểu giúp giảm thiểu lỗi mã tiềm ẩn và sự không nhất quán, trong khi di chuyển database khai báo cho phép bạn lưu trữ mô hình dữ liệu của bạn trong kiểm soát version . Các tính năng này giúp các nhà phát triển giảm bớt thời gian tập trung vào việc cài đặt quy trình truy cập database , di chuyển và quản lý dữ liệu.

Bạn có thể triển khai server Prisma, hoạt động như một proxy cho database của bạn, theo một số cách và lưu trữ nó từ xa hoặc local . Thông qua dịch vụ Prisma, bạn có thể truy cập dữ liệu và kết nối với database của bạn bằng API GraphQL, cho phép các hoạt động thời gian thực và khả năng tạo, cập nhật và xóa dữ liệu. GraphQL là một ngôn ngữ truy vấn cho các API cho phép user gửi các truy vấn để truy cập vào dữ liệu chính xác mà họ yêu cầu từ server của họ. Server Prisma là một thành phần độc lập nằm trên database của bạn.

Trong hướng dẫn này, bạn sẽ cài đặt thủ công server Prisma trên Ubuntu 18.04 và chạy một truy vấn GraphQL thử nghiệm trong GraphQL Playground . Bạn sẽ lưu trữ mã cài đặt và phát triển Prisma tại local - nơi bạn thực sự sẽ xây dựng ứng dụng của bạn - trong khi chạy Prisma trên server từ xa của bạn. Bằng cách chạy qua cài đặt theo cách thủ công, bạn sẽ hiểu sâu hơn và khả năng tùy chỉnh của cơ sở hạ tầng cơ bản trong cài đặt của bạn.

Trong khi hướng dẫn này bao gồm các bước thủ công để triển khai Prisma trên server Ubuntu 18.04, bạn cũng có thể thực hiện việc này theo cách tự động hơn với Docker Machine theo hướng dẫn này trên trang của Prisma.

Lưu ý : Cài đặt được mô tả trong phần này không bao gồm các tính năng mà bạn thường mong đợi từ các server sẵn sàng production , chẳng hạn như backup tự động và chuyển đổi dự phòng đang hoạt động.

Yêu cầu

Để hoàn thành hướng dẫn này, bạn cần :

Bước 1 - Khởi động Server Prisma

Prisma CLI là công cụ chính được sử dụng để triển khai và quản lý các dịch vụ Prisma của bạn. Để khởi động các dịch vụ, bạn cần cài đặt cơ sở hạ tầng cần thiết, bao gồm server Prisma và database để nó kết nối.

Docker Compose cho phép bạn quản lý và chạy các ứng dụng đa containers . Bạn sẽ sử dụng nó để cài đặt cơ sở hạ tầng cần thiết cho dịch vụ Prisma.

Bạn sẽ bắt đầu bằng cách tạo file docker-compose.yml để lưu trữ cấu hình dịch vụ Prisma trên server của bạn.Bạn sẽ sử dụng file này để tự động tạo Prisma, một database được liên kết và cấu hình các chi tiết cần thiết, tất cả chỉ trong một bước. Khi file được tạo ra bằng Docker Compose, nó sẽ cấu hình password cho database của bạn, vì vậy hãy đảm bảo thay thế password cho managementAPIsecret MYSQL_ROOT_PASSWORDMYSQL_ROOT_PASSWORD bằng một thứ gì đó an toàn. Chạy lệnh sau để tạo và chỉnh sửa file docker-compose.yml :

  • sudo nano docker-compose.yml

Thêm nội dung sau vào file để xác định các dịch vụ và dung lượng cho cài đặt Prisma:

docker-compos.yml
version: "3" services:   prisma:     image: prismagraphql/prisma:1.20     restart: always     ports:       - "4466:4466"     environment:       PRISMA_CONFIG: |         port: 4466         managementApiSecret: my-secret         databases:           default:             connector: mysql             host: mysql             port: 3306             user: root             password: prisma             migrations: true   mysql:     image: mysql:5.7     restart: always     environment:       MYSQL_ROOT_PASSWORD: prisma     volumes:       - mysql:/var/lib/mysql volumes:   mysql: 

Cấu hình này thực hiện như sau:

  • Nó chạy hai dịch vụ: prisma-dbdb .
  • Nó kéo version mới nhất của Prisma. Theo cách viết này, đó là Prisma 1.20.
  • Nó cài đặt các cổng mà Prisma sẽ có sẵn và chỉ định tất cả các thông tin đăng nhập để kết nối với database MySQL trong phần databases .

Tệp docker-compose.yml cài đặt managementApiSecret , ngăn người khác truy cập vào dữ liệu với kiến thức về điểm cuối của bạn. Nếu bạn đang sử dụng hướng dẫn này cho bất kỳ điều gì ngoài việc triển khai thử nghiệm, bạn nên thay đổi managementAPIsecret thành một thứ gì đó an toàn hơn. Khi bạn làm, hãy chắc chắn để ghi nhớ nó để bạn có thể nhập nó sau này trong prisma init quá trình.

Tệp này cũng kéo hình ảnh MySQL Docker và cài đặt các thông tin đăng nhập đó. Theo mục đích của hướng dẫn này, file Docker Compose này sẽ quay một hình ảnh MySQL, nhưng bạn cũng có thể sử dụng PostgreSQL với Prisma. Cả hai Docker image đều có sẵn trên trung tâm Docker:

Lưu và thoát khỏi file .

Đến đây bạn đã lưu tất cả các chi tiết, bạn có thể khởi động các containers Docker. Lệnh -d yêu cầu các containers chạy ở chế độ tách rời, nghĩa là chúng sẽ chạy trong nền:

  • sudo docker-compose up -d

Thao tác này sẽ tìm nạp các Docker image cho cả prismamysql . Bạn có thể xác minh các containers Docker đang chạy bằng lệnh sau:

  • sudo docker ps

Bạn sẽ thấy một kết quả giống như sau:

CONTAINER ID        IMAGE                       COMMAND                  CREATED             STATUS              PORTS                    NAMES 24f4dd6222b1        prismagraphql/prisma:1.12   "/bin/sh -c /app/sta…"   15 seconds ago      Up 1 second         0.0.0.0:4466->4466/tcp   root_prisma_1 d8cc3a393a9f        mysql:5.7                   "docker-entrypoint.s…"   15 seconds ago      Up 13 seconds       3306/tcp                 root_mysql_1 

Với server Prisma và database của bạn được cài đặt , bây giờ bạn đã sẵn sàng làm việc local để triển khai dịch vụ Prisma.

Bước 2 - Cài đặt Prisma local

Server Prisma cung cấp môi trường thời gian chạy cho các dịch vụ Prisma của bạn. Đến đây bạn đã khởi động server Prisma, bạn có thể triển khai dịch vụ Prisma của bạn . Bạn sẽ chạy các bước này local , không phải trên server của bạn.

Để bắt đầu, hãy tạo một folder riêng để chứa tất cả các file Prisma:

  • mkdir prisma

Sau đó chuyển vào folder đó:

  • cd prisma

Bạn có thể cài đặt Prisma bằng Homebrew nếu đang sử dụng MacOS. Để thực hiện việc này, hãy chạy lệnh sau để thêm kho Prisma:

  • brew tap prisma/prisma

Sau đó, bạn có thể cài đặt Prisma bằng lệnh sau:

  • brew install prisma

Hoặc thay thế, với npm :

  • npm install -g prisma

Với Prisma được cài đặt local , bạn đã sẵn sàng khởi động dịch vụ Prisma mới.

Bước 3 - Tạo cấu hình cho một dịch vụ Prisma mới

Sau khi cài đặt, bạn có thể sử dụng Prisma prisma init để tạo cấu trúc file cho API database Prisma mới, tạo các file cần thiết để xây dựng ứng dụng của bạn với Prisma. Điểm cuối của bạn sẽ tự động nằm trong file prisma.ymldatamodel.prisma sẽ chứa một mô hình dữ liệu mẫu mà bạn có thể truy vấn trong bước tiếp theo. Mô hình dữ liệu đóng role là cơ sở cho API Prisma của bạn và chỉ định mô hình cho ứng dụng của bạn. Đến đây, bạn chỉ đang tạo các file và mô hình dữ liệu mẫu. Bạn sẽ không thực hiện bất kỳ thay đổi nào đối với database cho đến khi bạn chạy prisma deploy sau trong bước này.

Đến đây bạn có thể chạy local lệnh sau để tạo cấu trúc file mới:

  • prisma init hello-world

Sau khi chạy lệnh này, bạn sẽ thấy một dấu nhắc tương tác. Khi được hỏi, hãy chọn, Use other server và nhấn ENTER :

Output
Set up a new Prisma server or deploy to an existing server? You can set up Prisma for local development (based on docker-compose) Use existing database Connect to existing database Create new database Set up a local database using Docker Or deploy to an existing Prisma server: Demo server Hosted demo environment incl. database (requires login) ❯ Use other server Manually provide endpoint of a running Prisma server

Sau đó, bạn sẽ cung cấp điểm cuối của server đang hoạt động như server Prisma. Nó sẽ giống như sau: http:// SERVER_IP_ADDRESS :4466 . Điều quan trọng là điểm cuối bắt đầu bằng http (hoặc https) và có số cổng được chỉ định.

Output
Enter the endpoint of your Prisma server http://SERVER_IP_ADDRESS:4466

Đối với bí mật về API quản lý, hãy nhập cụm từ hoặc password mà bạn đã chỉ ra trước đó trong file cấu hình:

Output
Enter the management API secret my-secret

Đối với các tùy chọn tiếp theo, bạn có thể chọn các biến mặc định bằng cách nhấn ENTER cho service name service stageservice stage :

Output
Choose a name for your service hello-world Choose a name for your stage dev

Bạn cũng sẽ được lựa chọn ngôn ngữ lập trình cho client Prisma. Trong trường hợp này, bạn có thể chọn ngôn ngữ ưa thích của bạn . Bạn có thể đọc thêm về khách hàng tại đây .

Output
Select the programming language for the generated Prisma client (Use arrow keys) ❯ Prisma TypeScript Client Prisma Flow Client Prisma JavaScript Client Prisma Go Client Don't generate

Sau khi hoàn thành dấu nhắc , bạn sẽ thấy kết quả sau xác nhận các lựa chọn bạn đã thực hiện:

Output
Created 3 new files: prisma.yml Prisma service definition datamodel.prisma GraphQL SDL-based datamodel (foundation for database) .env Env file including PRISMA_API_MANAGEMENT_SECRET Next steps: 1. Open folder: cd hello-world 2. Deploy your Prisma service: prisma deploy 3. Read more about deploying services: http://bit.ly/prisma-deploy-services

Di chuyển vào folder hello-world :

  • cd hello-world

Đồng bộ hóa những thay đổi này với server của bạn với prisma deploy . Thao tác này sẽ gửi thông tin đến server Prisma từ máy local của bạn và tạo dịch vụ Prisma trên server Prisma:

  • prisma deploy

Lưu ý : Chạy lại prisma deploy Prisma sẽ cập nhật dịch vụ Prisma của bạn.

Đầu ra của bạn sẽ giống như sau:

Output
Creating stage dev for service hello-world ✔ Deploying service `hello-world` to stage 'dev' to server 'default' 468ms Changes: User (Type) + Created type `User` + Created field `id` of type `GraphQLID!` + Created field `name` of type `String!` + Created field `updatedAt` of type `DateTime!` + Created field `createdAt` of type `DateTime!` Applying changes 716ms Your Prisma GraphQL database endpoint is live: HTTP: http://SERVER_IP_ADDRESS:4466/hello-world/dev WS: ws://SERVER_IP_ADDRESS:4466/hello-world/dev

Kết quả kết quả cho thấy Prisma đã cập nhật database của bạn theo mô hình dữ liệu (được tạo trong bước prisma init ) với kiểu User . Các loại là một phần thiết yếu của mô hình dữ liệu; chúng đại diện cho một mục từ ứng dụng của bạn và mỗi loại chứa nhiều trường. Đối với mô hình dữ liệu , các trường liên quan mô tả user là: ID của user , tên, thời gian họ được tạo và thời gian họ được cập nhật.

Nếu bạn gặp sự cố ở giai đoạn này và nhận được kết quả khác, hãy kiểm tra kỹ xem bạn đã nhập đúng tất cả các trường trong dấu nhắc tương tác hay chưa. Bạn có thể thực hiện bằng cách xem lại nội dung của file prisma.yml .

Khi dịch vụ Prisma của bạn đang chạy, bạn có thể kết nối với hai điểm cuối khác nhau:

  • Giao diện quản lý, có tại http:// SERVER_IP_ADDRESS :4466/management , nơi bạn có thể quản lý và triển khai các dịch vụ Prisma.

  • API GraphQL cho dịch vụ Prisma của bạn, có tại http:// SERVER_IP_ADDRESS :4466/ hello-world / dev .

Khám phá API GraphQL _ Dự án của bạn_

Bạn đã cài đặt và triển khai thành công server Prisma của bạn . Đến đây bạn có thể khám phá các truy vấn và đột biến trong GraphQL.

Bước 4 - Chạy một truy vấn mẫu

Để khám phá một trường hợp sử dụng Prisma khác, bạn có thể thử nghiệm với công cụ sân chơi GraphQL , là một môi trường phát triển tích hợp GraphQL (IDE) open-souce trên server của bạn. Để truy cập nó, hãy truy cập điểm cuối trong trình duyệt của bạn từ bước trước:

http://SERVER_IP_ADDRESS:4466/hello-world/dev 

Đột biến là một thuật ngữ GraphQL mô tả cách sửa đổi - tạo, cập nhật hoặc xóa (CRUD) - dữ liệu trong phần backend thông qua GraphQL. Bạn có thể gửi đột biến để tạo user mới và khám phá chức năng. Để thực hiện việc này, hãy chạy đột biến sau ở phía bên trái của trang:

mutation {   createUser(data: { name: "Alice" }) {     id     name   } } 

Sau khi nhấn nút phát, bạn sẽ thấy kết quả ở phía bên tay phải của trang.
Sân chơi GraphQL Tạo  user  mới

Sau đó, nếu bạn muốn tra cứu user bằng cách sử dụng cột ID trong database , bạn có thể chạy truy vấn sau:

query {   user(where: { id: "cjkar2d62000k0847xuh4g70o" }) {     id     name   } } 

Đến đây bạn có một server Prisma và dịch vụ đang chạy trên server của bạn , đồng thời bạn đã chạy các truy vấn thử nghiệm trong IDE của GraphQL.

Kết luận

Bạn có một cài đặt Prisma đang hoạt động trên server của bạn . Bạn có thể xem thêm một số trường hợp sử dụng Prisma và các bước tiếp theo trong Hướng dẫn Bắt đầu hoặc khám phá bộ tính năng của Prisma trong Tài liệu Prisma . Khi bạn đã hoàn thành tất cả các bước trong hướng dẫn này, bạn có một số tùy chọn để xác minh kết nối của bạn với database , một khả năng là sử dụng Prisma Client .


Tags:

Các tin liên quan

Kết xuất phía server với Angular Universal
2019-01-10
Cách cài đặt và cấu hình pgAdmin 4 ở Chế độ server
2018-10-19
Cách cài đặt Linux, Apache, MySQL, PHP (LAMP) trên Debian 8
2018-10-18
Cách cài đặt Linux, Nginx, MySQL, PHP ( LEMP) trên Debian 9
2018-09-13
Cách cài đặt, chạy và kết nối với Jupyter Notebook trên server từ xa
2018-09-12
Cách cài đặt và cấu hình Postfix làm server SMTP chỉ gửi trên Debian 9
2018-09-07
Cách cấu hình BIND làm server DNS Mạng Riêng trên Debian 9
2018-09-06
Thiết lập server ban đầu với Debian 9
2018-09-04
Cách cài đặt Linux, Apache, MariaDB, PHP (LAMP) trên Debian 9
2018-09-04
Cách phát triển ứng dụng Node.js TCP Server bằng PM2 và Nginx trên Ubuntu 16.04
2018-07-23