Cách cài đặt Monica Personal CRM trên Rocky Linux 9

theanh

Administrator
Nhân viên
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.

Đ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
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.
Mã:
$ sudo firewall-cmd --permanent --list-services
Nó sẽ hiển thị đầu ra sau.
Mã:
cockpit dhcpv6-client ssh
Cho phép HTTP và HTTPS cổng.
Mã:
$ sudo firewall-cmd --permanent --add-service=http
$ sudo firewall-cmd --permanent --add-service=https
Kiểm tra lại trạng thái của tường lửa.
Mã:
$ sudo firewall-cmd --permanent --list-services
Bạn sẽ thấy một đầu ra.
Mã:
cockpit dhcpv6-client http https ssh
Tải lại tường lửa để kích hoạt các thay đổi.
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
Kiểm tra Git phiên bản.
Mã:
$ git --version
git version 2.39.3
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 đó.
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
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ờ.
Mã:
$ NODE_MAJOR=18
$ sudo yum install https://rpm.nodesource.com/pub_$NODE_MAJOR.x/nodistro/repo/nodesource-release-nodistro-1.noarch.rpm -y
Cài đặt Node.js.
Mã:
$ sudo yum install nodejs -y --setopt=nodesource-nodejs.module_hotfixes=1
Xác nhận xem nó đã được cài đặt chưa đúng cách.
Mã:
$ node --version
v18.18.2
Cập nhật NPM.
Mã:
$ sudo npm install -g npm@latest
Xác minh NPM version.
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
Xác minh cài đặt 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
Dán mã sau vào nó.
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
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.
Mã:
$ sudo dnf install nginx -y
Xác minh cài đặt.
Mã:
$ nginx -v
nginx version: nginx/1.24.0
Bật và khởi động dịch vụ máy chủ Nginx.
Mã:
$ sudo systemctl enable nginx --now
Kiểm tra dịch vụ trạng thái.
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"
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 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
Tiếp theo, cài đặt kho lưu trữ Remi.
Mã:
$ sudo dnf install https://rpms.remirepo.net/enterprise/remi-release-9.rpm
Kiểm tra PHP khả dụng luồng.
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
Phiên bản mặc định là 8.1. Bật kho lưu trữ PHP 8.2 của Remi.
Mã:
$ sudo dnf module reset php -y
$ sudo dnf module enable php:remi-8.2
Cài đặt PHP và các tiện ích mở rộng của nó.
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
Kiểm tra phiên bản PHP đã cài đặt.
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
Kích hoạt và khởi động dịch vụ PHP-FPM.
Mã:
$ sudo systemctl enable php-fpm --now
Kiểm tra trạng thái của dịch vụ.
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');"
Xác minh trình cài đặt đã tải xuống.
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;"
Bạn sẽ nhận được kết quả sau.
Mã:
Installer verified
Chạy tập lệnh cài đặt để tải xuống phiên bản mới nhất của Composer.
Mã:
$ php composer-setup.php
Xóa tập lệnh cài đặt.
Mã:
$ php -r "unlink('composer-setup.php');"
Di chuyển tệp nhị phân đã tải xuống đến /usr/local/bin thư mục.
Mã:
$ sudo mv composer.phar /usr/local/bin/composer
Xác nhận cài đặt.
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
Dán mã sau vào đó.
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
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à 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
Kiểm tra xem MariaDB đã được cài đặt đúng chưa.
Mã:
$ mysql --version
Bạn sẽ thấy thông báo sau đầu ra.
Mã:
mysql Ver 15.1 Distrib 10.11.6-MariaDB, for Linux (x86_64) using EditLine wrapper
Bạn cũng có thể sử dụng 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
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.
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
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.
Mã:
$ sudo mariadb-secure-installation
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.
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...
Tiếp theo, bạn sẽ được hỏi xem bạn có muốn chuyển sang plugin 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.
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 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.
Từ đây trở đi, nhấn 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!
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.
Mã:
$ sudo mysql
Nhập mật khẩu gốc Linux của bạn khi được nhắc.
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)]>
Nhấn exit để đóng shell MariaDB.

Bước 9 - Cấu hình MariaDB​

Đăng nhập vào shell MariaDB.
Mã:
$ sudo mysql
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.
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';
Thay thế monica, monicauseryourpassword 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;
Xóa các đặc quyền để đảm bảo rằng chúng được lưu trong phiên hiện tại.
Mã:
MariaDB> FLUSH PRIVILEGES;
Thoát khỏi MariaDB shell.
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
Đặt người dùng hiện đang đăng nhập làm chủ sở hữu của thư mục.
Mã:
$ sudo chown -R $USER:$USER /var/www/html/monica
Chuyển đến thư mục.
Mã:
$ cd /var/www/html/monica
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 (.) ở 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 .
Lấy dữ liệu mới nhất từ GitHub.
Mã:
$ git fetch
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.
Mã:
$ git checkout tags/v4.0.0
Bạn sẽ nhận được kết quả sau.
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
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.
Mã:
$ cp .env.example .env
Thay đổi các giá trị sau như được hiển thị. Đặt biến 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]
...
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.
Mã:
$ composer install --no-interaction --no-dev
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ữ).
Mã:
$ yarn install
$ yarn run production
Tạo giá trị 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 để tiếp tục.
Mã:
$ php artisan key:generate
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 để 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.
Mã:
$ php artisan setup:production [emailprotected] --password=yourpassword -v
Bạn sẽ nhận được thông báo sau về quá trình cài đặt thành công.
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
Bật và khởi động dịch vụ Snap.
Mã:
$ sudo systemctl enable snapd --now
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.
Mã:
$ sudo snap install core && sudo snap refresh core
Tạo các liên kết cần thiết để Snapd hoạt động.
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
Cài đặt Certbot.
Mã:
$ sudo snap install --classic 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 /usr/bin.
Mã:
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot
Xác minh xem Certbot có hoạt động không chính xác.
Mã:
$ certbot --version
certbot 2.7.4
Chạy lệnh sau để tạo Chứng chỉ SSL.
Mã:
$ sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [emailprotected] -d monica.example.com
Lệnh trên sẽ tải xuống chứng chỉ vào /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
Kiểm tra trình lập lịch gia hạn Certbot dịch vụ.
Mã:
$ sudo systemctl list-timers
Bạn sẽ thấy 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
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.
Mã:
$ sudo certbot renew --dry-run
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.

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(/.*)?"
Áp dụng chính sách.
Mã:
$ sudo restorecon -Rv /var/www/html/monica/
Áp dụng chính sách để cho phép Nginx cấp quyền truy cập vào MariaDB.
Mã:
$ sudo setsebool -P httpd_can_network_connect_db 1
Á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.
Mã:
$ sudo setsebool -P httpd_can_network_connect 1
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 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
Dán mã sau vào đó.
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;
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à 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
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.
Mã:
$ sudo semodule_package -o my-phpfpm.pp -m my-phpfpm.mod
Bước cuối cùng là tải gói chính sách bằng lệnh 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
Để thiết lập kích thước tải tệp lên, hãy thay đổi giá trị của upload_max_filesizepost_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
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ã:
$ sudo sed -i 's/memory_limit = 128M/memory_limit = 256M/' /etc/php.ini
Mở tệp /etc/php-fpm.d/www.conf.
Mã:
$ sudo nano /etc/php-fpm.d/www.conf
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 user=apachegroup=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
...
Tìm 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
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 nginx.
Mã:
$ sudo systemctl restart php-fpm
Thay đổi nhóm thư mục phiên PHP thành Nginx.
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
Đặt quyền thư mục chính xác trên storage thư mục.
Mã:
$ sudo chmod -R 775 /var/www/html/monica/storage
Mở tệp /etc/nginx/nginx.conf để chỉnh sửa.
Mã:
$ sudo nano /etc/nginx/nginx.conf
Thêm dòng sau vào trước dòng include /etc/nginx/conf.d/*.conf;.
Mã:
server_names_hash_bucket_size 64;
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 /etc/nginx/conf.d/monica.conf để chỉnh sửa.
Mã:
$ sudo nano /etc/nginx/conf.d/monica.conf
Dán mã sau vào đó. Thay thế 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;
}
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.
Mã:
$ sudo nginx -t
Khởi động lại máy chủ Nginx.
Mã:
$ sudo systemctl restart nginx

Bước 16 - Truy cập Monica CRM​

Mở URL https://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ệnh php 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
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.
Mã:
* * * * * php /var/www/html/monica/artisan schedule:run >> /dev/null 2>&1
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.

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
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.
Mã:
$ cd /var/www/html/monica
Vì quyền của thư mục được đặt thành 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
Lấy Git mới nhất thay đổi.
Mã:
$ git fetch
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.
Mã:
$ git checkout tags/v5.0.0-beta.3
Cập nhật các phần phụ thuộc.
Mã:
$ composer install --no-interaction --no-dev
Cài đặt giao diện người dùng gói.
Mã:
$ yarn install
Xây dựng các tài sản JavaScript và CSS.
Mã:
$ yarn run production
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.
Mã:
$ php artisan monica:update --force
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.
Mã:
$ php artisan migrate
Tiếp theo, nhập tệp 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
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 nginx.
Mã:
$ sudo chown -R nginx:nginx /var/www/html/monica

Kết luận​

Đây là kết thúc hướng dẫn của chúng tôi, trong đó bạn đã tìm hiểu cách cài đặt phần mềm Monica CRM trên máy chủ Rocky Linux 9. Nếu bạn có bất kỳ câu hỏi nào, hãy đăng chúng vào phần bình luận bên dưới.
 
Back
Bên trên