Cách cài đặt Monica Personal CRM trên Debian 12

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á nhân 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. Phần mềm được viết bằng nền tảng web Laravel PHP.

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ủ Debian 12.

Điều kiện tiên quyết​


  • Máy chủ chạy Debian 12 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ường lửa đơn giản (UFW) được bật và đang chạy.

  • 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 apt update && sudo apt upgrade
[*]
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ó sẵn trên máy chủ của bạn.
Mã:
$ sudo apt install curl wget nano software-properties-common dirmngr apt-transport-https ca-certificates lsb-release debian-archive-keyring gnupg2 ufw unzip -y

Bước 1 - Cấu hình Tường lửa​

Bước đầu tiên trước khi cài đặt bất kỳ gói nào là cấu hình tường lửa để cho phép kết nối HTTP và HTTPS.

Kiểm tra trạng thái của tường lửa.
Mã:
$ sudo ufw status
Bạn nên xem nội dung tương tự như sau.
Mã:
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Cho phép các cổng HTTP và HTTPs.
Mã:
$ sudo ufw allow http
$ sudo ufw allow https
Kiểm tra lại trạng thái để xác nhận.
Mã:
$ sudo ufw status
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
80/tcp ALLOW Anywhere
443/tcp ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
80/tcp (v6) ALLOW Anywhere (v6)
443/tcp (v6) ALLOW Anywhere (v6)

Bước 2 - Cài đặt Git​

Git thường được cài đặt sẵn với Debian 12 nhưng trong trường hợp chưa cài đặt, hãy chạy lệnh sau để cài đặt.
Mã:
$ sudo apt install git -y
Kiểm tra phiên bản Git.
Mã:
$ git --version
git version 2.39.2
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 nó.
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 để hoạt động. Nhập khóa GPG Nodesource.
Mã:
$ curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | sudo gpg --dearmor -o /usr/share/keyrings/nodesource.gpg
Tạo kho lưu trữ deb Nodesource. 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
$ echo "deb [signed-by=/usr/share/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x nodistro main" | sudo tee /etc/apt/sources.list.d/nodesource.list
Cập nhật danh sách kho lưu trữ hệ thống.
Mã:
$ sudo apt update
Cài đặt Node.js.
Mã:
$ sudo apt install nodejs -y
Xác nhận xem nó đã được cài đặt đúng cách chưa.
Mã:
$ node --version
v18.18.2
Cập nhật NPM.
Mã:
$ sudo npm install -g npm@latest
Xác minh phiên bản NPM.
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​

Debian 12 đ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.

Nhập khóa ký của Nginx.
Mã:
$ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \ | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
Thêm kho lưu trữ cho phiên bản ổn định của Nginx.
Mã:
$ echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \
http://nginx.org/packages/debian `lsb_release -cs` nginx" \ | sudo tee /etc/apt/sources.list.d/nginx.list
Cập nhật hệ thống kho lưu trữ.
Mã:
$ sudo apt update
Cài đặt Nginx.
Mã:
$ sudo apt install nginx
Xác minh cài đặt. Trên hệ thống Debian, lệnh sau chỉ hoạt động với sudo.
Mã:
$ sudo nginx -v
nginx version: nginx/1.24.0
Khởi động Nginx máy chủ.
Mã:
$ sudo systemctl start nginx
Kiểm tra trạng thái dịch vụ.
Mã:
$ sudo systemctl status nginx
? nginx.service - nginx - high performance web server Loaded: loaded (/lib/systemd/system/nginx.service; enabled; preset: enabled) Active: active (running) since Mon 2023-11-20 13:24:40 UTC; 4s ago Docs: https://nginx.org/en/docs/ Process: 16778 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exited, status=0/SUCCESS) Main PID: 16779 (nginx) Tasks: 2 (limit: 2315) Memory: 1.7M CPU: 8ms CGroup: /system.slice/nginx.service ??16779 "nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf" ??16780 "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​

Debian 12 mặc định đi kèm với PHP 8.2. Bạn có thể cài đặt nó và các tiện ích mở rộng mà Monica CRM yêu cầu bằng cách chạy lệnh sau.
Mã:
$ sudo apt install php php-bcmath php-cli php-curl php-common \ php-fpm php-gd php-gmp php-intl php-json php-mbstring \ php-mysql php-opcache php-redis php-xml php-zip
Để 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, hãy thêm kho lưu trữ PHP của Ondrej.

Đầu tiên, hãy nhập khóa GPG PHP của kho lưu trữ Sury.
Mã:
$ sudo curl -sSLo /usr/share/keyrings/deb.sury.org-php.gpg https://packages.sury.org/php/apt.gpg
Thêm Ondrej Kho lưu trữ PHP của Sury.
Mã:
$ sudo sh -c 'echo "deb [signed-by=/usr/share/keyrings/deb.sury.org-php.gpg] https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list'
Cập nhật danh sách kho lưu trữ hệ thống của bạn.
Mã:
$ sudo apt update
Bạn có thể sẽ nhận được thông tin về các bản nâng cấp đang chờ xử lý. Chạy chúng.
Mã:
$ sudo apt upgrade
Cài đặt PHP và các tiện ích mở rộng của nó.
Mã:
$ sudo apt install php8.2 php8.2-bcmath php8.2-cli php8.2-curl php8.2-common \ php8.2-fpm php8.2-gd php8.2-gmp php8.2-intl php8.2-mbstring \ php8.2-mysql php8.2-opcache php8.2-redis php8.2-xml php8.2-zip
Kiểm tra phiên bản PHP đã cài đặt.
Mã:
$ php --version
PHP 8.2.12 (cli) (built: Oct 27 2023 13:00:10) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.2.12, Copyright (c) Zend Technologies with Zend OPcache v8.2.12, Copyright (c), by Zend Technologies

Bước 7 - Cấu hình PHP-FPM​

Mở php.ini cho chỉnh sửa.
Mã:
$ sudo nano /etc/php/8.2/fpm/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 tệp bạn có thể tải lên Monica. Theo mặc định, nó được đặt ở mức 10MB, đây là mức 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/8.2/fpm/php.ini
$ sudo sed -i 's/post_max_size = 8M/post_max_size = 10M/' /etc/php/8.2/fpm/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 máy chủ và yêu cầu của bạn.
Mã:
$ sudo sed -i 's/memory_limit = 128M/memory_limit = 256M/' /etc/php/8.2/fpm/php.ini
Mở tệp /etc/php/8.2/fpm/pool.d/www.conf.
Mã:
$ sudo nano /etc/php/8.2/fpm/pool.d/www.conf
Chúng ta cần đặt người dùng/nhóm Unix của các quy trình PHP thành nginx. Tìm các dòng user=www-datagroup=www-data 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.
user = nginx
group = nginx
...
Ngoài ra, hãy tìm các dòng listen.owner=www-datalisten.group=www-data trong tệp và thay đổi chúng thành nginx.
Mã:
listen.owner = nginx
listen.group = nginx
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 hoạt động vì không tìm thấy nhóm nginx.
Mã:
$ sudo systemctl restart php8.2-fpm

Bước 8 - 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à thứ cung cấp năng lượng cho 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 thông báo sau đầu ra.
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 cài đặt script.
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 9 - 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 với các lệnh dành cho MySQL.

Theo mặc định, Debian 12 đi kèm MariaDB 10.11.4 đã 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.

Nhập khóa GPG của MariaDB.
Mã:
$ sudo curl -o /usr/share/keyrings/mariadb-keyring.pgp 'https://mariadb.org/mariadb_release_signing_key.pgp'
Tạo tệp kho lưu trữ của MariaDB.
Mã:
$ echo "deb [signed-by=/usr/share/keyrings/mariadb-keyring.pgp] https://deb.mariadb.org/10.11/debian `lsb_release -cs` main" | sudo tee /etc/apt/sources.list.d/mariadb-server.list
Cập nhật kho lưu trữ hệ thống danh sách.
Mã:
$ sudo apt update
Phát hành lệnh sau để cài đặt máy chủ MariaDB.
Mã:
$ sudo apt install mariadb-server -y
Kiểm tra xem MariaDB đã được cài đặt chưa chính xác.
Mã:
$ mysql --version
Bạn sẽ thấy kết quả sau.
Mã:
mysql Ver 15.1 Distrib 10.11.6-MariaDB, for debian-linux-gnu (x86_64) using EditLine wrapper
Bạn cũng có thể sử dụng mariadb --version để kiểm tra phiên bản.

Dịch vụ MariaDB đã được bật và đang chạy. Kiểm tra trạng thái của dịch vụ bằng lệnh sau.
Mã:
$ sudo systemctl status mariadb
? mariadb.service - MariaDB 10.11.6 database server Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; preset: enabled) Drop-In: /etc/systemd/system/mariadb.service.d ??migrated-from-my.cnf-settings.conf Active: active (running) since Tue 2023-11-21 07:49:48 UTC; 8min ago Docs: man:mariadbd(8) https://mariadb.com/kb/en/library/systemd/ Process: 28307 ExecStartPre=/usr/bin/install -m 755 -o mysql -g root -d /var/run/mysqld (code=exited, status=0/SUCCESS) Process: 28308 ExecStartPre=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION (code=exited, status=0/SUCCESS) Process: 28310 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: 28350 ExecStartPost=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION (code=exited, status=0/SUCCESS) Process: 28352 ExecStartPost=/etc/mysql/debian-start (code=exited, status=0/SUCCESS) Main PID: 28339 (mariadbd) Status: "Taking your SQL requests now..." Tasks: 8 (limit: 2315) Memory: 213.3M CPU: 585ms CGroup: /system.slice/mariadb.service ??28339 /usr/sbin/mariadbd
Chạy lệnh sau để thực hiện cấu hình mặc định như đặt mật khẩu root, xóa người dùng ẩn danh, không cho phép đăng nhập root từ xa và xóa bảng thử nghiệm.
Mã:
$ sudo mariadb-secure-installation
Bạn sẽ được yêu cầu nhập mật khẩu root. 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 nhập người dùng Linux của bạn. Chọn n để bỏ qua việc chuyển sang nó vì bạn đã có root được bảo vệ account.
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 có muốn thay đổi mật khẩu root không. Trên Debian 12, 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 38
Server version: 10.11.6-MariaDB-1:10.11.6+maria~deb12 mariadb.org binary distribution
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 10 - 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 với thông tin đăng nhập bạn chọn. Chọn 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 khả năng như tài khoản gốc.
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 11 - Tải xuống Monica​

Tạo thư mục gốc web.
Mã:
$ sudo mkdir /var/www/html -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
Chuyển sang thư mục.
Mã:
$ cd /var/www/html
Sao chép kho lưu trữ Monica Github chính thức tại đây vị trí.
Mã:
$ git clone https://github.com/monicahq/monica.git
Chuyển sang thư mục đã sao chép.
Mã:
$ cd monica
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 có sẵn 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 12 - 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ỳ gói 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 frontend 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 13 - Cài đặt SSL​

Chúng ta cần cài đặt Certbot để tạo chứng chỉ SSL. Bạn có thể cài đặt Certbot bằng kho lưu trữ của Debian hoặc tải phiên bản mới nhất bằng công cụ Snapd. Chúng ta sẽ sử dụng phiên bản Snapd.

Debian 12 không đi kèm Snapd đã cài đặt. Cài đặt gói Snapd.
Mã:
$ sudo apt install snapd
Chạy các lệnh sau để đảm bảo phiên bản Snapd của bạn được cập nhật.
Mã:
$ sudo snap install core && sudo snap refresh core
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 được bằng cách tạo liên kết tượng trưng đến /usr/bin thư mục.
Mã:
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot
Kiểm tra xem Certbot có hoạt động bình thường không.
Mã:
$ certbot --version
certbot 2.7.4
Chạy lệnh sau để tạo SSL Chứng chỉ.
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 chứng chỉ xuống thư mục /etc/letsencrypt/live/monica.example.com trên máy chủ của bạn.

Tạo nhóm Diffie-Hellman chứng chỉ.
Mã:
$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096
Kiểm tra dịch vụ lập lịch gia hạn Certbot.
Mã:
$ sudo systemctl list-timers
Bạn sẽ tìm 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
---------------------------------------------------------------------------------------------------------------------------
Tue 2023-11-21 11:39:00 UTC 4min 54s left Tue 2023-11-21 11:09:07 UTC 24min ago phpsessionclean.timer phpsessionclean.service
Tue 2023-11-21 12:57:00 UTC 1h 22min left - - snap.certbot.renew.timer snap.certbot.renew.service
Wed 2023-11-22 00:00:00 UTC 12h left Tue 2023-11-21 00:00:03 UTC 11h ago dpkg-db-backup.timer dpkg-db-backup.service
Thực hiện chạy thử quy trình để kiểm tra xem việc gia hạn SSL có hoạt động không tốt.
Mã:
$ sudo certbot renew --dry-run
Nếu bạn 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 14 - 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 với giá trị chúng ta đã định 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/php8.2-fpm.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 Nginx máy chủ.
Mã:
$ sudo systemctl restart nginx

Bước 15 - 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 16 Thiết lập Cron​

Monica CRM yêu cầu một số quy trình nền để đảm bảo chạy trơn tru. Điều 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 /var/www/html/monica thư mục.
Mã:
$ sudo crontab -u nginx -e
Nếu đây là lần đầu tiên bạn chạy crontab, bạn sẽ được yêu cầu chọn trình soạn thảo.
Mã:
no crontab for nginx - using an empty one
Select an editor. To change later, run 'select-editor'. 1. /bin/nano > /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 17 - 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 thư mục Monica.
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ủ Debian 12. 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