Theo thông lệ, phần mềm Quản lý quan hệ khách hàng (CRM) được tạo ra để các doanh nghiệp quản lý khách hàng của họ. Phần mềm CRM giúp các doanh nghiệp thu thập dữ liệu từ khách hàng và cung cấp hỗ trợ thông qua nhiều phương tiện truyền thông khác nhau.
Tuy nhiên, Monica Personal CRM hướng đến các cá nhân và mối quan hệ của họ với gia đình và bạn bè. Monica CRM giúp sắp xếp và lưu trữ mọi thứ liên quan đến những người xung quanh bạn. Đây là phần mềm mã nguồn mở và hoàn toàn miễn phí sử dụng.
Trong hướng dẫn này, bạn sẽ học cách cài đặt Monica Personal CRM trên máy chủ Rocky Linux 9.
[*]
Một số gói thiết yếu là cần thiết để chạy hướng dẫn và Monica CRM. Một số trong số này sẽ có trên máy chủ của bạn.
Tường lửa hoạt động với nhiều vùng khác nhau và vùng công cộng là vùng mặc định mà chúng ta sẽ sử dụng. Liệt kê tất cả các dịch vụ và cổng đang hoạt động trên tường lửa.
Nó sẽ hiển thị đầu ra sau.
Cho phép HTTP và HTTPS cổng.
Kiểm tra lại trạng thái của tường lửa.
Bạn sẽ thấy một đầu ra.
Tải lại tường lửa để kích hoạt các thay đổi.
Kiểm tra Git phiên bản.
Chạy các lệnh sau để cấu hình Git để thêm tên và địa chỉ email của bạn vào đó.
Cài đặt gói Nodesource RPM. Phiên bản Node LTS hiện tại là 20.x nhưng nó không hoạt động với trình quản lý gói Yarn do đó chúng tôi đã đặt nó thành 18.x cho đến bây giờ.
Cài đặt Node.js.
Xác nhận xem nó đã được cài đặt chưa đúng cách.
Cập nhật NPM.
Xác minh NPM version.
Cài đặt Yarn bằng lệnh sau.
Xác minh cài đặt Yarn.
Tạo và mở tệp
Dán mã sau vào nó.
Sau khi hoàn tất, hãy lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.
Cài đặt Nginx.
Xác minh cài đặt.
Bật và khởi động dịch vụ máy chủ Nginx.
Kiểm tra dịch vụ trạng thái.
Mở địa chỉ IP của máy chủ trong trình duyệt web của bạn. Bạn sẽ thấy trang sau, điều đó có nghĩa là máy chủ của bạn đã hoạt động.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22574%22%20height=%22268%22%3E%3C/svg%3E
Bước đầu tiên là lấy kho lưu trữ Epel.
Tiếp theo, cài đặt kho lưu trữ Remi.
Kiểm tra PHP khả dụng luồng.
Phiên bản mặc định là 8.1. Bật kho lưu trữ PHP 8.2 của Remi.
Cài đặt PHP và các tiện ích mở rộng của nó.
Kiểm tra phiên bản PHP đã cài đặt.
Kích hoạt và khởi động dịch vụ PHP-FPM.
Kiểm tra trạng thái của dịch vụ.
Tải xuống tập lệnh cài đặt Composer.
Xác minh trình cài đặt đã tải xuống.
Bạn sẽ nhận được kết quả sau.
Chạy tập lệnh cài đặt để tải xuống phiên bản mới nhất của Composer.
Xóa tập lệnh cài đặt.
Di chuyển tệp nhị phân đã tải xuống đến
Xác nhận cài đặt.
Theo mặc định, Rocky Linux 9 đi kèm với MariaDB 10.5.22, phiên bản này hơi lỗi thời. Để có phiên bản ổn định mới nhất của MariaDB, bạn cần sử dụng kho lưu trữ chính thức.
Tạo tệp kho lưu trữ của MariaDB và mở tệp đó để chỉnh sửa.
Dán mã sau vào đó.
Sau khi hoàn tất, hãy lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.
Phát hành lệnh sau để cài đặt máy chủ MariaDB. Lưu ý cách tên gói được viết hoa. Gói MariaDB chính thức mà Rocky Linux cung cấp có tên đơn giản là
Kiểm tra xem MariaDB đã được cài đặt đúng chưa.
Bạn sẽ thấy thông báo sau đầu ra.
Bạn cũng có thể sử dụng
Khởi động và kích hoạt MariaDB dịch vụ.
Dịch vụ MariaDB đã được bật và đang chạy. Kiểm tra trạng thái của nó bằng lệnh sau.
Chạy lệnh sau để thực hiện cấu hình mặc định như cung cấp mật khẩu gốc, xóa người dùng ẩn danh, không cho phép đăng nhập gốc từ xa và xóa các bảng thử nghiệm.
Bạn sẽ được yêu cầu nhập mật khẩu gốc. Vì chúng ta không thiết lập bất kỳ mật khẩu gốc nào, hãy nhấn phím Enter để tiếp tục.
Tiếp theo, bạn sẽ được hỏi xem bạn có muốn chuyển sang plugin
Tiếp theo, bạn sẽ được hỏi xem bạn có muốn thay đổi mật khẩu root của mình không. Trên Rocky Linux 9, tài khoản root cho MariaDB được liên kết chặt chẽ với bảo trì hệ thống tự động, vì vậy bạn không nên thay đổi các phương thức xác thực được cấu hình cho tài khoản. Làm như vậy sẽ cho phép bản cập nhật gói phá vỡ hệ thống cơ sở dữ liệu bằng cách xóa quyền truy cập vào tài khoản quản trị. Nhập
Từ đây trở đi, nhấn
Vậy là xong. Lần tới khi bạn muốn đăng nhập vào shell MariaDB, hãy sử dụng lệnh sau.
Nhập mật khẩu gốc Linux của bạn khi được nhắc.
Nhấn
Tạo cơ sở dữ liệu MySQL mới, người dùng cơ sở dữ liệu và mật khẩu cho Monica CRM của bạn cài đặt.
Thay thế
Ngoài ra, hãy tạo một người dùng quản trị có cùng chức năng với tài khoản root.
Xóa các đặc quyền để đảm bảo rằng chúng được lưu trong phiên hiện tại.
Thoát khỏi MariaDB shell.
Đặt người dùng hiện đang đăng nhập làm chủ sở hữu của thư mục.
Chuyển đến thư mục.
Sao chép kho lưu trữ Monica Github chính thức tại vị trí này. Lưu ý dấu chấm (
Lấy dữ liệu mới nhất từ GitHub.
Kiểm tra phiên bản mới nhất của Monica. Để chọn phiên bản mới nhất, hãy kiểm tra trang phát hành Monica. Tại thời điểm viết hướng dẫn này, phiên bản mới nhất hiện có là 4.0.0. Thay thế 4.0.0 bằng phiên bản bạn đang cài đặt trong lệnh bên dưới.
Bạn sẽ nhận được kết quả sau.
Sao chép tệp biến môi trường mẫu để tạo một tệp nhằm cấu hình Monica CRM.
Thay đổi các giá trị sau như được hiển thị. Đặt biến
Sau khi hoàn tất, hãy lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.
Cài đặt tất cả các gói cần thiết cho Monica bằng Composer.
Sử dụng Yarn để cài đặt các gói giao diện người dùng và xây dựng các tài sản (JS, CSS và phông chữ).
Tạo giá trị
Phát hành lệnh sau để chạy di chuyển, gieo hạt giống cơ sở dữ liệu và tạo thư mục liên kết tượng trưng. Bạn sẽ được nhắc bằng câu hỏi có hoặc không về việc có nên tiếp tục hay không. Nhập có để tiếp tục. Nhập địa chỉ email và mật khẩu cần thiết để tạo người dùng mặc định và sử dụng các giá trị đó trong lệnh.
Bạn sẽ nhận được thông báo sau về quá trình cài đặt thành công.
Cài đặt Snapd.
Bật và khởi động dịch vụ Snap.
Cài đặt gói lõi Snap và đảm bảo rằng phiên bản Snapd của bạn là ngày.
Tạo các liên kết cần thiết để Snapd hoạt động.
Cài đặt Certbot.
Sử dụng lệnh sau để đảm bảo lệnh Certbot có thể chạy bằng cách tạo liên kết tượng trưng đến thư mục
Xác minh xem Certbot có hoạt động không chính xác.
Chạy lệnh sau để tạo Chứng chỉ SSL.
Lệnh trên sẽ tải xuống chứng chỉ vào
Tạo chứng chỉ nhóm Diffie-Hellman.
Kiểm tra trình lập lịch gia hạn Certbot dịch vụ.
Bạn sẽ thấy
Thực hiện chạy thử quy trình để kiểm tra xem quá trình gia hạn SSL có hoạt động tốt không.
Nếu không thấy lỗi nào, bạn đã hoàn tất. Chứng chỉ của bạn sẽ tự động gia hạn.
Áp dụng chính sách.
Áp dụng chính sách để cho phép Nginx cấp quyền truy cập vào MariaDB.
Áp dụng chính sách để cho phép kết nối đến các máy chủ bên ngoài. Điều này là cần thiết để gửi email.
Với MariaDB 10.11, bạn sẽ gặp phải một vấn đề khác là SELinux ngăn PHP-FPM kết nối với MariaDB. Vấn đề này có thể được giải quyết bằng cách cài đặt mô-đun SELinux. Bước đầu tiên là tạo tệp
Tạo tệp
Dán mã sau vào đó.
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.
Bước tiếp theo là chuyển đổi tệp thành mô-đun chính sách bằng lệnh sau. Đừng sửa đổi tên tệp trong lệnh nếu không, nó sẽ không hoạt động. Mô-đun được đặt tên là
Tiếp theo, chúng ta cần biên dịch mô-đun chính sách để tạo chính sách gói.
Bước cuối cùng là tải gói chính sách bằng lệnh
Để thiết lập kích thước tải tệp lên, hãy thay đổi giá trị của
Cấu hình giới hạn bộ nhớ của PHP tùy thuộc vào tài nguyên và yêu cầu của máy chủ của bạn.
Mở tệp
Chúng ta cần đặt người dùng/nhóm Unix của các tiến trình PHP thành nginx. Tìm các dòng
Tìm
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.
Khởi động lại quy trình PHP-fpm. Hãy đảm bảo bạn đã cài đặt Nginx trước khi khởi động lại dịch vụ PHP, nếu không, dịch vụ sẽ không thành công vì không thể tìm thấy nhóm
Thay đổi nhóm thư mục phiên PHP thành Nginx.
Đặt quyền thư mục chính xác trên
Mở tệp
Thêm dòng sau vào trước dòng
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.
Tạo và mở tệp
Dán mã sau vào đó. Thay thế
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.
Xác minh cấu hình Nginx của bạn.
Khởi động lại máy chủ Nginx.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22613%22%20height=%22551%22%3E%3C/svg%3E
Nhập email và mật khẩu bạn đã cấu hình ở bước 12 và nhấn nút Đăng nhập để tiếp tục. Bạn sẽ được đưa đến màn hình chào mừng, nơi bạn có thể bắt đầu sử dụng ứng dụng.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22531%22%3E%3C/svg%3E
Chạy trình chỉnh sửa crontab. Chúng tôi đang truyền
Tiếp theo, bạn sẽ được đưa đến trình soạn thảo crontab. Dán dòng này vào cuối tệp.
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc. Vậy là xong. Các tác vụ theo lịch trình của Monica sẽ được chạy thường xuyên bằng chức năng cron.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22578%22%3E%3C/svg%3E
Nhấp vào nút Xuất sang SQL để xuất cơ sở dữ liệu. Cũng có tùy chọn Xuất sang Json sao lưu nhiều dữ liệu hơn là chỉ SQL nhưng không có cách nào để nhập dữ liệu đó. Bạn có thể sẽ thấy trạng thái là không thành công cho cả hai lần xuất nhưng nếu bạn duyệt thư mục
Bây giờ chúng ta đã sao lưu dữ liệu, đã đến lúc cập nhật.
Chuyển sang Monica thư mục.
Vì quyền của thư mục được đặt thành
Lấy Git mới nhất thay đổi.
Sao chép phiên bản mong muốn. Đối với hướng dẫn của chúng tôi, chúng tôi đang đề cập đến phiên bản beta. Không sử dụng nó trên máy chủ sản xuất.
Cập nhật các phần phụ thuộc.
Cài đặt giao diện người dùng gói.
Xây dựng các tài sản JavaScript và CSS.
Chạy lệnh sau để cập nhật phiên bản. Thao tác này sẽ chạy các tập lệnh di chuyển cho cơ sở dữ liệu và xóa tất cả bộ đệm cho cấu hình, tuyến đường và chế độ xem như một quy trình tối ưu hóa.
Nếu bạn muốn khôi phục cơ sở dữ liệu SQL sang một phiên bản Monica khác, hãy đảm bảo phiên bản của bạn hoàn toàn trống, nghĩa là không có bảng và không có dữ liệu. Sau khi bạn đã đảm bảo điều đó, hãy chạy lệnh sau để bắt đầu quá trình di chuyển cơ sở dữ liệu.
Tiếp theo, nhập tệp
Bạn sẽ được nhắc nhập mật khẩu DB người dùng Monica đã cấu hình trước đó. Tiếp theo, hãy đăng nhập vào phiên bản bằng thông tin đăng nhập được sử dụng trên phiên bản cũ hơn.
Sau khi hoàn tất, hãy khôi phục quyền thư mục Monica cho người dùng
Tuy nhiên, Monica Personal CRM hướng đến các cá nhân và mối quan hệ của họ với gia đình và bạn bè. Monica CRM giúp sắp xếp và lưu trữ mọi thứ liên quan đến những người xung quanh bạn. Đây là phần mềm mã nguồn mở và hoàn toàn miễn phí sử dụng.
Trong hướng dẫn này, bạn sẽ học cách cài đặt Monica Personal CRM trên máy chủ Rocky Linux 9.
Điều kiện tiên quyết
-
Máy chủ chạy Rocky Linux 9 với RAM tối thiểu 1,5 GB. Nếu máy chủ của bạn có RAM nhỏ hơn 1,5 GB, thì tác vụ cài đặt Yarn rất có thể sẽ không thành công. Nâng cấp lên máy chủ có RAM tốt hơn trước khi tiến hành hướng dẫn này để đảm bảo cài đặt diễn ra suôn sẻ.
-
Người dùng không phải root có quyền sudo.
-
Tên miền đủ điều kiện (FQDN) nhưmonica.example.com
trỏ đến máy chủ của bạn.
-
Tài khoản SMTP có dịch vụ email như Amazon SES hoặc Mailgun.
-
Mọi thứ đều đã cập nhật.
Mã:
$ sudo dnf update
Một số gói thiết yếu là cần thiết để chạy hướng dẫn và Monica CRM. Một số trong số này sẽ có trên máy chủ của bạn.
Mã:
$ sudo dnf install wget curl nano unzip yum-utils policycoreutils-python-utils -y
Bước 1 - Cấu hình Tường lửa
Bước đầu tiên là cấu hình tường lửa. Rocky Linux sử dụng Tường lửa Firewalld. Kiểm tra trạng thái của tường lửa.
Mã:
$ sudo firewall-cmd --state
running
Mã:
$ sudo firewall-cmd --permanent --list-services
Mã:
cockpit dhcpv6-client ssh
Mã:
$ sudo firewall-cmd --permanent --add-service=http
$ sudo firewall-cmd --permanent --add-service=https
Mã:
$ sudo firewall-cmd --permanent --list-services
Mã:
cockpit dhcpv6-client http https ssh
Mã:
$ sudo firewall-cmd --reload
Bước 2 - Cài đặt Git
Git thường được cài đặt sẵn với Rocky Linux 9 nhưng trong trường hợp chưa được cài đặt, hãy chạy lệnh sau để cài đặt.
Mã:
$ sudo dnf install git -y
Mã:
$ git --version
git version 2.39.3
Mã:
$ git config --global user.name "Your Name"
$ git config --global user.email "[emailprotected]"
Bước 3 - Cài đặt Node
Monica CRM cần Node.js để làm việc.
Mã:
$ curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | sudo gpg --dearmor -o /usr/share/keyrings/nodesource.gpg
Mã:
$ NODE_MAJOR=18
$ sudo yum install https://rpm.nodesource.com/pub_$NODE_MAJOR.x/nodistro/repo/nodesource-release-nodistro-1.noarch.rpm -y
Mã:
$ sudo yum install nodejs -y --setopt=nodesource-nodejs.module_hotfixes=1
Mã:
$ node --version
v18.18.2
Mã:
$ sudo npm install -g npm@latest
Mã:
$ npm --version
10.2.4
Bước 4 - Cài đặt Yarn
Yarn là một trình quản lý gói Javascript khác mà Monica CRM cần cùng với Node.js. Phương pháp cài đặt Yarn thông thường là cài đặt toàn cục. Điều này đảm bảo tất cả các công cụ kiểm tra và tự động hóa trong một dự án đều sử dụng cùng một phiên bản Yarn, ngăn ngừa sự không nhất quán.Cài đặt Yarn bằng lệnh sau.
Mã:
$ sudo npm install --global yarn
Mã:
$ yarn --version
1.22.21
Bước 5 - Cài đặt Nginx
Rocky Linux 9 đi kèm với phiên bản Nginx cũ hơn. Để cài đặt phiên bản mới nhất, bạn cần tải xuống kho lưu trữ Nginx chính thức.Tạo và mở tệp
/etc/yum.repos.d/nginx.repo
để chỉnh sửa.
Mã:
$ sudo nano /etc/yum.repos.d/nginx.repo
Mã:
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
Cài đặt Nginx.
Mã:
$ sudo dnf install nginx -y
Mã:
$ nginx -v
nginx version: nginx/1.24.0
Mã:
$ sudo systemctl enable nginx --now
Mã:
$ sudo systemctl status nginx
? nginx.service - nginx - high performance web server Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; preset: disabled) Active: active (running) since Thu 2023-11-23 01:10:33 UTC; 1s ago Docs: http://nginx.org/en/docs/ Process: 4560 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exited, status=0/SUCCESS) Main PID: 4561 (nginx) Tasks: 2 (limit: 10841) Memory: 1.9M CPU: 11ms CGroup: /system.slice/nginx.service ??4561 "nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf" ??4562 "nginx: worker process"
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22574%22%20height=%22268%22%3E%3C/svg%3E
Bước 6 - Cài đặt PHP và tiện ích mở rộng
Rocky Linux 9 được cài đặt sẵn PHP 8.1 theo mặc định. Để luôn sử dụng phiên bản PHP mới nhất hoặc nếu bạn muốn cài đặt nhiều phiên bản PHP, chúng ta cần sử dụng kho lưu trữ REMI.Bước đầu tiên là lấy kho lưu trữ Epel.
Mã:
$ sudo dnf install epel-release -y
Mã:
$ sudo dnf install https://rpms.remirepo.net/enterprise/remi-release-9.rpm
Mã:
$ dnf module list php -y
Name Stream Profiles Summary
php 8.1 common [d], devel, minimal PHP scripting language
Remi's Modular repository for Enterprise Linux 9 - x86_64
Name Stream Profiles Summary
php remi-7.4 common [d], devel, minimal PHP scripting language
php remi-8.0 common [d], devel, minimal PHP scripting language
php remi-8.1 common [d], devel, minimal PHP scripting language
php remi-8.2 common [d], devel, minimal PHP scripting language
php remi-8.3 common [d], devel, minimal PHP scripting language
Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled
Mã:
$ sudo dnf module reset php -y
$ sudo dnf module enable php:remi-8.2
Mã:
$ sudo dnf install php php-bcmath php-cli php-curl php-common \ php-fpm php-gd php-gmp php-intl php-mbstring \ php-mysql php-opcache php-redis php-xml php-zip -y
Mã:
$ php --version
PHP 8.2.13 (cli) (built: Nov 21 2023 09:55:59) (NTS gcc x86_64)
Copyright (c) The PHP Group
Zend Engine v4.2.13, Copyright (c) Zend Technologies with Zend OPcache v8.2.13, Copyright (c), by Zend Technologies
Mã:
$ sudo systemctl enable php-fpm --now
Mã:
$ sudo systemctl status php-fpm
? php-fpm.service - The PHP FastCGI Process Manager Loaded: loaded (/usr/lib/systemd/system/php-fpm.service; enabled; preset: disabled) Active: active (running) since Thu 2023-11-23 01:21:11 UTC; 1s ago Main PID: 5643 (php-fpm) Status: "Ready to handle connections" Tasks: 6 (limit: 10841) Memory: 15.7M CPU: 85ms CGroup: /system.slice/php-fpm.service ??5643 "php-fpm: master process (/etc/php-fpm.conf)" ??5644 "php-fpm: pool www" ??5645 "php-fpm: pool www" ??5646 "php-fpm: pool www" ??5647 "php-fpm: pool www" ??5648 "php-fpm: pool www"
Bước 7 - Cài đặt Composer
Composer hoạt động như một trình quản lý phụ thuộc cho PHP. Đây cũng là trình quản lý phụ thuộc của khung Laravel PHP, là nền tảng hỗ trợ Monica CRM.Tải xuống tập lệnh cài đặt Composer.
Mã:
$ php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
Mã:
$ php -r "if (hash_file('sha384', 'composer-setup.php') === 'e21205b207c3ff031906575712edab6f13eb0b361f2085f1f1237b7126d785e826a450292b6cfd1d64d92e6563bbde02') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
Mã:
Installer verified
Mã:
$ php composer-setup.php
Mã:
$ php -r "unlink('composer-setup.php');"
/usr/local/bin
thư mục.
Mã:
$ sudo mv composer.phar /usr/local/bin/composer
Mã:
$ composer --version
Composer version 2.6.5 2023-10-06 10:11:52
Bước 8 - Cài đặt MariaDB
MariaDB là chương trình thay thế MySQL, có nghĩa là các lệnh để chạy và vận hành MariaDB giống như các lệnh dành cho MySQL.Theo mặc định, Rocky Linux 9 đi kèm với MariaDB 10.5.22, phiên bản này hơi lỗi thời. Để có phiên bản ổn định mới nhất của MariaDB, bạn cần sử dụng kho lưu trữ chính thức.
Tạo tệp kho lưu trữ của MariaDB và mở tệp đó để chỉnh sửa.
Mã:
$ sudo nano /etc/yum.repos.d/mariadb.repo
Mã:
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.11/rhel9-amd64
module_hotfixes=1
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
Phát hành lệnh sau để cài đặt máy chủ MariaDB. Lưu ý cách tên gói được viết hoa. Gói MariaDB chính thức mà Rocky Linux cung cấp có tên đơn giản là
mariadb-server
. Hãy đảm bảo bạn không nhầm lẫn hai cái này.
Mã:
$ sudo dnf install MariaDB-server -y
Mã:
$ mysql --version
Mã:
mysql Ver 15.1 Distrib 10.11.6-MariaDB, for Linux (x86_64) using EditLine wrapper
mariadb --version
để kiểm tra phiên bản.Khởi động và kích hoạt MariaDB dịch vụ.
Mã:
$ sudo systemctl enable --now mariadb
Mã:
$ sudo systemctl status mariadb
? mariadb.service - MariaDB 10.11.6 database server Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; preset: disabled) Drop-In: /etc/systemd/system/mariadb.service.d ??migrated-from-my.cnf-settings.conf Active: active (running) since Thu 2023-11-23 01:23:52 UTC; 2s ago Docs: man:mariadbd(8) https://mariadb.com/kb/en/library/systemd/ Process: 6831 ExecStartPre=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION (code=exited, status=0/SUCCESS) Process: 6832 ExecStartPre=/bin/sh -c [ ! -e /usr/bin/galera_recovery ] && VAR= || VAR=`cd /usr/bin/..; /usr/bin/galera_recovery`; [ $? -eq 0 ] && systemctl set-environment _WSREP_START_POSITION=$VAR > Process: 6850 ExecStartPost=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION (code=exited, status=0/SUCCESS) Main PID: 6840 (mariadbd) Status: "Taking your SQL requests now..." Tasks: 10 (limit: 10841) Memory: 193.1M CPU: 162ms CGroup: /system.slice/mariadb.service ??6840 /usr/sbin/mariadbd
Mã:
$ sudo mariadb-secure-installation
Mã:
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!
In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
haven't set the root password yet, you should just press enter here.
Enter current password for root (enter for none): [PRESS ENTER]
OK, successfully used password, moving on...
unix_socket
hay không. Plugin unix_socket
cho phép bạn đăng nhập vào MariaDB bằng thông tin người dùng Linux của mình. Chọn n
để bỏ qua việc chuyển sang tài khoản này vì bạn đã có tài khoản được bảo vệ root
.
Mã:
Setting the root password or using the unix_socket ensures that nobody
can log into the MariaDB root user without the proper authorisation.
You already have your root account protected, so you can safely answer 'n'.
Switch to unix_socket authentication [Y/n] n ... skipping.
n
để tiếp tục.
Mã:
You already have your root account protected, so you can safely answer 'n'.
Change the root password? [Y/n] n ... skipping.
y
rồi Enter
để chấp nhận các giá trị mặc định cho tất cả các câu hỏi sau. Thao tác này sẽ xóa quyền truy cập của người dùng ẩn danh, kiểm tra cơ sở dữ liệu, vô hiệu hóa đăng nhập root từ xa và tải các thay đổi.
Mã:
By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them. This is intended only for testing, and to make the installation
go a bit smoother. You should remove them before moving into a
production environment.
Remove anonymous users? [Y/n] y ... Success!
Normally, root should only be allowed to connect from 'localhost'. This
ensures that someone cannot guess at the root password from the network.
Disallow root login remotely? [Y/n] y ... Success!
By default, MariaDB comes with a database named 'test' that anyone can
access. This is also intended only for testing, and should be removed
before moving into a production environment.
Remove test database and access to it? [Y/n] y - Dropping test database... ... Success! - Removing privileges on test database... ... Success!
Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.
Reload privilege tables now? [Y/n] y ... Success!
Cleaning up...
All done! If you've completed all of the above steps, your MariaDB
installation should now be secure.
Thanks for using MariaDB!
Mã:
$ sudo mysql
Mã:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 9
Server version: 10.11.6-MariaDB MariaDB Server
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]>
exit
để đóng shell MariaDB.Bước 9 - Cấu hình MariaDB
Đăng nhập vào shell MariaDB.
Mã:
$ sudo mysql
Mã:
MariaDB> CREATE DATABASE monica CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
MariaDB> CREATE USER 'monicauser'@'localhost' IDENTIFIED BY 'yourpassword';
MariaDB> GRANT ALL PRIVILEGES ON monica.* TO 'monicauser'@'localhost';
monica
, monicauser
và yourpassword
bằng thông tin đăng nhập bạn chọn. Chọn một mật khẩu mạnh.Ngoài ra, hãy tạo một người dùng quản trị có cùng chức năng với tài khoản root.
Mã:
MariaDB> GRANT ALL ON *.* TO 'admin'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;
Mã:
MariaDB> FLUSH PRIVILEGES;
Mã:
MariaDB> exit
Bước 10 - Tải xuống Monica
Tạo thư mục gốc web cho Monica CRM.
Mã:
$ sudo mkdir /var/www/html/monica -p
Mã:
$ sudo chown -R $USER:$USER /var/www/html/monica
Mã:
$ cd /var/www/html/monica
.
) ở cuối lệnh có nghĩa là sao chép Monica vào thư mục hiện tại thay vì một thư mục con.
Mã:
$ git clone https://github.com/monicahq/monica.git .
Mã:
$ git fetch
Mã:
$ git checkout tags/v4.0.0
Mã:
Note: switching to 'tags/v4.0.0'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example: git switch -c
Or undo this operation with: git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at e1a3e1315 build: delete heroku workflow (#6540)
Bước 11 - Cài đặt Monica
Đảm bảo bạn đang ở trong thư mục gốc để Monica.
Mã:
$ cd /var/www/html/monica
Mã:
$ cp .env.example .env
APP_ENV
thành production
. Điều này sẽ thực thi giao thức HTTPS. Đặt biến APP_URL
thành tên miền Monica của bạn cùng với giao thức HTTPS. Đặt thông tin xác thực cơ sở dữ liệu như đã tạo ở bước trước. Trong hướng dẫn của chúng tôi, chúng tôi đang sử dụng dịch vụ SES SMTP của Amazon. Nhập thông tin chi tiết cho dịch vụ bạn sẽ sử dụng. Nếu bạn không sử dụng bất kỳ mục nào, bạn có thể bỏ qua việc điền vào các trường đó.
Mã:
APP_ENV=production
...
APP_URL=https://monica.example.com
...
DB_DATABASE=monicadb
DB_USERNAME=monicauser
DB_PASSWORD=YourPassword23!
...
MAIL_MAILER=smtp
MAIL_HOST=email-smtp.us-west-2.amazonaws.com
MAIL_PORT=587
MAIL_USERNAME=SESID
MAIL_PASSWORD=SESKey
MAIL_ENCRYPTION=tls
# Outgoing emails will be sent with these identity
[emailprotected]
MAIL_FROM_NAME="Monica CRM"
# New registration notification sent to this email
[emailprotected]
...
Cài đặt tất cả các gói cần thiết cho Monica bằng Composer.
Mã:
$ composer install --no-interaction --no-dev
Mã:
$ yarn install
$ yarn run production
APP_KEY
và tự động điền vào .env
tệp. Bạn sẽ được nhắc bằng câu hỏi có hoặc không về việc có nên tiếp tục hay không. Nhập có để tiếp tục.
Mã:
$ php artisan key:generate
Mã:
$ php artisan setup:production [emailprotected] --password=yourpassword -v
Mã:
Monica v4.0.0 is set up, enjoy.
? Filling database INFO Seeding database.
-----------------------------
|
| Welcome to Monica v4.0.0
|
-----------------------------
| You can now sign in to your account:
| username: [emailprotected]
| password:
| URL: https://monica.example.com
-----------------------------
Setup is done. Have fun.
Bước 12 - Cài đặt SSL
Chúng ta cần cài đặt Certbot để tạo chứng chỉ SSL. Chúng tôi sẽ sử dụng trình cài đặt gói Snapd cho mục đích đó. Vì Rocky Linux không đi kèm với nó, hãy cài đặt trình cài đặt Snapd. Nó yêu cầu kho lưu trữ EPEL (Gói bổ sung cho Enterprise Linux) để hoạt động. Nhưng vì chúng ta đã cài đặt nó ở bước 3, nên chúng ta có thể trực tiếp tiến hành.Cài đặt Snapd.
Mã:
$ sudo dnf install -y snapd
Mã:
$ sudo systemctl enable snapd --now
Mã:
$ sudo snap install core && sudo snap refresh core
Mã:
$ sudo ln -s /var/lib/snapd/snap /snap
$ echo 'export PATH=$PATH:/var/lib/snapd/snap/bin' | sudo tee -a /etc/profile.d/snapd.sh
Mã:
$ sudo snap install --classic certbot
/usr/bin
.
Mã:
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot
Mã:
$ certbot --version
certbot 2.7.4
Mã:
$ sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [emailprotected] -d monica.example.com
/etc/letsencrypt/live/monica.example.com
thư mục trên máy chủ của bạn.Tạo chứng chỉ nhóm Diffie-Hellman.
Mã:
$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096
Mã:
$ sudo systemctl list-timers
snap.certbot.renew.service
là một trong những dịch vụ được lên lịch chạy.
Mã:
NEXT LEFT LAST PASSED UNIT ACTIVATES
---------------------------------------------------------------------------------------------------------------------------
Thu 2023-11-23 02:34:37 UTC 45min left Thu 2023-11-23 00:57:54 UTC 51min ago dnf-makecache.timer dnf-makecache.service
Thu 2023-11-23 08:49:00 UTC 6h left - - snap.certbot.renew.timer snap.certbot.renew.service
Fri 2023-11-24 00:00:00 UTC 22h left Thu 2023-11-23 00:30:29 UTC 1h 18min ago logrotate.timer logrotate.service
Mã:
$ sudo certbot renew --dry-run
Bước 13 - Cấu hình SELinux
Thay đổi ngữ cảnh bảo mật tệp cho OpenEMR.
Mã:
$ sudo semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/html/monica(/.*)?"
Mã:
$ sudo restorecon -Rv /var/www/html/monica/
Mã:
$ sudo setsebool -P httpd_can_network_connect_db 1
Mã:
$ sudo setsebool -P httpd_can_network_connect 1
type enforcement
.Tạo tệp
my-phpfpm.te
trong thư mục gốc của bạn và mở tệp đó chỉnh sửa.
Mã:
$ cd ~
$ nano my-phpfpm.te
Mã:
module my-phpfpm 1.0;
require { type unconfined_service_t; type httpd_t; type httpd_sys_content_t; class dir write; class unix_stream_socket connectto;
}
#============= httpd_t ==============
#!!!! This avc is allowed in the current policy
allow httpd_t httpd_sys_content_t:dir write;
#!!!! This avc is allowed in the current policy
allow httpd_t unconfined_service_t:unix_stream_socket connectto;
Bước tiếp theo là chuyển đổi tệp thành mô-đun chính sách bằng lệnh sau. Đừng sửa đổi tên tệp trong lệnh nếu không, nó sẽ không hoạt động. Mô-đun được đặt tên là
my-phpfpm
và tên tệp phải giống với tên mô-đun.
Mã:
$ sudo checkmodule -M -m -o my-phpfpm.mod my-phpfpm.te
Mã:
$ sudo semodule_package -o my-phpfpm.pp -m my-phpfpm.mod
semodule
cài đặt chính sách đã sử dụng.
Mã:
$ sudo semodule -i my-phpfpm.pp
Bước 14 - Cấu hình PHP-FPM
Mởphp.ini
cho chỉnh sửa.
Mã:
$ sudo nano /etc/php.ini
upload_max_filesize
và post_max_size
biến. Giá trị này quyết định kích thước của tệp bạn có thể tải lên Monica. Theo mặc định, nó được đặt ở mức 10MB, đây là kích thước mà chúng ta sẽ cấu hình bằng PHP.
Mã:
$ sudo sed -i 's/upload_max_filesize = 2M/upload_max_filesize = 10M/' /etc/php.ini
$ sudo sed -i 's/post_max_size = 8M/post_max_size = 10M/' /etc/php.ini
Mã:
$ sudo sed -i 's/memory_limit = 128M/memory_limit = 256M/' /etc/php.ini
/etc/php-fpm.d/www.conf
.
Mã:
$ sudo nano /etc/php-fpm.d/www.conf
user=apache
và group=apache
trong tệp và thay đổi chúng thành nginx
.
Mã:
...
; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
; will be used.
; RPM: apache user chosen to provide access to the same directories as httpd
user = nginx
; RPM: Keep a group allowed to write in log dir.
group = nginx
...
listen.owner = nobody
, listen.group = nobody
, listen.mode = 0660
dòng trong tệp và thay đổi chúng như sau sau khi bỏ chú thích.
Mã:
; Set permissions for unix socket, if one is used. In Linux, read/write
; permissions must be set in order to allow connections from a web server. Many
; BSD-derived systems allow connections regardless of permissions. The owner
; and group can be specified either by name or by their numeric IDs.
; Default Values: user and group are set as the running user
; mode is set to 0660
listen.owner = nginx
listen.group = nginx
listen.mode = 0660
Khởi động lại quy trình PHP-fpm. Hãy đảm bảo bạn đã cài đặt Nginx trước khi khởi động lại dịch vụ PHP, nếu không, dịch vụ sẽ không thành công vì không thể tìm thấy nhóm
nginx
.
Mã:
$ sudo systemctl restart php-fpm
Mã:
$ sudo chgrp -R nginx /var/lib/php/session
Bước 15 - Cấu hình Nginx
Cho phép Nginx truy cập vào thư mục gốc Monica.
Mã:
$ sudo chown -R nginx:nginx /var/www/html/monica
storage
thư mục.
Mã:
$ sudo chmod -R 775 /var/www/html/monica/storage
/etc/nginx/nginx.conf
để chỉnh sửa.
Mã:
$ sudo nano /etc/nginx/nginx.conf
include /etc/nginx/conf.d/*.conf;
.
Mã:
server_names_hash_bucket_size 64;
Tạo và mở tệp
/etc/nginx/conf.d/monica.conf
để chỉnh sửa.
Mã:
$ sudo nano /etc/nginx/conf.d/monica.conf
monica.example.com
bằng tên miền của bạn. Đảm bảo giá trị của client_max_body_size
được đặt thành 10MB, đây là kích thước tải lên mặc định của tệp trong Monica. Đây là giá trị giống như chúng ta đã cấu hình với PHP trước đó.
Mã:
server { listen 443 ssl http2; listen [::]:443 ssl http2; server_name monica.example.com; root /var/www/html/monica/public; index index.php; client_max_body_size 10M; access_log /var/log/nginx/monica.access.log; error_log /var/log/nginx/monica.error.log; ssl_certificate /etc/letsencrypt/live/monica.example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/monica.example.com/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/monica.example.com/chain.pem; ssl_session_timeout 5m; ssl_session_cache shared:MozSSL:10m; ssl_session_tickets off; ssl_protocols TLSv1.2 TLSv1.3; ssl_prefer_server_ciphers on; ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384; ssl_ecdh_curve X25519:prime256v1:secp384r1:secp521r1; ssl_stapling on; ssl_stapling_verify on; ssl_dhparam /etc/ssl/certs/dhparam.pem; location / { try_files $uri $uri/ /index.php?$query_string; } location ~ \.php$ { fastcgi_index index.php; fastcgi_split_path_info ^(.+\.php)(.*)$; fastcgi_keep_conn on; include fastcgi_params; fastcgi_pass unix:/run/php-fpm/www.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; }
}
# enforce HTTPS
server { listen 80; listen [::]:80; server_name monica.example.com; return 301 https://$host$request_uri;
}
Xác minh cấu hình Nginx của bạn.
Mã:
$ sudo nginx -t
Mã:
$ sudo systemctl restart nginx
Bước 16 - Truy cập Monica CRM
Mở URLhttps://monica.example.com
trong trình duyệt của bạn và bạn sẽ được đưa đến trang đăng nhập như hiển thị bên dưới.data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22613%22%20height=%22551%22%3E%3C/svg%3E
Nhập email và mật khẩu bạn đã cấu hình ở bước 12 và nhấn nút Đăng nhập để tiếp tục. Bạn sẽ được đưa đến màn hình chào mừng, nơi bạn có thể bắt đầu sử dụng ứng dụng.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22531%22%3E%3C/svg%3E
Bước 17 Thiết lập Cron
Monica CRM yêu cầu một số quy trình nền để đảm bảo ứng dụng chạy trơn tru. Quy trình này được quản lý bằng chức năng Cron. Để thực hiện việc này, hãy thiết lập một cron sẽ chạy mỗi phút để chạy lệnhphp artisan schedule:run
.Chạy trình chỉnh sửa crontab. Chúng tôi đang truyền
nginx
làm người dùng vì người này có quyền truy cập vào thư mục /var/www/html/monica
. Chúng tôi đang truyền nano làm lựa chọn trình soạn thảo trong chính lệnh, đây là cách dễ nhất để bắt đầu.
Mã:
$ sudo editor=NANO crontab -u nginx -e
Mã:
* * * * * php /var/www/html/monica/artisan schedule:run >> /dev/null 2>&1
Bước 18 - Cập nhật Monica CRM
Bước đầu tiên để sao lưu Monica CRM là đảm bảo rằng nó đã được sao lưu. Bạn có thể sao lưu SQL từ trang cài đặt. Nhấp vào biểu tượng Cài đặt ở góc trên bên phải của bảng điều khiển để mở Trang cài đặt tài khoản. Tiếp theo, mở trang Xuất dữ liệu từ menu bên trái.data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22578%22%3E%3C/svg%3E
Nhấp vào nút Xuất sang SQL để xuất cơ sở dữ liệu. Cũng có tùy chọn Xuất sang Json sao lưu nhiều dữ liệu hơn là chỉ SQL nhưng không có cách nào để nhập dữ liệu đó. Bạn có thể sẽ thấy trạng thái là không thành công cho cả hai lần xuất nhưng nếu bạn duyệt thư mục
/var/www/html/monica/storage/app/public/exports
trên máy chủ của mình, bạn sẽ thấy cả hai tệp.
Mã:
$ ls /var/www/html/monica/storage/app/public/exports -al
total 84
drwxr-xr-x 2 nginx nginx 4096 Nov 22 09:47 .
drwxrwxr-x 4 nginx nginx 4096 Nov 22 09:47 ..
-rw-r--r-- 1 nginx nginx 53712 Nov 22 09:47 cvlK5RAl7VVLdYLplnSZ8SFGHHwDZy9cjRhtoOWB.json
-rw-r--r-- 1 nginx nginx 17050 Nov 22 09:47 dgZf5T0SnXeAuZ67HfaFLu2JosyUsByJcp2C8nlv.sql
Chuyển sang Monica thư mục.
Mã:
$ cd /var/www/html/monica
nginx
, chúng ta sẽ cần sử dụng sudo
để chạy bất kỳ lệnh nào. Nhưng tốt hơn là tạm thời chuyển đổi quyền thay vì sử dụng sudo
đó là những gì chúng ta sẽ làm.
Mã:
$ sudo chown -R $USER:$USER /var/www/html/monica
Mã:
$ git fetch
Mã:
$ git checkout tags/v5.0.0-beta.3
Mã:
$ composer install --no-interaction --no-dev
Mã:
$ yarn install
Mã:
$ yarn run production
Mã:
$ php artisan monica:update --force
Mã:
$ php artisan migrate
monica.sql
bằng cách sử dụng lệnh sau lệnh.
Mã:
$ sudo mysqlimport -u monicauser -p monica /var/www/html/monica/storage/app/public/exports/dgZf5T0SnXeAuZ67HfaFLu2JosyUsByJcp2C8nlv.sql
Sau khi hoàn tất, hãy khôi phục quyền thư mục Monica cho người dùng
nginx
.
Mã:
$ sudo chown -R nginx:nginx /var/www/html/monica