Cách cài đặt SuiteCRM với Nginx và SSL miễn phí Let’s Encrypt trên Ubuntu 22.04
SuiteCRM là một giải pháp quản lý quan hệ khách hàng mã nguồn mở được viết bằng PHP. Đó 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 của nó. Nó được sử dụng để tạo một 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 để nâng cao 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ý theo lãnh thổ, Phân đoạn, Tự động hóa tiếp thị, Chứng chỉ 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 trên thiết bị 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ẽ học 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 rằng mọi thứ đều được cập nhật.
$ sudo apt update $ sudo apt upgrade
-
Vài gói mà hệ thống của bạn cần.
$ 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 – Định cấu hình tường lửa
Bước đầu tiên là cấu hình tường lửa. Ubuntu đi kèm với ufw (Tường lửa không phức tạp) theo mặc định.
Kiểm tra xem tường lửa có đang chạy không.
$ sudo ufw status
Bạn sẽ nhận được kết quả sau.
Status: inactive
Cho phép cổng SSH để tường lửa không phá vỡ kết nối hiện tại khi bật nó.
$ sudo ufw allow OpenSSH
Cho phép cả cổng HTTP và HTTPS.
$ sudo ufw allow http
$ sudo ufw allow https
Bật tường lửa
$ sudo ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup
Kiểm tra lại trạng thái của tường lửa.
$ sudo ufw status
Bạn sẽ thấy một kết quả tương tự.
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
80/tcp ALLOW Anywhere
443 ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
80/tcp (v6) ALLOW Anywhere (v6)
443 (v6) ALLOW Anywhere (v6)
Bước 2 – Cài đặt Nginx
Ubuntu xuất xưởng 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ữ chính thức của Nginx.
Nhập khóa ký của Nginx.
$ 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.
$ 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 hệ thống.
$ sudo apt update
Cài đặt Nginx.
$ sudo apt install nginx
Xác minh cài đặt.
$ nginx -v
nginx version: nginx/1.20.2
Bật dịch vụ Nginx.
$ sudo systemctl enable nginx
Bước 3 – Cài đặt và cấu hình MariaDB
Ubuntu 22.04 đi kèm với v10.6.7 của MariaDB. Chạy lệnh sau để cài đặt nó.
$ sudo apt install mariadb-server
Bảo mật cài đặt MariaDB.
$ sudo mysql_secure_installation
Bạn sẽ phải đối mặt với nhiều lời nhắc. Trả lời chúng như sau.
Enter current password for root (enter for none): Press Enter
Switch to unix_socket authentication [Y/n] Type y
Change the root password? [Y/n] Type n
Remove anonymous users? [Y/n] Type y
Disallow root login remotely? [Y/n] Type y
Remove test database and access to it? [Y/n] Type y
Reload privilege tables now? [Y/n] Type y
Kết nối với vỏ MariaDB bằng lệnh sau.
$ sudo mysql
Tạo cơ sở dữ liệu mới cho SuiteCRM.
$ CREATE DATABASE suitecrm;
Tạo một người dùng cơ sở dữ liệu mới và sử dụng mật khẩu mạnh cho t.
$ CREATE USER 'suitecrmuser'@'localhost' identified by 'yourpassword';
Cấp quyền trên cơ sở dữ liệu cho người dùng. Quảng cáo
$ GRANT ALL PRIVILEGES ON suitecrm.* TO 'suitecrmuser'@'localhost';
Xóa tất cả các đặc quyền.
$ FLUSH PRIVILEGES;
Thoát khỏi trình bao MySQL.
$ exit
Bước 4 – Cài đặt PHP và các phần mở rộng
Ubuntu 22.04 chạy với PHP 8.1 chưa được hỗ trợ bởi SuiteCRM. Chúng ta cần cài đặt PHP 8.0. Để làm được điều đó, chúng ta cần thêm kho lưu trữ PHP của Ondrej.
$ sudo add-apt-repository ppa:ondrej/php
Tiếp theo, cài đặt PHP và các phần mở rộng của nó theo yêu cầu của SuiteCRM.
$ 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.
$ php --version
PHP 8.0.18 (cli) (built: May 1 2022 04:42:09) ( NTS )
Copyright (c) The PHP Group
Zend Engine v4.0.18, Copyright (c) Zend Technologies
with Zend OPcache v8.0.18, Copyright (c), by 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 khoảng 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.
$ wget -O suitecrm.zip https://suitecrm.com/files/147/SuiteCRM-7.12/614/SuiteCRM-7.12.5.zip
Tạo một 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ặt.
$ sudo mkdir -p /var/www/
Giải nén kho lưu trữ zip đã tải xuống.
$ sudo unzip suitecrm.zip -d /var/www/
Cờ -d
chỉ định thư mục đích cho kho lưu trữ.
Nó sẽ được lưu trong thư mục /var/www/SuiteCRM-7.12.5/
. Chúng tôi đổi tên nó để làm cho nó đơn giản hơn.
$ sudo mv /var/www/SuiteCRM-7.12.5/ /var/www/suitecrm
Chuyển sang thư mục gốc.
$ cd /var/www/suitecrm
Đặt quyền sở hữu và quyền chính xác cho các thư mục khác nhau.
$ 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à định cấu hình SSL
Trước khi định 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 việc đó.
Cài đặt trình cài đặt Snap.
$ sudo apt install snapd
Đảm bảo rằng phiên bản Snapd của bạn được cập nhật.
$ sudo snap install core
$ sudo snap refresh core
Cài đặt Certbot.
$ 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 một liên kết tượng trưng đến thư mục /usr/bin
.
$ 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.
$ sudo systemctl stop nginx
Tạo chứng chỉ SSL.
$ sudo certbot certonly --standalone --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d suitecrm.example.com
Lệnh trên sẽ tải chứng chỉ xuống thư /etc/letsencrypt/live/suitecrm.example.com
trên máy chủ của bạn.
Tạo chứng chỉ nhóm Diffie-Hellman .
$ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 4096
Tạo thư mục gốc web thử thách cho tính năng tự động gia hạn Let’s Encrypt.
$ sudo mkdir -p /var/lib/letsencrypt
Tạo Công việc Cron để 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. Đối với điều đó, trước tiên, hãy tạo tệp /etc/cron.daily/certbot-renew
và mở nó để chỉnh sửa.
$ sudo nano /etc/cron.daily/certbot-renew
Dán đoạn mã sau.
#!/bin/sh
certbot 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 các quyền trên tệp tác vụ để tệp có thể thực thi được.
$ sudo chmod +x /etc/cron.daily/certbot-renew
Bước 7 – Định cấu hình Nginx và PHP
Định cấu hình PHP-FPM
Mở tệp /etc/php/8.0/fpm/pool.d/www.conf
.
$ sudo nano /etc/php/8.0/fpm/pool.d/www.conf
Chúng ta cần đặt người dùng Unix / nhóm các quy trình PHP thành nginx . Tìm dòng user=www-data
và group=www-data
trong tệp và thay đổi chúng thành nginx
.
...
; 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-data
và listen.group=www-data
trong tệp và thay đổi chúng thành nginx
.
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.
Định 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.
$ sudo nano /etc/php/8.0/fpm/php.ini
Tìm dòng sau.
upload_max_filesize = 2M
Thay đổi giá trị của nó thành 20MB như được hiển thị.
upload_max_filesize = 20M
Tìm dòng sau.
post_max_size = 8M
Thay đổi giá trị của nó thành 20MB như được hiển thị.
post_max_size = 20M
Tìm dòng sau.
;cgi.fix_pathinfo=1
Bỏ ghi chú bằng cách bỏ dấu chấm phẩy và thay đổi giá trị của nó thành 0.
cgi.fix_pathinfo=0
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.
$ sudo systemctl restart php8.0-fpm
Định cấu hình Nginx
Tạo và mở tệp /etc/nginx/conf.d/suitecrm.conf
để chỉnh sửa.
$ sudo nano /etc/nginx/conf.d/suitecrm.conf
Dán đoạn mã sau vào đó.
máy chủ {nghe 443 ssl http2; nghe [::]: 443 ssl http2; server_name suitecrm.example.com; root / var / www / suitecrm; error_log /var/log/nginx/suitecrm.error.log; access_log /var/log/nginx/suitecrm.access.log; khách_hàng tối_đa 20M; index index.php index.html index.htm; ssl_certificate /etc/letsencrypt/live/suitecrm.example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/suitecrm.example.com/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/suitecrm.example.com/chain.pem; ssl_session_timeout 5m; ssl_session_cache đã chia sẻ: MozSSL: 10m; tắt ssl_session_tickets; ssl_protocols TLSv1.2 TLSv1.3; ssl_prefer_server_ciphers trên; ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256: ECDHE-RSA-AES128-GCM-SHA256: ECDHE-ECDSA-AES256-GCM-SHA384: ECDHE-RSA-AES256-GCM-RSA-AES128-GCM-SHA256: ECDHE-ECDSA-AES256-GCM-SHA384: ECDHE-RSA-AES256-GCM-SHACHA205: ECD -RSA-CHACHA20-POLY1305: DHE-RSA-AES128-GCM-SHA256: DHE-RSA-AES256-GCM-SHA384; ssl_ecdh_curve X25519: prime256v1: secp384r1: secp521r1; ssl_stapling trên; ssl_stapling_verify trên; ssl_dhparam /etc/ssl/certs/dhparam.pem; location / {# cố gắng cung cấp tệp trực tiếp, dự phòng cho app.php try_files $ uri /index.php$is_args$args; } vị trí ~ .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 cổng TCP thay thế. #fastcgi_pass 127.0.0.1:9999 fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $ document_root $ fastcgi_script_name; bao gồm fastcgi_params; fastcgi_bánh_giá 128k;fastcgi_bạc 256 16k; fastcgi_bình_chính_hình 256k; fastcgi_temp_file_write_size 256k; } # Don't log favicon location = /favicon.ico {log_not_found off; tắt access_log; } # Don't log robots location = /robots.txt {access_log off; log_not_found tắt; } # Từ chối mọi nỗ lực truy cập vào các tệp / thư mục ẩn như .htaccess, .htpasswd, .DS_Store (Mac), v.v. ... vị trí ~ / . { Phủ nhận tất cả; tắt access_log; log_not_found tắt; } # Tuổi thọ dài của bộ nhớ cache của trình duyệt có thể tăng tốc độ 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 tắt; log_not_found tắt; hết hạn 360đ; }} # thực thi máy chủ HTTPS {nghe 80; nghe [::]: 80; server_name suitecrm.example.com; trả về 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.
$ sudo nano /etc/nginx/nginx.conf
Thêm dòng sau vào trước dòng include /etc/nginx/conf.d/*.conf;
.
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.
$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Khởi động lại dịch vụ Nginx để kích hoạt cấu hình mới.
$ sudo systemctl restart nginx
Bước 8 – Cài đặt và cấu hình SuiteCRM
Mở trang https://suitecrm.example.com
trong trình duyệt và bạn sẽ thấy trình hướng dẫn cài đặt.
Đánh dấu vào hộp 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 đã đặt ở bước 3. Nhập localhost
làm Tên máy chủ . Ngoài ra, hãy nhập 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 để định 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 đặt 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 thành cấu hình của SuiteCRM.
Nhấp vào nút Tiếp theo để tiếp tục. Bạn sẽ thấy trang đăng nhập.
Nhập thông tin đăng nhập tài khoản quản trị viên và nhấp vào Đăng nhập để mở trang tổng quan 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 các công việc cron để hoạt động bình thường. Chỉnh sửa tệp crontab của người dùng nginx
.
$ sudo crontab -e -u nginx
Thêm dòng sau vào cuối tệp.
* * * * * cd /var/www/suitecrm; php -f cron.php > /dev/null 2>&1
Lưu và đóng tập tin.
Sự kết luận
Phần này 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 gửi chúng trong phần bình luận bên dưới.