Cách cài đặt hệ thống UVdesk Helpdesk trên Ubuntu 22.04

theanh

Administrator
Nhân viên
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ẽ học cách cài đặt Uvdesk trên máy chủ Ubuntu 22.04 bằng Nginx, MySQL và PHP.

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


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

  • Tên miền đủ điều kiện (FQDN) trỏ đến máy chủ. Đối với hướng dẫn này, 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 apt update && sudo apt upgrade
[*]
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 apt install wget curl nano unzip -y

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

Trước khi cài đặt bất kỳ gói nào, bước đầu tiên 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 sẽ thấy nội dung tương tự như sau.
Mã:
Trạng thái: activeTo Action From-- ------ ----OpenSSH ALLOW AnywhereOpenSSH (v6) ALLOW Anywhere (v6)
Cho phép 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 statusTrạng thái: activeĐế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 22.04 đ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.22.0
Khởi động máy chủ Nginx.
Mã:
$ sudo systemctl start nginx

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

Ubuntu 22.04 được cài đặt sẵn PHP 8.1 theo mặc định. Tuy nhiên, UVdesk hoạt động tốt với PHP 8.0. Để cài đặt PHP 8.0, chúng ta cần sử dụng kho lưu trữ PHP của Ondrej.

Thêm kho lưu trữ PHP của Ondrej.
Mã:
$ sudo add-apt-repository ppa:ondrej/php
Cập nhật danh sách kho lưu trữ hệ thống của bạn.
Mã:
$ sudo apt update
Cài đặt PHP và các tiện ích mở rộng mà UVdesk yêu cầu.
Mã:
$ sudo apt install php8.0 php8.0-curl php8.0-intl php8.0-gd php8.0-xsl php8.0-mbstring php8.0-zip php8.0-xml php8.0-bz2 php8.0-mysql php8.0-soap php8.0-mysql php8.0-fpm php8.0-gmp php8.0-bcmath php8.0-apcu php8.0-redis php8.0-imagick php8.0-imap php8.0-xdebug php8.0-tidy php8.0-ldap php8.0-opcache php8.0-mailparse
Kiểm tra phiên bản PHP đã cài đặt.
Mã:
$ php --versionPHP 8.0.23 (cli) (xây dựng: 18 tháng 9 năm 2022 10:25:06) (NTS)Bản quyền (c) The PHP GroupZend Engine v4.0.23, Bản quyền (c) Zend Technologies với Zend OPcache v8.0.23, Bản quyền (c), của Zend Technologies với Xdebug v3.1.5, Bản quyền (c) 2002-2022, của Derick Rethans

Bước 4 - Cài đặt MySQL​

Ubuntu 22.04 đi kèm với phiên bản mới nhất của MySQL. Bạn có thể cài đặt nó bằng một lệnh duy nhất.
Mã:
$ sudo apt install mysql-server
Kiểm tra phiên bản MySQL.
Mã:
$ mysql --versionmysql Ver 8.0.30-0ubuntu0.22.04.1 cho Linux trên x86_64 ((Ubuntu))
Bước này là cần thiết cho MySQL phiên bản 8.0.28 trở lên. Nhập MySQL Shell.
Mã:
$ sudo mysql
Chạy lệnh sau để đặt mật khẩu cho người dùng root của bạn. Đảm bảo rằng mật khẩu có sự kết hợp giữa số, chữ hoa, chữ thường và ký tự đặc biệt.
Mã:
mysql> ALTER USER 'root'@'localhost' ĐƯỢC XÁC NHẬN VỚI mysql_native_password BỞI 'YourPassword12!';
Thoát khỏi shell.
Mã:
mysql> exit
Chạy tập lệnh cài đặt bảo mật MySQL.
Mã:
$ sudo mysql_secure_installation
Đầu tiên, bạn sẽ được yêu cầu nhập mật khẩu gốc. Nhập mật khẩu. Tiếp theo, bạn sẽ được yêu cầu cài đặt Thành phần Xác thực Mật khẩu. Thành phần này kiểm tra độ mạnh của mật khẩu được sử dụng trong MySQL. Nhấn Y để cài đặt. Tiếp theo, bạn sẽ được yêu cầu đặt mức chính sách xác thực mật khẩu. Chọn 2 vì đây là mức mạnh nhất.
Mã:
Bảo mật triển khai máy chủ MySQL.Nhập mật khẩu cho người dùng root:Thành phần XÁC THỰC MẬT KHẨU có thể được sử dụng để kiểm tra mật khẩuvà cải thiện 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 để Có, bất kỳ phím nào khác để 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: 2Sử dụng mật khẩu hiện có cho root.Độ mạnh ước tính của mật khẩu: 100
Tiếp theo, nhập N để từ chối thay đổi mật khẩu root của bạn. Ngoài ra, nhập Y để xóa người dùng ẩn danh, không cho phép đăng nhập root từ xa, xóa cơ sở dữ liệu thử nghiệm và tải lại các bảng đặc quyền.
Mã:
Thay đổi mật khẩu cho root ? ((Nhấn y|Y để Có, bất kỳ phím nào khác để Không): N ... bỏ qua.Theo mặc định, cài đặt MySQL có một người dùng ẩn danh,cho phép bất kỳ ai đăng nhập vào MySQL mà không cần phải tạomột tài khoản người dùng cho họ. Điều này chỉ dành cho mục đíchthử nghiệm và để quá trình cài đặt diễn ra suôn sẻ hơn một chút.Bạn nên xóa những người dùng này trước khi chuyển sang môi trường sản xuất.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.Thông thường, root chỉ được phép kết nối từ'localhost'. Điều này đảm bảo rằng không ai có thể đoán đượcmật khẩu root từ mạng.Không cho phép root đăng nhập từ xa? (Nhấn y|Y để Có, bất kỳ phím nào khác để Không): YThành công.Theo mặc định, MySQL đi kèm với một cơ sở dữ liệu có tên là 'test' màbất kỳ ai cũng có thể truy cập. Điều này cũng chỉ dành cho mục đích thử nghiệm,và nên xóa trước khi chuyển sang môi trường sản xuất.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 cho Không): Y - Đang 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 các bảng 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 các bảng quyền ngay bây giờ? (Nhấn y|Y cho Có, bất kỳ phím nào khác cho Không): YThành công.Xong!

Bước 5 - Cấu hình MySQL​

Đăng nhập vào shell MySQL. Nhập mật khẩu root của bạn khi được nhắc.
Mã:
$ sudo mysql -u root -p
Tạo một cơ sở dữ liệu mẫu.
Mã:
mysql> CREATE DATABASE uvdeskdb;
Tạo một tài khoản người dùng SQL.
Mã:
mysql> TẠO NGƯỜI DÙNG 'uvdesk'@'localhost' ĐƯỢC XÁC ĐỊNH BỞI 'Your_password2';
Cấp tất cả các quyền trên cơ sở dữ liệu cho người dùng.
Mã:
mysql> CẤP TẤT CẢ CÁC QUYỀN TRÊN uvdeskdb.* CHO 'uvdesk'@'localhost';
Xóa các quyền của người dùng.
Mã:
mysql> XÓA CÁC QUYỀN;
Thoát khỏi shell.
Mã:
mysql> thoát

Bước 6 - Cài đặt Composer​

UVdesk sử dụng Composer để quản lý các phụ thuộc. Chạy các lệnh sau để tải xuống và cài đặt Composer.
Mã:
$ php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"$ php -r "if (hash_file('sha384', 'composer-setup.php') === '55ce33d7678c5a611085589f1f3ddf8b3c52d662cd01d4ba75c0ee0459970c2200a51f492d557530c71c15d8dba01eae') { echo 'Đã xác minh trình cài đặt'; } else { echo 'Đã cài đặt bị hỏng'; unlink('composer-setup.php'); } echo PHP_EOL;"$ php composer-setup.php$ php -r "unlink('composer-setup.php');"$ sudo mv composer.phar /usr/local/bin/composer
Kiểm tra xem Composer đã được cài đặt đúng cách chưa.
Mã:
$ composer -VComposer phiên bản 2.4.2 2022-09-14 16:11:15

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

Tạo thư mục /var/www.
Mã:
$ sudo mkdir /var/www
Chuyển sang thư mục www.
Mã:
$ cd /var/www
Cấp quyền cho người dùng hệ thống hiện đang đăng nhập vào thư mục /var/www.
Mã:
$ sudo chown $USER:$USER /var/www/
Sử dụng Composer để cài đặt các phần phụ thuộc cho UVdesk.
Mã:
$ composer clear-cache$ composer create-project uvdesk/community-skeleton uvdesk.example.com
Cài đặt tiện ích Access Control Lists (acl).
Mã:
$ sudo apt install acl
Cấp quyền cho các thư mục và tệp cụ thể cho cả người dùng hiện đang đăng nhập $USER và người dùng Nginx nginx.
Mã:
$ sudo setfacl -dR -m u:nginx:rwX -m u:$USER:rwX /var/www/uvdesk.example.com/var$ sudo setfacl -R -m u:nginx:rwX -m u:$USER:rwX /var/www/uvdesk.example.com/var$ sudo setfacl -dR -m u:nginx:rwX -m u:$USER:rwX /var/www/uvdesk.example.com/public$ sudo setfacl -R -m u:nginx:rwX -m u:$USER:rwX /var/www/uvdesk.example.com/public$ sudo setfacl -dR -m u:nginx:rwX -m u:$USER:rwX /var/www/uvdesk.example.com/config$ sudo setfacl -R -m u:nginx:rwX -m u:$USER:rwX /var/www/uvdesk.example.com/config$ sudo setfacl -dR -m u:nginx:rwX -m u:$USER:rwX /var/www/uvdesk.example.com/migrations$ sudo setfacl -R -m u:nginx:rwX -m u:$USER:rwX /var/www/uvdesk.example.com/migrations$ sudo setfacl -m u:nginx:rwX -m u:$USER:rwX /var/www/uvdesk.example.com/.env

Bước 8 - Cài đặt và Cấu hình 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 Ubuntu 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.

Ubuntu 22.04 đi kèm với Snapd được cài đặt theo mặc định. 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
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 thư mục /usr/bin.
Mã:
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot
Chạy lệnh sau để tạo Chứng chỉ SSL.
Mã:
$ sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [emailprotected] -d uvdesk.example.com
Lệnh trên sẽ tải xuống chứng chỉ vào /etc/letsencrypt/live/uvdesk.example.com thư mục trên máy chủ của bạn.

Tạo chứng chỉ nhóm Diffie-Hellman.
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ẽ thấy snap.certbot.renew.service là một trong những dịch vụ được lên lịch chạy.
Mã:
TIẾP THEO TRÁI ĐƠN VỊ CUỐI CÙNG ĐÃ QUA KÍCH HOẠTThứ Hai 2022-09-19 00:28:48 UTC Còn 13 phút Chủ Nhật 2022-09-18 23:31:55 UTC 43 phút trước fstrim.timer fstrim.serviceThứ Hai 2022-09-19 00:39:00 UTC Còn 23 phút Thứ Hai 2022-09-19 00:09:00 UTC 6 phút trước phpsessionclean.timer phpsessionclean.serviceThứ Hai 2022-09-19 00:40:00 UTC Còn 24 phút không có không có snap.certbot.renew.timer snap.certbot.renew.service.......
Để kiểm tra xem quá trình gia hạn SSL có hoạt động tốt không, hãy chạy thử quy trình.
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 9 - 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à đổ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 thiết lập, 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ữ cho nhóm được phép ghi vào thư mục nhật ký.group = nginx...
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ã:
; Đặt quyền cho ổ cắm unix, nếu có. Trong Linux, quyền đọc/ghi; phải được đặt để cho phép kết nối từ máy chủ web. Nhiều; hệ thống bắt nguồn từ BSD cho phép kết nối bất kể quyền. Chủ sở hữu; và nhóm có thể được chỉ định theo tên hoặc theo ID số của họ.; Giá trị mặc định: người dùng và nhóm được đặt làm người dùng đang chạy; chế độ được đặt thành 0660listen.owner = nginxlisten.group = nginx
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Tăng thời gian thực thi cho PHP-FPM và PHP-CLI lên 60 giây.
Mã:
$ sudo sed -i 's/max_execution_time = 30/max_execution_time = 60/' /etc/php/8.0/fpm/php.ini$ sudo sed -i 's/max_execution_time = 30/max_execution_time = 60/' /etc/php/8.0/cli/php.ini
Tăng giới hạn bộ nhớ cho PHP-FPM từ 128MB lên 256MB.
Mã:
$ sudo sed -i 's/memory_limit = 128M/memory_limit = 256M/' /etc/php/8.0/fpm/php.ini
Khởi động lại dịch vụ PHP-FPM.
Mã:
$ sudo systemctl restart php8.0-fpm
Thay đổi nhóm thư mục phiên PHP thành Nginx.
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
Dán mã sau vào đó.
Mã:
server { listen 443 ssl http2; listen [::]:443 ssl http2; server_name uvdesk.example.com; access_log /var/log/nginx/uvdesk.access.log; error_log /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; giao thức ssl 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/php8.0-fpm.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 HTTPSserver { listen 80; lắng nghe [::]:80; tên_máy_chủ uvdesk.example.com; trả về 301 https://$host$request_uri;}
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.
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: 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
Khởi động lại dịch vụ Nginx.
Mã:
$ sudo systemctl restart nginx

Bước 10 - 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ếp tục để 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ếp tục để 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ếp tục để 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ếp tục để 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.

Lưu ý: Nếu quá trình cài đặt không thành công do lỗi SQL "SQLSTATE[42S02]: Base table or view not found: 1146 Table 'uvdesk.uv_support_role' doesn't exist,", hãy sử dụng các lệnh được liệt kê bên dưới để khắc phục sự cố.
Mã:
$ cd /var/www/helpdesk.example.com/$ php bin/console doctrine:migrations:diff$ php bin/console doctrine:migrations:migrate$ php bin/console c:c$ sudo shutdown -r now

Kết luận​

Bạn đã cài đặt hệ thống UVdesk Helpdesk trên máy chủ Ubuntu 22.04 bằng Nginx, MySQL và PHP. Nếu bạn có bất kỳ câu hỏi nào, hãy đăng chúng trong phần bình luận bên dưới.
 
Back
Bên trên