Cách cài đặt SuiteCRM với Nginx và Free Let's Encrypt SSL trên Ubuntu 22.04

theanh

Administrator
Nhân viên
SuiteCRM là giải pháp quản lý quan hệ khách hàng nguồn mở được viết bằng PHP. Đây là một nhánh của phần mềm SugarCRM phổ biến sau khi SugarCRM ngừng phát hành phiên bản cộng đồng. Nó được sử dụng để tạo kho lưu trữ trung tâm cho tất cả dữ liệu khách hàng của bạn để có được thông tin chi tiết có thể được sử dụng để tăng cường và nuôi dưỡng các mối quan hệ kinh doanh của bạn.

Một số tính năng của nó bao gồm Lưu trữ tài liệu, Tiếp thị qua email, Lịch, Tích hợp phương tiện truyền thông xã hội, Quản lý lãnh thổ, Phân khúc, Tự động hóa tiếp thị, Đánh giá khách hàng tiềm năng, Tích hợp trò chuyện nội bộ, Hỗ trợ khách hàng, CRM xã hội, Tự động hóa lực lượng bán hàng, Chiến dịch tiếp thị, CRM di động và báo cáo. Nó có thể được tích hợp với các dịch vụ chuyển tiếp SMTP của bên thứ ba như Mandrill, Sendgrid, Amazon SES, v.v. Bạn có thể cài đặt các plugin để mở rộng chức năng của SuiteCRM. Nó có thể được tích hợp với các ứng dụng của bên thứ ba như Mautic, Facebook, Twitter, MailChimp, Zoom, Quickbooks, DocuSign, v.v.

Trong bài đăng này, bạn sẽ tìm hiểu cách cài đặt SuiteCRM bằng máy chủ web Nginx và Let's Encrypt SSL trên Ubuntu 22.04.

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


  • Máy chủ chạy Ubuntu 20.04.

  • Người dùng sudo không phải root.
  • Tên miền đủ điều kiện (FQDN) trỏ đến máy chủ như suitecrm.example.com.

  • Đảm bảo mọi thứ được cập nhật.
Mã:
$ sudo apt update$ sudo apt upgrade
[*]
Một số gói mà hệ thống của bạn cần.
Mã:
$ sudo apt install wget curl nano ufw software-properties-common dirmngr apt-transport-https gnupg2 ca-certificates lsb-release ubuntu-keyring unzip -y
Một số gói này có thể đã được cài đặt trên hệ thống của bạn.

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. Ubuntu mặc định có ufw (Uncomplicated Firewall).

Kiểm tra xem tường lửa có đang chạy không.
Mã:
$ sudo ufw status
Bạn sẽ nhận được kết quả sau.
Mã:
Status: inactive
Cho phép cổng SSH để tường lửa không làm gián đoạn kết nối hiện tại khi bật nó.
Mã:
$ sudo ufw allow OpenSSH
Cũng cho phép các cổng HTTP và HTTPS.
Mã:
$ sudo ufw allow http$ sudo ufw allow https
Bật Tường lửa
Mã:
$ sudo ufw enableLệnh có thể làm gián đoạn các kết nối ssh hiện có. Tiến hành thao tác (y|n)? yTường lửa đang hoạt động và được bật khi khởi động hệ thống
Kiểm tra lại trạng thái của tường lửa.
Mã:
$ sudo ufw status
Bạn sẽ thấy đầu ra tương tự.
Mã:
Trạng thái: đang hoạt độngĐến Hành động Từ-- ------ ----OpenSSH ALLOW Anywhere80/tcp ALLOW Anywhere443 ALLOW AnywhereOpenSSH (v6) ALLOW Anywhere (v6)80/tcp (v6) ALLOW Anywhere (v6)443 (v6) ALLOW Anywhere (v6)

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

Ubuntu đ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 arch=amd64] \http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \ | sudo tee /etc/apt/sources.list.d/nginx.list
Cập nhật kho lưu trữ hệ thống.
Mã:
$ sudo apt update
Cài đặt Nginx.
Mã:
$ sudo apt install nginx
Xác minh cài đặt.
Mã:
$ nginx -vphiên bản nginx: nginx/1.20.2
Bật dịch vụ Nginx.
Mã:
$ sudo systemctl enable nginx

Bước 3 - Cài đặt và cấu hình MariaDB​

Ubuntu 22.04 đi kèm với MariaDB v10.6.7. Chạy lệnh sau để cài đặt.
Mã:
$ sudo apt install mariadb-server
Bảo mật cài đặt MariaDB.
Mã:
$ sudo mysql_secure_installation
Bạn sẽ thấy nhiều lời nhắc khác nhau. Trả lời chúng như sau.
Mã:
Nhập mật khẩu hiện tại cho root (nhập nếu không có): Nhấn EnterChuyển sang xác thực unix_socket [Y/n] Nhập yĐổi mật khẩu root? [Y/n] Nhập nXóa người dùng ẩn danh? [Y/n] Nhập yKhông cho phép root đăng nhập từ xa? [Y/n] Nhập yXóa cơ sở dữ liệu thử nghiệm và truy cập vào cơ sở dữ liệu đó? [Y/n] Nhập yTải lại bảng đặc quyền ngay bây giờ? [Y/n] Nhập y
Kết nối với shell MariaDB bằng lệnh sau.
Mã:
$ sudo mysql
Tạo cơ sở dữ liệu mới cho SuiteCRM.
Mã:
$ CREATE DATABASE suitecrm;
Tạo người dùng cơ sở dữ liệu mới và sử dụng mật khẩu mạnh cho t.
Mã:
$ CREATE USER 'suitecrmuser'@'localhost' được xác định bởi 'yourpassword';
Cấp quyền trên cơ sở dữ liệu cho người dùng.
Mã:
$ GRANT ALL PRIVILEGES ON suitecrm.* TO 'suitecrmuser'@'localhost';
Xóa tất cả các quyền.
Mã:
$ FLUSH PRIVILEGES;
Thoát khỏi shell MySQL.
Mã:
$ exit

Bước 4 - Cài đặt PHP và tiện ích mở rộng​

Ubuntu 22.04 đi kèm với PHP 8.1, hiện chưa được SuiteCRM hỗ trợ. Chúng ta cần cài đặt PHP 8.0. Để thực hiện được điều đó, chúng ta cần thêm kho lưu trữ PHP của Ondrej.
Mã:
$ sudo add-apt-repository ppa:ondrej/php
Tiếp theo, cài đặt PHP và các tiện ích mở rộng của nó theo yêu cầu của SuiteCRM.
Mã:
$ sudo apt install php-imagick php8.0-fpm php8.0-mysql php8.0-common php8.0-gd php8.0-imap php8.0-curl php8.0-zip php8.0-xml php8.0-mbstring php8.0-bz2 php8.0-intl php8.0-gmp
Xác minh cài đặt.
Mã:
$ php --versionPHP 8.0.18 (cli) (được xây dựng: Ngày 1 tháng 5 năm 2022 04:42:09) (NTS)Bản quyền (c) The PHP GroupZend Engine v4.0.18, Bản quyền (c) Zend Technologies với Zend OPcache v8.0.18, Bản quyền (c), của Zend Technologies

Bước 5 - Tải xuống SuiteCRM​

Tải xuống phiên bản ổn định mới nhất của SuiteCRM. Bạn có thể lấy liên kết tải xuống từTrang web chính thức của SuiteCRM.

Đối với hướng dẫn của chúng tôi, chúng tôi sẽ cài đặt v7 của SuiteCRM vì nó được hỗ trợ trong một thời gian dài. Bạn có thể cài đặt phiên bản v8 nếu muốn nhưng ban đầu nó sẽ có thời gian hỗ trợ ngắn hơn.
Mã:
$ wget -O suitecrm.zip https://suitecrm.com/files/147/SuiteCRM-7.12/614/SuiteCRM-7.12.5.zip
Tạo thư mục gốc web để phục vụ SuiteCRM. Cờ -p tạo các thư mục cấp cao nhất trong đường dẫn nếu chúng không có.
Mã:
$ sudo mkdir -p /var/www/
Giải nén tệp zip đã tải xuống.
Mã:
$ sudo unzip suitecrm.zip -d /var/www/
Cờ -d chỉ định thư mục đích cho tệp lưu trữ.

Tệp sẽ được lưu trong thư mục /var/www/SuiteCRM-7.12.5/. Chúng tôi đổi tên để đơn giản hơn.
Mã:
$ sudo mv /var/www/SuiteCRM-7.12.5/ /var/www/suitecrm
Chuyển sang thư mục gốc web.
Mã:
$ cd /var/www/suitecrm
Đặt quyền sở hữu và quyền hạn chính xác cho các thư mục khác nhau.
Mã:
$ sudo chown -R nginx:nginx .$ sudo chmod -R 755 .$ sudo chmod -R 775 cache custom modules themes data upload$ sudo chmod 775 config_override.php 2>/dev/null

Bước 6 - Cài đặt và cấu hình SSL​

Trước khi cấu hình Nginx, chúng ta cần thiết lập chứng chỉ SSL.

Để cài đặt chứng chỉ SSL bằng Let's Encrypt, chúng ta cần tải xuống công cụ Certbot. Chúng tôi sẽ sử dụng trình cài đặt gói Snapd cho mục đích đó.

Cài đặt trình cài đặt Snap.
Mã:
$ sudo apt install snapd
Đảm bảo rằng 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 rằng lệnh Certbot 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
Dừng máy chủ Nginx vì nó can thiệp vào công cụ Certbot.
Mã:
$ sudo systemctl stop nginx
Tạo chứng chỉ SSL.
Mã:
$ sudo certbot certonly --standalone --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [emailprotected] -d suitecrm.example.com
Lệnh trên sẽ tải xuống chứng chỉ vào thư mục /etc/letsencrypt/live/suitecrm.example.com trên máy chủ của bạn.

Tạo chứng chỉ nhóm Diffie-Hellman.
Mã:
$ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 4096
Tạo thư mục gốc web thử thách để tự động gia hạn Let's Encrypt.
Mã:
$ sudo mkdir -p /var/lib/letsencrypt
Tạo Cron Job để gia hạn SSL. Nó sẽ chạy hàng ngày để kiểm tra chứng chỉ và gia hạn nếu cần. Để làm được điều đó, trước tiên, hãy tạo tệp /etc/cron.daily/certbot-renew và mở tệp đó để chỉnh sửa.
Mã:
$ sudo nano /etc/cron.daily/certbot-renew
Dán mã sau.
Mã:
#!/bin/shcertbot renew --cert-name suitecrm.example.com --webroot -w /var/lib/letsencrypt/ --post-hook "systemctl reload nginx"
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Thay đổi quyền trên tệp tác vụ để làm cho tệp có thể thực thi được.
Mã:
$ sudo chmod +x /etc/cron.daily/certbot-renew

Bước 7 - Cấu hình Nginx và PHP​

Cấu hình PHP-FPM​

Mở tệp /etc/php/8.0/fpm/pool.d/www.conf.
Mã:
$ sudo nano /etc/php/8.0/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-data và group=www-data trong tệp và thay đổi chúng thành nginx.
Mã:
...; Người dùng/nhóm quy trình Unix; Lưu ý: Người dùng là bắt buộc. Nếu nhóm không được đặt, nhóm người dùng mặc định; sẽ được sử dụng.user = nginxgroup = nginx...
Ngoài ra, hãy tìm các dòng listen.owner=www-data và listen.group=www-data trong tệp và đổi chúng thành nginx.
Mã:
listen.owner = nginxlisten.group = nginx
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Cấu hình kích thước tải lên PHP​

PHP đặt giới hạn cho kích thước tệp tải lên. Kích thước mặc định do PHP đặt là 2 MB. Để tăng kích thước tải lên, hãy mở tệp cấu hình PHP để chỉnh sửa.
Mã:
$ sudo nano /etc/php/8.0/fpm/php.ini
Tìm dòng sau.
Mã:
upload_max_filesize = 2M
Thay đổi giá trị của nó thành 20MB như được hiển thị.
Mã:
upload_max_filesize = 20M
Tìm dòng sau.
Mã:
post_max_size = 8M
Thay đổi giá trị của nó thành 20MB như được hiển thị.
Mã:
post_max_size = 20M
Tìm dòng sau.
Mã:
cgi.fix_pathinfo=1
Bỏ chú thích bằng cách xóa dấu chấm phẩy và thay đổi giá trị của nó thành 0.
Mã:
cgi.fix_pathinfo=0
Lưu tệp bằng cách nhấnCtrl + X và nhập Y khi được nhắc.

Khởi động lại quy trình PHP-fpm.
Mã:
$ sudo systemctl restart php8.0-fpm

Cấu hình Nginx​

Tạo và mở tệp /etc/nginx/conf.d/suitecrm.conf để chỉnh sửa.
Mã:
$ sudo nano /etc/nginx/conf.d/suitecrm.conf
Dán mã sau vào đó.
Mã:
máy chủ { lắng nghe 443 ssl http2; lắng nghe [::]:443 ssl http2; tên máy chủ suitecrm.example.com; gốc /var/www/suitecrm; nhật ký lỗi /var/log/nginx/suitecrm.error.log; nhật ký truy cập /var/log/nginx/suitecrm.access.log; kích thước thân máy tối đa của máy khách là 20M; chỉ mục index.php index.html index.htm; chứng chỉ ssl /etc/letsencrypt/live/suitecrm.example.com/fullchain.pem; khóa chứng chỉ ssl /etc/letsencrypt/live/suitecrm.example.com/privkey.pem; chứng chỉ ssl đáng tin cậy /etc/letsencrypt/live/suitecrm.example.com/chain.pem; thời gian chờ phiên ssl 5 phút; ssl_session_cache được chia sẻ: MozSSL: 10m; ssl_session_tickets tắt; ssl_protocols TLSv1.2 TLSv1.3; ssl_prefer_server_ciphers bật; 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 bật; ssl_stapling_verify bật; ssl_dhparam /etc/ssl/certs/dhparam.pem; location / { # thử phục vụ tệp trực tiếp, chuyển sang app.php try_files $uri /index.php$is_args$args; } location ~ \.php$ { # try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; # LƯU Ý: Bạn phải có "cgi.fix_pathinfo = 0;" trong php.ini fastcgi_pass unix:/var/run/php/php8.0-fpm.sock; #Lưu ý: Nếu bạn cài đặt SuiteCRM trên máy chủ iRedMail, bạn nên sử dụng socket TCP thay thế. #fastcgi_pass 127.0.0.1:9999 fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; fastcgi_buffer_size 128k; fastcgi_buffers 256 16k; fastcgi_busy_buffers_size 256k; fastcgi_temp_file_write_size 256k; } # Không ghi nhật ký vị trí favicon = /favicon.ico { log_not_found tắt; access_log tắt; } # Không ghi nhật ký vị trí robot = /robots.txt { access_log tắt; log_not_found tắt; } # Từ chối mọi nỗ lực truy cập các tệp/thư mục ẩn như .htaccess, .htpasswd, .DS_Store (Mac), v.v... location ~ /\. { deny all; access_log tắt; log_not_found tắt; } # Thời gian lưu trữ bộ nhớ đệm trình duyệt dài có thể tăng tốc các lần truy cập lặp lại vào vị trí trang của bạn ~* \.(jpg|jpeg|gif|png|webp|svg|woff|woff2|ttf|css|js|ico|xml)$ { access_log off; log_not_found off; expires 360d; }}# thực thi HTTPSserver { listen 80; listen [::]:80; server_name suitecrm.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 sau khi hoàn tất.

Mở tệp /etc/nginx/nginx.conf để chỉnh sửa.
Mã:
$ sudo nano /etc/nginx/nginx.conf
Thêm dòng sau 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.

Xác minh cú pháp tệp cấu hình Nginx.
Mã:
$ sudo nginx -tnginx: tệp cấu hình /etc/nginx/nginx.conf cú pháp ổnnginx: tệp cấu hình /etc/nginx/nginx.conf kiểm tra thành công
Khởi động lại dịch vụ Nginx để kích hoạt cấu hình mới.
Mã:
$ sudo systemctl restart nginx

Bước 8 - Cài đặt và cấu hình SuiteCRM​

Mở trang web https://suitecrm.example.com trong trình duyệt và bạn sẽ thấy trình hướng dẫn thiết lập.



Đánh dấu vào ô Tôi chấp nhận và nhấp vào nút Tiếp theo để tiếp tục. Bạn sẽ thấy màn hình kiểm tra các yêu cầu cài đặt trước.



Nếu mọi thứ đều ổn, hãy nhấp vào nút Tiếp theo để tiếp tục.



Nhập thông tin xác thực cơ sở dữ liệu được đặt ở bước 3. Nhập localhost làm Tên máy chủ. Ngoài ra, hãy nhập thông tin chi tiết cho tài khoản quản trị viên và nhập https://suitecrm.example.com làm URL phiên bản.

Bạn có thể định cấu hình các cài đặt bổ sung như dữ liệu demo, cài đặt máy chủ SMTP, thương hiệu, ngôn ngữ hệ thống, bảo mật và cài đặt cơ sở dữ liệu.

Để bật cài đặt SMTP, hãy mở rộng phần Thông số kỹ thuật máy chủ SMTP của trang và điền vào các giá trị thích hợp. Nếu bạn đang sử dụng Gmail hoặc Microsoft Exchange, bạn có thể sử dụng các nút chuyên dụng để cấu hình chúng.Đối với hướng dẫn của chúng tôi, chúng tôi đang sử dụng Amazon SES.



Ngoài ra, hãy thiết lập cài đặt ngôn ngữ hệ thống.



Sau khi hoàn tất, hãy nhấp vào nút Tiếp theo ở cuối trang để tiếp tục. Bạn sẽ được cung cấp thông tin chi tiết về quá trình hoàn tất cấu hình của SuiteCRM.



Nhấp vào nút Tiếp theo để tiếp tục. Bạn sẽ được cung cấp trang đăng nhập.



Nhập thông tin xác thực của tài khoản quản trị viên và nhấp vào Đăng nhập để mở bảng điều khiển SuiteCRM.



Bạn có thể bắt đầu sử dụng SuiteCRM để quản lý dữ liệu doanh nghiệp và khách hàng của mình.

Bước 9 - Thiết lập Cron Jobs​

SuiteCRM cần cron jobs để hoạt động bình thường. Chỉnh sửa tệp crontab của người dùng nginx.
Mã:
$ sudo crontab -e -u nginx
Thêm dòng sau vào cuối tệp.
Mã:
* * * * * cd /var/www/suitecrm; php -f cron.php > /dev/null 2>&1
Lưu và đóng tệp.

Kết luận​

Đây là kết thúc hướng dẫn cài đặt SuiteCRM bằng máy chủ Nginx với Let's Encrypt SSL trên Ubuntu 22.04. 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