Cách cài đặt SuiteCRM với Nginx trên CentOS 7

theanh

Administrator
Nhân viên
SuiteCRM là phần mềm CRM (Quản lý quan hệ khách hàng) mã nguồn mở dựa trên PHP. Đây là nhánh của phần mềm CRM phổ biến SugarCRM và đã trở nên phổ biến hơn sau khi nhóm đằng sau quyết định dừng phát triển phiên bản miễn phí. SuiteCRM đã được đề cử là phần mềm CRM mã nguồn mở tốt nhất tại BOSSIE 2015 và 2016.

Trong hướng dẫn này, chúng tôi sẽ chỉ cho bạn cách cài đặt và cấu hình SuiteCRM bằng Nginx làm máy chủ Web. Phần mềm CRM sẽ chạy dưới ngăn xếp LEMP với HTTPS được bật. Và vì mục đích này, chúng ta sẽ sử dụng CentOS 7 làm hệ điều hành chính.

Những gì chúng ta sẽ làm​

  1. Cài đặt máy chủ Web Nginx
  2. Cài đặt và cấu hình PHP-FPM
  3. Cài đặt và cấu hình MariaDB
  4. Tải xuống và cấu hình SuiteCRM
  5. Cài đặt SuiteCRM thông qua trình cài đặt Web
  6. Cấu hình cuối cùng

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

  • Máy chủ CentOS 7
  • Quyền root

Bước 1 - Cài đặt máy chủ Web Nginx​

Bước đầu tiên chúng ta phải thực hiện là kết nối máy chủ và cài đặt ngăn xếp cơ bản cho SuiteCRM. Kết nối với máy chủ thông qua SSH bằng lệnh sau:
Mã:
ssh [emailprotected]
Sau khi kết nối với tư cách là người dùng root, chúng ta cần cài đặt kho lưu trữ của bên thứ ba trên hệ thống của mình. Cụ thể, chúng ta cần cài đặt kho lưu trữ EPEL (Extra Package for Enterprise Linux) trên hệ thống trước khi cài đặt Nginx.

Cài đặt kho lưu trữ EPEL bằng lệnh yum theo cách sau:
Mã:
yum -y install epel-release
Bây giờ chúng ta có thể cài đặt máy chủ web Nginx trên hệ thống.
Mã:
yum -y install nginx
Nếu quá trình cài đặt hoàn tất, hãy khởi động dịch vụ và cho phép dịch vụ chạy tự động khi khởi động bằng lệnh systemctl như hiển thị bên dưới.
Mã:
systemctl start nginx
systemctl enable nginx
Máy chủ web Nginx hiện đã được cài đặt và theo mặc định, nó đang chạy trên cổng 80. Kiểm tra bằng lệnh netstat hoặc curl.
Mã:
netstat -plntu
curl -I localhost
Đảm bảo cổng 80 ở trạng thái 'LISTEN' và lệnh curl cung cấp mã trạng thái HTTP 200 trong đầu ra của nó.


Bước 2 - Cài đặt và cấu hình PHP-FPM​

Trong bước này, chúng ta sẽ cài đặt và cấu hình PHP-FPM phiên bản 7 trên máy chủ CentOS 7. Theo mặc định, centOS không cung cấp kho lưu trữ cho phiên bản PHP 7 mới. Vì vậy, chúng ta cần thêm một kho lưu trữ khác để cài đặt PHP-FPM 7.

Thêm kho lưu trữ PHP 7 mới 'webtatic' vào hệ thống bằng lệnh rpm.
Mã:
sudo rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
Bây giờ hãy cài đặt các gói và tiện ích mở rộng PHP 7 bằng lệnh yum như được hiển thị bên dưới.
Mã:
sudo yum install -y php71w-fpm php71w-cli php71w-common php71w-imap php71w-gd php71w-mbstring php71w-mcrypt php71w-mysql php71w-xml
Nếu quá trình cài đặt hoàn tất, hãy chỉnh sửa tệp cấu hình 'php.ini' mặc định bằng vim.
Mã:
vim /etc/php.ini
Thay đổi kích thước tệp tải lên tối đa cho cài đặt SuiteCRM thành 100MB. Ít nhất, SuiteCRM cần nhiều hơn 6MB.
Mã:
upload_max_filesize = 100M
Bỏ chú thích dòng CGI sau và thay đổi giá trị thành 0.
Mã:
cgi.fix_pathinfo=0
Đối với cấu hình đường dẫn phiên, hãy bỏ chú thích dòng đó và thay đổi đường dẫn thành '/var/lib/session' như hiển thị bên dưới.
Mã:
session.save_path = "/var/lib/php/session"
Vậy là xong. Lưu các thay đổi và thoát khỏi vim.

Bây giờ, hãy tạo một thư mục mới cho đường dẫn phiên và thay đổi quyền sở hữu của thư mục thành người dùng và nhóm 'nginx'.
Mã:
mkdir -p /var/lib/php/session
chown -R nginx:nginx /var/lib/php/session
Tiếp theo, chúng ta cần chỉnh sửa cấu hình php-fpm. Để thực hiện, hãy vào thư mục '/etc/php-fpm.d' và chỉnh sửa tệp cấu hình www.conf.
Mã:
cd /etc/php-fpm.d/
vim www.conf
Bây giờ hãy đổi dòng người dùng và nhóm thành 'nginx'.
Mã:
user = nginx
group = nginx
Thay vì sử dụng cổng hệ thống, PHP-FPM sẽ chạy dưới tệp socket unix.

Thay đổi dòng 'listen':
Mã:
listen = /var/run/php-fpm/php-fpm.sock
Đặt quyền cho tệp socket Unix và quyền sở hữu tệp socket như hiển thị bên dưới.
Mã:
listen.owner = nginx
listen.group = nginx
listen.mode = 0660
Vậy là xong. Lưu các thay đổi và thoát khỏi trình soạn thảo.

Bây giờ hãy khởi động dịch vụ PHP-FPM và thêm nó để tự động khởi động khi khởi động.
Mã:
systemctl start php-fpm
systemctl enable php-fpm
Với lệnh này, PHP-FPM đã được cài đặt và chạy tệp socket.

Bạn có thể kiểm tra điều này bằng lệnh netstat:
Mã:
netstat -pl | grep php
Hãy đảm bảo rằng bạn thấy tệp php-fpm.sock.


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

Trong bước này, chúng ta sẽ cài đặt MariaDB, sau đó khởi động và cho phép nó khởi chạy mọi lúc khi khởi động hệ thống. Và cuối cùng, chúng ta sẽ tạo cơ sở dữ liệu và người dùng mới để cài đặt SuiteCRM.

Cài đặt mariadb từ kho lưu trữ CentOS bằng lệnh yum sau.
Mã:
yum install -y mariadb mariadb-server
Khởi động dịch vụ MariaDB và cho phép nó khởi chạy thời gian khởi động bằng các lệnh bên dưới.
Mã:
systemctl start mariadb
systemctl enable mariadb
Vậy là MariaDB đã được cài đặt và chạy. Bây giờ, chúng ta cần cấu hình mật khẩu gốc bằng lệnh 'mysql_secure_installation'.
Mã:
mysql_secure_installation
Bạn sẽ được hỏi về cấu hình, nhập 'Y' và nhấn 'Enter'.
Mã:
Đặt mật khẩu gốc? [Y/n] Y
 Mật khẩu mới:
 Nhập lại mật khẩu mới:
 
 Xóa người dùng ẩn danh? [Y/n] Y
 Không cho phép đăng nhập gốc từ xa? [Y/n] Y
 Xóa cơ sở dữ liệu thử nghiệm và truy cập vào cơ sở dữ liệu đó? [Y/n] Y
 Tải lại bảng đặc quyền ngay bây giờ? [Y/n] Y
Vậy là mật khẩu gốc MariaDB đã được cấu hình.

Tiếp theo, chúng ta cần tạo một cơ sở dữ liệu mới và một người dùng mới để cài đặt SuiteCRM. Để thực hiện, hãy đăng nhập vào shell MySQL bằng người dùng 'root' và mật khẩu của bạn.
Mã:
mysql -u root -p
Tạo một cơ sở dữ liệu mới có tên 'suitecrm_db' và một người dùng mới 'crmadmin' với mật khẩu 'hakase-labs123'. Tất cả những điều này có thể được thực hiện bằng cách sử dụng các truy vấn mysql bên dưới.
Mã:
CREATE DATABASE suitecrm_db;
CREATE USER 'crmadmin'@'localhost' IDENTIFIED BY 'hakase-labs123';
GRANT ALL PRIVILEGES ON suitecrm_db.* TO 'crmadmin'@'localhost';
FLUSH PRIVILEGES;
Vậy là cấu hình cơ sở dữ liệu để cài đặt SuiteCRM đã hoàn tất.


Bước 4 - Tải xuống và cấu hình SuiteCRM​

Trong bước này, chúng ta sẽ thực hiện một số tác vụ để cài đặt SuiteCRM. Chúng ta sẽ tải xuống mã nguồn SuiteCRM, cấu hình Firewalld, Tạo SSL Letsencrypt mới và cấu hình máy chủ ảo nginx cho SuiteCRM. Vậy chúng ta hãy bắt đầu.

Tải xuống SuiteCRM​

Nếu chưa cài đặt, hãy cài đặt git trên hệ thống của bạn bằng lệnh yum bên dưới.
Mã:
yum -y install git
Bây giờ hãy đến thư mục '/opt' và tải xuống mã SuiteCRM bằng lệnh git như được hiển thị bên dưới.
Mã:
cd /opt/
git clone https://github.com/salesagility/SuiteCRM.git suitecrm


Sau đó, tạo một thư mục bộ đệm, thay đổi quyền cho một số tệp và thư mục trong thư mục suitecrm, sau đó thay đổi chủ sở hữu của tất cả mã suitecrm thành người dùng và nhóm 'nginx'.
Mã:
cd /opt/suitecrm
mkdir -p /opt/suitecrm/cache
chmod -R 775 cache custom modules themes data upload config_override.php
chown nginx:nginx -R /opt/suitecrm
Vì vậy, mã suiteCRM đã được tải xuống máy chủ tại thư mục '/opt/suitecrm/'.


Cấu hình Firewalld​

Nếu bạn không chạy Firewalld trên máy chủ của mình, hãy cài đặt nó bằng lệnh sau.
Mã:
yum -y install firewalld
Khởi động dịch vụ và cho phép nó chạy khi khởi động.
Mã:
systemctl start firewalld
systemctl enable firewalld
Tiếp theo, chúng ta cần mở các cổng HTTP và HTTPS mới. Nó được sử dụng để truy cập SuiteCRM. Chạy các lệnh firewall-cmd sau cho việc này.
Mã:
firewall-cmd --add-service=http --permanent
firewall-cmd --add-service=https --permanent
Bây giờ hãy tải lại các quy tắc firewalld bằng lệnh sau.
Mã:
firewall-cmd --reload


Vậy là giờ đây, cổng HTTP và HTTPS mới đã được thêm vào Firewalld. Nếu bạn muốn xem cấu hình chi tiết, hãy chạy lệnh bên dưới.
Mã:
firewall-cmd --list-all

Tạo SSL Letsencrypt mới​

Trong hướng dẫn này, chúng ta sẽ sử dụng SSL để truy cập SuiteCRM. Và chúng tôi sẽ sử dụng chứng chỉ SSL miễn phí từ letsencrypt cho mục đích đó.

Để tạo chứng chỉ SSL letsencrypt mới, trước tiên chúng ta cần cài đặt công cụ lệnh letsencrypt 'certbot' vào hệ thống của mình. Công cụ này có sẵn trong kho lưu trữ CentOS. Cài đặt certbot bằng lệnh yum sau.
Mã:
yum -y install certbot
Khi quá trình cài đặt certbot hoàn tất, hãy tạo tệp chứng chỉ SSL cho tên miền suiteCRM 'suitecrm.hakase-labs.co'.

Chạy lệnh bên dưới để tạo tệp chứng chỉ SSL.
Mã:
certbot certonly --standalone -d suitecrm.hakase-labs.co
Bạn sẽ được hỏi về địa chỉ email để gia hạn thông báo - hãy nhập email của bạn và nhấn Enter để tiếp tục.

Đối với TOS của Letsencrypt, hãy nhập 'A' để đồng ý và nhấn Enter một lần nữa. Và đối với truy vấn chia sẻ địa chỉ email, hãy nhập 'N' và nhấn Enter.



Khi quá trình tạo chứng chỉ hoàn tất, bạn sẽ nhận được kết quả như bên dưới.



Các tệp chứng chỉ mới được tạo trong thư mục '/etc/letsencrypt/live/domain.com'.

Cấu hình máy chủ ảo SuiteCRM Nginx​

Đi tới thư mục cấu hình Nginx '/etc/nginx' và tạo tệp suitecrm.conf mới trong thư mục conf.d bằng trình soạn thảo Vim.
Mã:
cd /etc/nginx/
vim conf.d/suitecrm.conf
Ở đó, dán máy chủ ảo SuiteCRM Nginx bên dưới.
Mã:
 # Cấu hình máy chủ - hakase-labs
 server {
 listen 80;
 server_name suitecrm.hakase-labs.co;
 
 # Tự động chuyển hướng đến HTTPS
 return 301 https://$host$request_uri;
 }
 
 # Nginx SSL cho SuiteCRM
 server {
 
 server_name suitecrm.hakase-labs.co;
 
 # Bật http2
 listen 443 http2 ssl;
 
 # Cấu hình SSL
 ssl_certificate /etc/letsencrypt/live/suitecrm.hakase-labs.co/fullchain.pem;
 ssl_certificate_key /etc/letsencrypt/live/suitecrm.hakase-labs.co/privkey.pem;
 ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
 ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:ECDHE-RSA-AES128-GCM-SHA256:AES256+EECDH:DHE-RSA-AES128-GCM-SHA256:AES256+EDH:ECDHE-RSA-AES256-GCM-SHA384 :DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES25 6-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384 :AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4"; 
 
 client_max_body_size 50M;
 
 index index.php index.html index.htm;
 root /opt/suitecrm;
 
 location / {
 root /opt/suitecrm;
 index index.php index.html index.htm;
 }
 
 error_page 500 502 503 504 /50x.html;
 error_log /var/log/nginx/suitecrm.irsyadf.me.error.log;
 
 location = /50x.html {
 root /usr/share/nginx/html;
 }
 
 ## Hình ảnh và nội dung tĩnh được xử lý khác nhau
 location ~* ^.+\.(jpg|jpeg|gif|css|png|js|ico|xml|svg|wgoff2)$ {
 access_log off;
 expires max;
 root /opt/suitecrm;
 }
 
 location ~ \.php$ {
 try_files $uri =404;
 fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
 fastcgi_index index.php;
 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
 include fastcgi_params;
 }
 
 location ~ /\.ht {
 deny all;
 }
 
 }
Vậy là xong. Lưu thay đổi và thoát Vim.

Bây giờ hãy kiểm tra cấu hình nginx và đảm bảo không có lỗi. Sau khi hoàn tất, hãy khởi động lại dịch vụ.
Mã:
nginx -t
systemctl restart nginx
Với lệnh này, cấu hình nginx để cài đặt SuiteCRM đã hoàn tất.


Bước 5 - Trình cài đặt web SuiteCRM​

Mở trình duyệt web của bạn và truy cập tên miền SuiteCRM: 'suitecrm.hakase-labs.co'.

Bạn sẽ được chuyển hướng đến kết nối HTTPS install.php và bạn sẽ nhận được trang về Giấy phép GNU AFFERO. Đánh dấu vào ô 'Tôi chấp nhận' và nhấp vào 'Tiếp theo'.



Trên trang môi trường hệ thống, hãy đảm bảo rằng tất cả các kết quả đều 'OK'.



Và nhấp vào 'Tiếp theo' để tiếp tục.

Tiếp theo là cấu hình quản trị và cơ sở dữ liệu. Nhập thông tin cơ sở dữ liệu của bạn, chẳng hạn như dbname, dbuser và dbpassword. Đối với cấu hình quản trị, hãy nhập tên người dùng, email và mật khẩu của bạn.



Cuộn xuống dưới cùng và nhấp vào 'Tiếp theo' để tiếp tục cài đặt SuiteCRM.

Chờ một lát, khi quá trình cài đặt hoàn tất, bạn sẽ được chuyển hướng đến trang đăng nhập như hiển thị bên dưới.



Trên trang này, hãy nhập tên người dùng và mật khẩu quản trị, sau đó nhấn nút 'Đăng nhập'.

Và bạn sẽ nhận được Bảng điều khiển SuiteCRM như hiển thị bên dưới.



Vậy là SuiteCRM đã được cài đặt.

Bước 6 - Cấu hình cuối cùng​

Trong bước cuối cùng này, chúng ta cần thêm cấu hình vào cronjob.

Về cơ bản, chúng ta cần tạo cron mới với tư cách là người dùng và nhóm nginx.
Mã:
sudo crontab -e -u nginx
Và dán cấu hình sau.
Mã:
* * * * * cd /opt/suitecrm; php -f cron.php > /dev/null 2>&1
Lưu và thoát.

Vậy là xong. Quá trình cài đặt SuiteCRM với máy chủ web Nginx trên CentOS 7 đã hoàn tất.

Tham khảo​

 
Back
Bên trên