UVdesk là hệ thống tổng đài trợ giúp mã nguồn mở dựa trên Saas dành cho các công ty để tương tác với khách hàng và cung cấp hỗ trợ 24/7. Các tính năng của hệ thống bao gồm quản lý phiếu, hỗ trợ cơ sở kiến thức, trả lời có sẵn và tạo phiếu tự động dựa trên email. Khả năng của Uvdesk có thể được mở rộng bằng các mô-đun bên ngoài. Bạn có thể tự động hóa một số hành động dựa trên các kích hoạt cụ thể để cải thiện quy trình làm việc của mình.
Trong hướng dẫn này, bạn sẽ tìm hiểu cách cài đặt Uvdesk trên máy chủ chạy Rocky Linux 8 bằng Nginx, MySQL và PHP.
[*]
Cài đặt các gói tiện ích cơ bản. Một số trong số chúng có thể đã được cài đặt.
Tường lửa hoạt động với các vùng khác nhau và vùng công cộng là vùng mặc định mà chúng tôi 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.
Nó sẽ hiển thị đầu ra sau.
Cho phép các cổng HTTP và HTTPS.
Kiểm tra lại trạng thái của tường lửa.
Bạn sẽ thấy kết quả tương tự.
Tải lại tường lửa để kích hoạt các thay đổi.
Tạo và mở tệp /etc/yum.repos.d/nginx.repo để tạo kho lưu trữ Nginx chính thức.
Dán mã sau vào đó.
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.
Cài đặt Nginx.
Xác minh cài đặt.
Kích hoạt dịch vụ Nginx.
Tiếp theo, cài đặt kho lưu trữ Remi.
Kiểm tra các luồng PHP khả dụng.
Phiên bản mặc định là 7.2. Kích hoạt kho lưu trữ PHP 8.0 của Remi.
Tiếp theo, cài đặt PHP và các tiện ích mở rộng theo yêu cầu của UVDesk.
Xác minh cài đặt.
Cài đặt MySQL.
Bật và khởi động dịch vụ MySQL.
Cài đặt MySQL an toàn.
Đối với bước đầu tiên, bạn sẽ được hỏi xem bạn có muốn thiết lập Plugin Xác thực mật khẩu hay không, plugin này có thể sử dụng để kiểm tra độ mạnh của mật khẩu MySQL. Chọn Y để tiếp tục. Bạn sẽ được yêu cầu chọn mức xác thực mật khẩu ở bước tiếp theo. Chọn 2 là mức mạnh nhất và yêu cầu mật khẩu của bạn phải dài ít nhất tám ký tự và bao gồm cả chữ hoa, chữ thường, số và ký tự đặc biệt.
Bạn sẽ được yêu cầu chọn mật khẩu gốc ở bước tiếp theo. Chọn mật khẩu mạnh đáp ứng các yêu cầu của plugin xác thực mật khẩu. Ở bước tiếp theo, bạn sẽ được hỏi có muốn tiếp tục với mật khẩu đã chọn hay không. Nhấn y để tiếp tục.
Nhấn Y rồi nhấn phím ENTER cho tất cả các lời nhắc sau để xóa người dùng ẩn danh và cơ sở dữ liệu thử nghiệm, vô hiệu hóa đăng nhập gốc và tải các quy tắc mới được đặt.
Vào shell MySQL. Nhập mật khẩu gốc của bạn để tiếp tục.
Tạo người dùng uvdesk. Đảm bảo mật khẩu đáp ứng các yêu cầu đã đặt trước đó.
Tạo cơ sở dữ liệu uvdeskdb.
Cấp quyền cho người dùng trên cơ sở dữ liệu uvdeskdb.
Thoát khỏi Shell.
Giải nén tệp đã tải xuống.
Di chuyển thư mục đã giải nén đến vị trí /var/www/uvdesk.
Chuyển sang thư mục của UVdesk.
Mở tệp môi trường (.env) để chỉnh sửa.
Tìm dòng APP_ENV=dev và thay đổi thành dòng sau.
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.
Thay đổi quyền sở hữu thư mục gốc thành người dùng Nginx.
Cấu hình SELinux để cho phép kết nối mạng cho UVDesk.
Cài đặt Certbot.
Tạo chứng chỉ SSL.
Lệnh trên sẽ tải xuống chứng chỉ vào thư mục /etc/letsencrypt/live/uvdesk.example.com trên máy chủ của bạn.
Tạo chứng chỉ nhóm Diffie-Hellman.
Tạo thư mục gốc web thử thách để tự động gia hạn Let's Encrypt.
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. Để thực hiện việc đó, trước tiên, hãy tạo tệp /etc/cron.daily/certbot-renew và mở tệp đó để chỉnh sửa.
Dán mã sau.
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.
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.
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.
Bật và khởi động dịch vụ PHP.
Thay đổi nhóm thư mục phiên PHP thành Nginx.
Dán mã sau vào đó.
Lưu ý thư mục gốc được sử dụng trong cấu hình Nginx là /var/www/uvdesk/public/ chứ không phải /var/www/uvdesk/.
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.
Thêm dòng sau trước dòng include /etc/nginx/conf.d/*.conf;.
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.
Khởi động dịch vụ Nginx.
Nhấp vào nút Bắt đầu để bắt đầu quá trình cài đặt. Trình cài đặt sẽ kiểm tra cài đặt PHP và quyền tệp ở trang tiếp theo.
Nhấp Tiến hành để tiếp tục. Bạn sẽ được yêu cầu điền thông tin chi tiết về cơ sở dữ liệu ở trang tiếp theo. Nhập dữ liệu theo cấu hình ở bước 4.
Nhấp Tiến hành để tiếp tục. Tiếp theo, bạn sẽ được yêu cầu tạo tài khoản quản trị viên siêu cấp. Điền thông tin chi tiết của bạn.
Nhấp Tiến hành để tiếp tục. Tiếp theo, bạn sẽ được yêu cầu cấu hình trang web bằng cách đặt tên cho tiền tố Bảng điều khiển thành viên và khách hàng. Các tiền tố này được sử dụng trong URL của trang web.
Nhấp Tiến hành để tiếp tục. Bạn sẽ đến trang cài đặt cuối cùng.
Nhấp Cài đặt ngay để bắt đầu cài đặt. Sau khi hoàn tất, bạn sẽ nhận được màn hình sau.
Bạn có thể truy cập bảng điều khiển quản trị và trang web giao diện thông qua các liên kết được cung cấp. Cài đặt UVDesk của bạn đã sẵn sàng để sử dụng.
Trong hướng dẫn này, bạn sẽ tìm hiểu cách cài đặt Uvdesk trên máy chủ chạy Rocky Linux 8 bằng Nginx, MySQL và PHP.
Điều kiện tiên quyết
-
Máy chủ chạy Rocky Linux 8.
-
Tên miền cho tổng đài trợ giúp trỏ đến máy chủ. Đối với hướng dẫn của chúng tôi, chúng tôi sẽ sử dụng tên miền uvdesk.example.com.
-
Người dùng không phải root có quyền sudo.
-
Đảm bảo mọi thứ được cập nhật.
Mã:
$ sudo dnf update
Cài đặt các gói tiện ích cơ bản. Một số trong số chúng có thể đã được cài đặt.
Mã:
$ sudo dnf install wget curl nano unzip yum-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 --staterunning
Mã:
$ sudo firewall-cmd --permanent --list-services
Mã:
cockpit dhcpv6-client ssh
Mã:
$ sudo firewall-cmd --permanent --add-service=http$ sudo firewall-cmd --permanent --add-service=https
Mã:
$ sudo firewall-cmd --permanent --list-services
Mã:
cockpit dhcpv6-client http https ssh
Mã:
$ sudo firewall-cmd --reload
Bước 2 - Cài đặt Nginx
Rocky Linux được tích hợp sẵn phiên bản Nginx cũ hơn. Bạn cần tải xuống kho lưu trữ Nginx chính thức để cài đặt phiên bản mới nhất.Tạo và mở tệp /etc/yum.repos.d/nginx.repo để tạo kho lưu trữ Nginx chính thức.
Mã:
$ sudo nano /etc/yum.repos.d/nginx.repo
Mã:
[nginx-stable]name=nginx stable repobaseurl=http://nginx.org/packages/centos/$releasever/$basearch/gpgcheck=1enabled=1gpgkey=https://nginx.org/keys/nginx_signing.keymodule_hotfixes=true[nginx-mainline]name=nginx mainline repobaseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/gpgcheck=1enabled=0gpgkey=https://nginx.org/keys/nginx_signing.keymodule_hotfixes=true
Cài đặt Nginx.
Mã:
$ sudo dnf install nginx
Mã:
$ nginx -vphiên bản nginx: nginx/1.20.2
Mã:
$ sudo systemctl enable nginx
Bước 3 - Cài đặt PHP và tiện ích mở rộng
Đối với hướng dẫn, chúng ta cần cài đặt phiên bản PHP mới nhất bằng kho lưu trữ của Remi. Bước đầu tiên là lấy kho lưu trữ Epel.
Mã:
$ sudo dnf install epel-release
Mã:
$ sudo dnf install https://rpms.remirepo.net/enterprise/remi-release-8.rpm
Mã:
$ dnf module list php -yKiểm tra ngày hết hạn siêu dữ liệu gần nhất: 0:00:12 trước vào Thứ sáu, ngày 03 tháng 12 năm 2021 lúc 09:39:32 sáng UTC.Rocky Linux 8 - AppStreamTên Stream Profiles Tóm tắtphp 7.2 [d] common [d], devel, minimal PHP scripting languagephp 7.3 common [d], devel, minimal PHP scripting languagephp 7.4 common [d], devel, minimal PHP scripting languageRemi's Modular repository for Enterprise Linux 8 - x86_64Tên Stream Profiles Tóm tắtphp remi-7.2 common [d], devel, minimal PHP scripting languagephp remi-7.3 common [d], devel, minimal PHP scripting languagephp remi-7.4 common [d], devel, minimal PHP scripting languagephp remi-8.0 common [d], devel, minimal PHP scripting languagephp remi-8.1 common [d], devel, minimal PHP scripting languageGợi ý: [d]efault, [e]nabled, [x]disabled, [i]ninstalled
Mã:
$ sudo dnf module reset php$ sudo dnf module enable php:remi-8.0
Mã:
$ sudo dnf install php-fpm php-mbstring php-xml php-curl php-mysqlnd php-zip php-cli php-intl php-bcmath php-gd php-tokenizer php-imap php-pear php-mailparse
Mã:
$ php --versionPHP 8.0.16 (cli) (xây dựng: 15/02/2022 21:34:32) (NTS gcc x86_64)Bản quyền (c) The PHP GroupZend Engine v4.0.16, Bản quyền (c) Zend Technologies
Bước 4 - Cài đặt và cấu hình MySQL Server
Chúng ta sẽ sử dụng cơ sở dữ liệu MySQL để lưu trữ dữ liệu. Kho lưu trữ Appstream của Rocky Linux đi kèm với phiên bản MySQL mới nhất.Cài đặt MySQL.
Mã:
$ sudo dnf install mysql-server
Mã:
$ sudo systemctl enable mysqld --now
Mã:
$ sudo mysql_secure_installation
Mã:
Bảo mật triển khai máy chủ MySQL.Kết nối với MySQL bằng mật khẩu trống.VALIDATE PASSWORD COMPONENT có thể được sử dụng để kiểm tra mật khẩuvà cải thiện tính bảo mật. Nó kiểm tra độ mạnh của mật khẩuvà cho phép người dùng chỉ đặt những mật khẩuđủ an toàn. Bạn có muốn thiết lập thành phần VALIDATE PASSWORD không?Nhấn y|Y để chọn Có, bất kỳ phím nào khác để chọn Không: YCó ba cấp độ chính sách xác thực mật khẩu:THẤP Chiều dài >= 8TRUNG BÌNH Chiều dài >= 8, số, chữ hoa và chữ thường, và ký tự đặc biệtMẠNH Chiều dài >= 8, số, chữ hoa và chữ thường, ký tự đặc biệt và tệp từ điểnVui lòng nhập 0 = THẤP, 1 = TRUNG BÌNH và 2 = MẠNH: 2
Mã:
Vui lòng đặt mật khẩu cho gốc tại đây.Mật khẩu mới:Nhập lại mật khẩu mới:Ước tính độ mạnh của mật khẩu: 100Bạn có muốn tiếp tục với mật khẩu đã cung cấp không? (Nhấn y|Y để Có, bất kỳ phím nào khác để Không): Y
Mã:
...Xóa người dùng ẩn danh? (Nhấn y|Y để Có, bất kỳ phím nào khác để Không): YThành công....Không cho phép đăng nhập gốc từ xa? (Nhấn y|Y để Có, bất kỳ phím nào khác để Không): YThành công....Xóa cơ sở dữ liệu thử nghiệm và quyền truy cập vào cơ sở dữ liệu đó? (Nhấn y|Y để Có, bất kỳ phím nào khác để Không): Y - Xóa cơ sở dữ liệu thử nghiệm...Thành công. - Xóa quyền trên cơ sở dữ liệu thử nghiệm...Thành công.Tải lại bảng đặc quyền sẽ đảm bảo rằng tất cả các thay đổiđã thực hiện cho đến nay sẽ có hiệu lực ngay lập tức....Tải lại bảng đặc quyền ngay bây giờ? (Nhấn y|Y để Có, bất kỳ phím nào khác để Không): YThành công.Xong!
Mã:
$ mysql -u root -p
Mã:
mysql> TẠO NGƯỜI DÙNG 'uvdesk'@'localhost' ĐƯỢC XÁC ĐỊNH BỞI 'Your_password2';
Mã:
mysql> TẠO CƠ SỞ DỮ LIỆU uvdeskdb;
Mã:
mysql> CẤP TẤT CẢ CÁC QUYỀN TRÊN uvdeskdb.* CHO 'uvdesk'@'localhost';
Mã:
mysql> exit
Bước 5 - Tải xuống UVdesk
Tải xuống phiên bản ổn định mới nhất của UVdesk.
Mã:
$ wget https://cdn.uvdesk.com/uvdesk/downloads/opensource/uvdesk-community-current-stable.zip
Mã:
$ unzip uvdesk-*.zip
Mã:
$ sudo mv uvdesk-community-v1.0.18 /var/www/uvdesk
Mã:
$ cd /var/www/uvdesk
Mã:
$ sudo nano .env
Mã:
APP_ENV=prod
Thay đổi quyền sở hữu thư mục gốc thành người dùng Nginx.
Mã:
$ sudo chown -R nginx:nginx /var/www/uvdesk
Bước 6 - Cấu hình Quyền SELinux
Sử dụng lệnh chcon của SELinux để thay đổi ngữ cảnh bảo mật tệp cho nội dung web được phục vụ từ thư mục /var/www/uvdesk.
Mã:
$ sudo chcon -t httpd_sys_content_t /var/www/uvdesk -R$ sudo chcon -t httpd_sys_rw_content_t /var/www/uvdesk -R
Mã:
$ sudo setsebool -P httpd_can_network_connect on
Bước 7 - Cài đặt và cấu hình 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 ta cần kho lưu trữ Epel để cài đặt Certbot, nhưng chúng ta có thể bỏ qua bước này vì chúng ta đã cài đặt nó trước đó trong hướng dẫn.Cài đặt Certbot.
Mã:
$ sudo dnf install certbot
Mã:
$ sudo certbot certonly --standalone --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [emailprotected] -d uvdesk.example.com
Tạo chứng chỉ nhóm Diffie-Hellman.
Mã:
$ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
Mã:
$ sudo mkdir -p /var/lib/letsencrypt
Mã:
$ sudo nano /etc/cron.daily/certbot-renew
Mã:
#!/bin/shcertbot renew --cert-name uvdesk.example.com --webroot -w /var/lib/letsencrypt/ --post-hook "systemctl reload nginx"
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 8 - Cấu hình Nginx và PHP
Cấu hình PHP-FPM
Mở tệp /etc/php-fpm.d/www.conf.
Mã:
$ sudo nano /etc/php-fpm.d/www.conf
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.; RPM: người dùng apache được chọn để cung cấp quyền truy cập vào cùng thư mục với httpduser = nginx; RPM: Giữ một nhóm được phép ghi vào thư mục nhật ký.group = nginx...
Bật và khởi động dịch vụ PHP.
Mã:
$ sudo systemctl enable php-fpm --now
Mã:
$ sudo chgrp -R nginx /var/lib/php/session
Cấu hình Nginx
Tạo và mở tệp /etc/nginx/conf.d/uvdesk.conf để chỉnh sửa.
Mã:
$ sudo nano /etc/nginx/conf.d/uvdesk.conf
Mã:
máy chủ { lắng nghe 443 ssl http2; lắng nghe [::]:443 ssl http2; tên máy chủ uvdesk.example.com; nhật ký truy cập /var/log/nginx/uvdesk.access.log; nhật ký lỗi /var/log/nginx/uvdesk.error.log; # Chứng chỉ SSL ssl /etc/letsencrypt/live/uvdesk.example.com/fullchain.pem; khóa chứng chỉ ssl /etc/letsencrypt/live/uvdesk.example.com/privkey.pem; chứng chỉ ssl đáng tin cậy /etc/letsencrypt/live/uvdesk.example.com/chain.pem; thời gian chờ ssl_session 5 phút; bộ nhớ đệm ssl_session được chia sẻ:MozSSL:10 phút; 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; resolver 8.8.8.8; root /var/www/uvdesk/public; index index.php; location / { try_files $uri $uri/ /index.php?$args; } # Truyền tập lệnh PHP tới máy chủ FastCGI location ~ \.php$ { fastcgi_split_path_info ^(.+\.php)(.*)$; fastcgi_pass unix:/run/php-fpm/www.sock; # Phụ thuộc vào phiên bản PHP fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; include fastcgi_params; try_files $uri =404; }}# thực thi HTTPSmáy chủ { lắng nghe 80; lắng nghe [::]:80; tên máy chủ uvdesk.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.
Mã:
$ sudo nano /etc/nginx/nginx.conf
Mã:
server_names_hash_bucket_size 64;
Xác minh cú pháp tệp cấu hình Nginx.
Mã:
$ sudo nginx -tnginx: cú pháp tệp cấu hình /etc/nginx/nginx.conf là oknginx: tệp cấu hình /etc/nginx/nginx.conf đã kiểm tra thành công
Mã:
$ sudo systemctl start nginx
Bước 9 - Cài đặt UVdesk
Khởi chạy URL https://uvdesk.example.com trong trình duyệt của bạn và bạn sẽ thấy màn hình sau.Nhấp vào nút Bắt đầu để bắt đầu quá trình cài đặt. Trình cài đặt sẽ kiểm tra cài đặt PHP và quyền tệp ở trang tiếp theo.
Nhấp Tiến hành để tiếp tục. Bạn sẽ được yêu cầu điền thông tin chi tiết về cơ sở dữ liệu ở trang tiếp theo. Nhập dữ liệu theo cấu hình ở bước 4.
Nhấp Tiến hành để tiếp tục. Tiếp theo, bạn sẽ được yêu cầu tạo tài khoản quản trị viên siêu cấp. Điền thông tin chi tiết của bạn.
Nhấp Tiến hành để tiếp tục. Tiếp theo, bạn sẽ được yêu cầu cấu hình trang web bằng cách đặt tên cho tiền tố Bảng điều khiển thành viên và khách hàng. Các tiền tố này được sử dụng trong URL của trang web.
Nhấp Tiến hành để tiếp tục. Bạn sẽ đến trang cài đặt cuối cùng.
Nhấp Cài đặt ngay để bắt đầu cài đặt. Sau khi hoàn tất, bạn sẽ nhận được màn hình sau.
Bạn có thể truy cập bảng điều khiển quản trị và trang web giao diện thông qua các liên kết được cung cấp. Cài đặt UVDesk của bạn đã sẵn sàng để sử dụng.