Phần mở rộng docker-php xml
Với nền tảng tương đối lớn như Magento, việc cài đặt để nó chạy thôi cũng khá mất công, vì kiến trúc của nó yêu cầu khá nhiều thành phần, cấu hình liên quan. Vì vậy, với một nhóm phát triển thì việc sử dụng docker trong trường hợp này có thể nói khá là "sự lựa chọn hoàn hảo", kiểu như "cài đặt bằng một cú nhấp chuột" vậy. D Chỉ mất thời gian config docker lúc ban đầu, sau đó mọi người trong team hay kể cả thành viên mới sau này có thể dễ dàng xây dựng môi trường phát triển cũng như đảm bảo môi trường dev giữa các thành viên không quá khác biệt, Show Trong bài viết này, chúng ta sẽ tìm hiểu về công việc config docker lúc ban đầu nó như thế nào. D Nhận mã nguồn Magento 2Có 2 cách để lấy mã nguồn của Magento 2, ở đây là phiên bản Magento Commerce đó là
Sau khi lấy được mã nguồn, việc đầu tiên nên làm đó là thêm luôn vào git để quản lý và theo dõi các thay đổi 0Vì trong source code lấy về đã có sẵn file 8 nên bạn không cần phải lo git add both these filesYêu cầu hệ thốngVề hệ điều hành, tất nhiên đó là Linux (không giới hạn các bản phân phối như RedHat Enterprise Linux (RHEL), CentOS, Ubuntu, Debian,. ) và theo tài liệu của Magento là họ không chắc việc chạy Magento trên các hệ điều hành Windows hay MacOS. Hệ điều hành nên được cài đặt sẵn các công cụ 2Về bộ nhớ RAM, Magento khuyên dùng đó là > 2GB, sở dĩ nó cần nhiều bộ nhớ như vậy chủ yếu là do quá trình nâng cấp Magento hay các extension, còn riêng về giới hạn bộ nhớ PHP chỉ cần < 1GB là đủ để chạy website rồi. Máy chủ web có thể là Apache hoặc Nginx. Magento khuyên bạn nên sử dụng Nginx và PHP-FPM để đạt được hiệu quả tốt hơn, vì thế ở đây chúng ta cũng sẽ sử dụng Nginx Cơ sở dữ liệu sẽ là MySQL 5. 7 PHP phiên bản 7. 2 hoặc 7. 3 (khuyến nghị) và các tiện ích mở rộng 3PHP OPcache nên được bật và các cài đặt PHP
5Magento 2 sử dụng nhiều đến cookie, do đó ở môi trường dev cũng nên sử dụng tên miền để hỗ trợ cookie tốt hơn so với localhost hay 127. 0. 0. 1. Ngoài ra HTTPS còn là yêu cầu thiết yếu khi đi vào hoạt động, do đó chúng ta cũng thiết lập HTTPS cho môi trường dev luôn Mail server cũng cần thiết khi dev, ở đây chúng ta sẽ sử dụng Mailhog để tạo SMTP server dev Redis cũng khuyến nghị sử dụng bộ nhớ đệm trang và phiên, để đảm bảo khả năng mở rộng quy mô hoặc sử dụng cân bằng tải, khuyến nghị Redis 5. 0 Tương tự Varnish cũng không thể thiếu khi đi vào hoạt động, do đó chúng ta cũng thiết lập để chạy Varnish 6. 2 Xây dựng môi trường dockerVề cơ bản chúng ta xây dựng các docker container như sau Sử dụng 41, mỗi vùng chứa được mô tả bằng một 42
PHP FPMFirst is container for PHP-FPM. Do yêu cầu cần nhiều tiện ích mở rộng nên image sẽ không có sẵn nên chúng ta sẽ tạo image mới bằng Dockerfile. Hình ảnh nổi bật thường được sử dụng cho PHP-FPM đó là 43. Trong quá trình tạo Dockerfile, chúng ta có thể sử dụng hình ảnh để tạo vùng chứa và chạy thử lệnh trực tiếp cài đặt trực tiếp 4Ngoài việc cài đặt các tiện ích mở rộng PHP, chúng tôi sẽ cài đặt thêm một số công cụ vì đây là vùng chứa thường được sử dụng để tương tác với Magento thông qua lệnh 44 như 45, 46, 47 để chạy Magento cron hoặc 2 (cần thêm 49) 7Chú thích các gói
Sau khi cài đặt xong các gói trong hệ thống, chúng ta xóa bộ nhớ cache của 02 để giảm kích thước của hình ảnhMột người dùng mới là 03 được tạo trong hệ thống, người dùng này là người dùng để họ thực hiện lệnh 44 Giả sử quyền của tệp đảm bảo không bị xung đột giữa người dùng máy chủ web 05 và người dùng cli 03, bằng cách thêm người dùng 03 vào nhóm 08, sau đó . Chi tiết, bạn có thể tham khảo thêm https. //devdocs. magento. com/hướng dẫn/v2. 3/install-gde/prereq/file-system-perms. html#perms-riêng tư
Sau đó là tạo tệp 22 mặc định từ tệp ví dụ 23 và thêm một số cài đặt khác bằng tệp 24 0Mặc định, container chạy ở cổng 9000, do các container khác đó, cụ thể là nginx có thể kết nối vào địa chỉ. 25Ta has docker-compose service first 1NginxTiếp theo là bộ chứa cho máy chủ web Nginx, có nhiệm vụ giao tiếp với PHP-FPM và trả về phản hồi cho máy khách. Với dịch vụ này, để tận dụng khả năng sử dụng lại image có sẵn và giảm bớt công việc phải build image, nếu chúng ta không cần sử dụng Dockerfile tùy chỉnh, ở đây chỉ cần sử dụng image 26 và thực hiện mount file config 2Tệp 27 chỉ rút gọn như thế này vì Magento đã cung cấp sẵn 1 tệp mẫu 3Lưu ý đến đường dẫn 28. Và trong tệp 29 có một đoạn đặt tài liệu gốc 4mysqlTương tự, chúng ta cũng có thể sử dụng image 30 trực tiếp và tạo user, db qua init SQL file mà không cần custom image 5Tập tin khởi tạo SQL. tạo người dùng cơ sở dữ liệu và sử dụng cơ sở dữ liệu cho Magento 6Bạn có thể xuất bản cổng 31 để kết nối với MySQL tại máy chủ (bằng MySQL Workbench, Phpmyadmin,. ) hoặc sử dụng container adminer 7File 24 mình setting tăng giới hạn upload file để import cơ sở dữ liệu, cũng không cần thiết 8Giao diện web quản lý tại địa chỉ chị http. //máy chủ cục bộ. 8088 Nếu là lần cài đặt Magento đầu tiên, chúng ta cần chạy lệnh để cài đặt Magento, còn không thì chỉ cần nhập lại cơ sở dữ liệu cũ, giả sử lược đồ cơ sở dữ liệu không bị thay đổi (do Magento có nhiều chức năng cập nhật qua giao diện web Lệnh cài đặt cho lần đầu tiên 9URL. http. //máy chủ cục bộ. 8011 chính là url của trang web, do hiện tại chưa có Varnish hay custom domain nên nó là Nginx, vậy nên cần phải publish port 8011 cho Nginx sau đó để có thể truy cập được trang web từ máy chủ Địa chỉ trang quản trị. http. //máy chủ cục bộ. 8011/admin_mn Sau khi chạy lệnh trên Magento sẽ tạo ra 2 tệp cấu hình 33 và 34. Theo như docs, file 35 không được thêm vào git, còn 36 thì nên thêm. Do not add on git, we based on file 35 to create file example chung cho docker môi trường. 38làm lạiDocker config for redis cũng khá đơn giản 0Redis được sử dụng để lưu phiên và bộ đệm mặc định (cũng có thể lưu cả bộ đệm toàn trang - FPC). Sau khi chạy redis dịch vụ, cần cập nhật lại tệp 35 để cấu hình sử dụng redis 1Lưu ý, mỗi loại cache, session thì sẽ có cơ sở dữ liệu khác nhau, cơ sở dữ liệu 0 cho cache mặc định, cơ sở dữ liệu 1 cho FPC và cơ sở dữ liệu 2 cho redis. Cấu hình 40 để tham khảo vì chúng ta sẽ sử dụng Varnish nên cấu hình này sẽ bị loại bỏTruy cập trang quản trị xuất tệp cấu hình của Varnish để tiếp tục thiết lập bộ đệm Varnish Hoặc có thể sử dụng lệnh để xuất 2Sơn dầuĐể lấy file config Varnish mặc định của Magento, chúng ta vào trang quản trị. http. //máy chủ cục bộ. 8011/admin_mn và đến trang cấu hình theo menu. 41 => 42 => 43 => 44 => 45Docker soạn dịch vụ 3Vì đã cấu hình bằng Varnish nên máy chủ nginx giờ đây không cần xuất bản cổng 8011 nữa mà sẽ để Varnish cache làm nhiệm vụ này Lưu ý trong tệp xuất 46 có đoạn 4Chú ý url để kiểm tra sức khỏe là 47 chứ không phải 48 do ở phần setting nginx trước, document root đang là 49Máy chủ thưMail server có nhiệm vụ bắt tất cả email được gửi trong môi trường dev, để đảm bảo không gửi nhầm email đến địa chỉ thật. Ở đây chúng ta sử dụng 50, nó cung cấp máy chủ SMTP để gửi thư và một giao diện web ui để đọc các email đã gửi 5Cần phải cài đặt thêm tiện ích mở rộng để Magento có thể sử dụng máy chủ SMTP, phần này tùy thuộc vào khách hàng nên bạn có thể tự tìm mô-đun SMTP của Magento Hộp thư ui ở địa chỉ. http. //máy chủ cục bộ. 8022 Như vậy là chúng ta đã thiết lập xong các container image. Total results we are add on the following file 6Sau khi cài đặt xong phần thiết lập ban đầu, các thành viên khác trong nhóm chỉ cần kéo mã về và sao chép tệp cấu hình 7Docker soạn và sau đó nhập cơ sở dữ liệu Miền tùy chỉnh và HTTPSVề custom domain cho dịch vụ trong Docker có nhiều cách, nhưng hôm nay mình giới thiệu cho các bạn một cách đơn giản nhất đó là sử dụng Nginx hoặc Apache ở máy chủ để tạo reverse proxy đến địa chỉ 51Luat active like this
Về HTTPS, chúng ta sử dụng công cụ 52 để tạo chứng chỉ SSL hợp lệ cho localhost 8Lệnh trên tạo tập tin ra 2. 53 và 54 đã sẵn sàng để sử dụng cho Apache hoặc NginxCommand and config bên dưới dùng cho Ubuntu, nếu bạn dùng distro khác thì chú ý nhé Với Apache, việc đầu tiên là kích hoạt mô-đun proxy http 9Sau đó thêm virtualhost, có thể thiết lập chỉ HTTPS hoặc cả 2 00khởi động lại apache 01Với Nginx 02Khởi động lại nginx 03Tiếp theo là tên miền được thêm vào 55 04Bước cuối cùng là cập nhật url cơ sở magento, từ http. //máy chủ cục bộ. 8011 sang https. // magento2. kiểm tra 05Because is done. Hẹn gặp lại các bạn trong các bài tiếp theo của sê-ri. Đ. Trên đây là công việc mình config docker lúc ban đầu, bạn nào muốn dùng luôn thì xem hướng dẫn ở Github nhé. https. //github. com/tuanpht/magento2-docker |