Tìm kiếm trang web

Cài đặt WebvirtCloud trên Rocky Linux/AlmaLinux 9|8


WebVirtCloud là một nền tảng quản lý ảo hóa KVM dựa trên web, có thể giúp bạn quản lý hypervisor và các máy ảo. Nó cho phép bạn tạo, quản lý, truy cập và xóa các máy ảo từ bảng điều khiển web thay vì thực hiện qua terminal. Hơn nữa, WebVirtCloud đơn giản hóa việc tạo máy ảo thông qua các mẫu được cấu hình sẵn với các hệ điều hành phổ biến như Ubuntu, Debian, Fedora, CentOS, AlmaLinux và Rocky Linux.

Trong bài viết này, chúng tôi cung cấp hướng dẫn cho người dùng Linux đang sử dụng Rocky/AlmaLinux, hoặc bất kỳ bản phân phối nào khác của hệ điều hành Enterprise Linux. Hướng dẫn này sẽ không đề cập đến các tác vụ lớn sau khi cài đặt, nhưng chúng tôi hy vọng trong tương lai sẽ chia sẻ thêm nhiều bài hướng dẫn hơn. Nếu bạn đã sẵn sàng bắt đầu quá trình cài đặt, hãy mở terminal để bắt đầu!

1) Cài đặt các phụ thuộc

Đảm bảo hệ thống bạn đang làm việc được cập nhật mới nhất. Nó có thể là một máy ảo vừa được cấp phát (rất được khuyến nghị), hoặc cùng một máy tính nơi KVM đang chạy (không được khuyến nghị). Nếu bạn chọn triển khai trên host KVM hypervisor, hãy cẩn thận vì các nâng cấp gói không kế hoạch có thể làm hỏng hệ thống.

Chạy lệnh dưới đây để cập nhật hệ thống với tất cả các gói đã cài đặt.

sudo dnf -y update

Xác nhận cập nhật kernel trong quá trình nâng cấp, nếu đúng hãy khởi động lại hệ thống

sudo reboot

Sau khi hệ thống trực tuyến trở lại, hãy mở terminal hoặc cài đặt các phụ thuộc cần thiết để thiết lập WebvirtCloud.

# Enable EPEL repository 
sudo dnf -y install epel-release

# On EL 9 based systems enable crb repository
sudo dnf config-manager --set-enabled crb 2>/dev/null

# Install group development tools
sudo dnf -y groupinstall "Development Tools"

# Install the following additional packages
sudo dnf -y install git gcc libvirt-devel \
glibc supervisor iproute-tc cyrus-sasl-md5 \
cyrus-sasl-devel openldap-devel openssl-devel 

Đặt SELinux ở chế độ Permissive:

sudo setenforce 0
sudo sed -i 's/^SELINUX=.*/SELINUX=permissive/g' /etc/selinux/config

2) Cài đặt Python 3.11 trở lên

Chúng ta cần cài đặt phiên bản Python mới hơn. Bạn có thể cài đặt Python 3.11 trở lên.

sudo dnf install python3.12 python3.12-pip python3.12-devel

Để tiện sử dụng, hãy tạo liên kết tượng trưng (symlink) cho python và pip đã cài đặt

sudo ln -sf /usr/bin/python3.12 /usr/bin/python3
sudo ln -sf /usr/bin/pip3.12 /usr/bin/pip3

Xác minh cài đặt bằng cách kiểm tra phiên bản Python và Pip.

$  /usr/bin/python3 --version
Python 3.12.3

$ /usr/bin/pip3 --version
pip 23.2.1 from /usr/lib/python3.12/site-packages/pip (python 3.12)

Nâng cấp Pip lên phiên bản mới nhất có sẵn từ nguồn trên:

sudo /usr/bin/python3 -m pip install --upgrade pip

3) Cài đặt máy chủ web Nginx

Chúng tôi đang sử dụng Nginx làm máy chủ web của WebvirtCloud. Cài đặt gói bằng cách chạy lệnh sau:

sudo dnf -y install nginx

Khởi động và kích hoạt dịch vụ nginx.

sudo systemctl enable --now nginx

Khi firewalld đang chạy, bạn có thể cho phép các dịch vụ http và https.

sudo firewall-cmd --add-service={http,https} --permanent

Tải lại các quy tắc firewalld để các thay đổi có hiệu lực:

sudo firewall-cmd --reload

4) Cài đặt và Cấu hình WebVirtCloud

Phương pháp cài đặt mà chúng tôi hướng dẫn trong bài này là từ mã nguồn. Hãy sao chép mã nguồn dự án từ Github.

git clone https://github.com/retspen/webvirtcloud.git

Chuyển vào thư mục webvirtcloud.

cd webvirtcloud

Một mẫu của settings.py được cung cấp. Sao chép hoặc đổi tên nó.

cp webvirtcloud/settings.py.template webvirtcloud/settings.py

Tạo giá trị SECRET_KEY bằng cách chạy lệnh dưới đây.

SECRET=$(python3 conf/runit/secret_generator.py)

Cập nhật giá trị SECRET_KEY trong tệp settings.py.

sed -i "s|SECRET_KEY = \"\"|SECRET_KEY = \"$SECRET\"|" webvirtcloud/settings.py

Thêm tên máy chủ của bạn vào danh sách các nguồn tin cậy cho các yêu cầu không an toàn

$ vi webvirtcloud/settings.py
CSRF_TRUSTED_ORIGINS = ['http://localhost','http://webvirtcloud.example.net']

Thay webvirtcloud.example.net bằng tên máy chủ/FQDN chính xác như đã cấu hình trong máy chủ DNS hoặc được ánh xạ trong tệp /etc/hosts. Ví dụ:

172.20.30.10 webvirtcloud.example.net

Sao chép các tệp cấu hình nginx và supervisord.

sudo cp conf/nginx/webvirtcloud.conf /etc/nginx/conf.d
sudo cp conf/supervisor/webvirtcloud.conf /etc/supervisord.d/webvirtcloud.ini

Trong các hệ thống dựa trên RHEL, người dùng nginx chạy dưới tài khoản nginx chứ không phải tài khoản người dùng www-data. Cập nhật tệp cấu hình supervisor để phản ánh điều này:

sudo sed -i 's/www-data/nginx/g' /etc/supervisord.d/webvirtcloud.ini

Mở và chỉnh sửa tệp cấu hình nginx

sudo vi /etc/nginx/conf.d/webvirtcloud.conf

Đặt giá trị đúng cho tên máy chủ và cấu hình các tệp để ghi nhật ký.

server {
    listen 80;

    server_name webvirtcloud.example.net; #Replace with correct hostname
    access_log /var/log/nginx/webvirtcloud_access_log;
    error_log /var/log/nginx/webvirtcloud_error_log;

Di chuyển thư mục webvirtcloud đến /srv.

cd ..
sudo mv webvirtcloud /srv

Tạo môi trường ảo Python cho WebvirtCloud.

cd /srv/webvirtcloud
/usr/bin/python3 -m venv venv

Kích hoạt môi trường ảo vừa tạo

source venv/bin/activate

Cài đặt các phụ thuộc Python trong môi trường ảo

pip3 install --upgrade pip
pip3 install -r conf/requirements.txt

Thực hiện di chuyển và tạo các tệp tĩnh.

pip3 install setuptools
python3 manage.py migrate
python3 manage.py collectstatic --noinput

Đặt quyền sở hữu cho người dùng máy chủ web.

sudo chown -R nginx:nginx /srv/webvirtcloud

Khởi động và kích hoạt các dịch vụ nginx và supervisor

sudo systemctl enable nginx supervisord
sudo systemctl restart nginx supervisord

Kiểm tra các dịch vụ do supervisor quản lý xem có đang chạy không

$ sudo supervisorctl status
novncd                           RUNNING   pid 73923, uptime 0:00:10
socketiod                        RUNNING   pid 73924, uptime 0:00:10
webvirtcloud                     RUNNING   pid 73925, uptime 0:00:10

Bạn cũng có thể xác nhận trạng thái dịch vụ nginx

systemctl status nginx

5) Truy cập Bảng điều khiển WebvirtCloud

Mở trình duyệt của bạn và truy cập giao diện web của WebvirtCloud tại http://yourserverdomain

Tên đăng nhập và mật khẩu mặc định là admin / admin. Để thay đổi mật khẩu, đi tới người dùng admin > Hồ sơ

Nhấp vào «Đổi Mật Khẩu» để đặt mật khẩu mới.

Đặt mật khẩu mới và xác nhận.

6) Thêm máy chủ KVM vào WebvirtCloud

Chuẩn bị máy chủ KVM của bạn bằng cách cài đặt các gói cần thiết và thực hiện các cấu hình khác.

Trên siêu giám sát KVM

Chúng tôi đã tạo một script bash giúp bạn thiết lập nút KVM. Nó có sẵn trong kho Github của chúng tôi.

curl -O https://raw.githubusercontent.com/cloudspinx/linux-bash-scripts/main/webvirtcloud/centos-rocky-kvm-prep.sh

Thực thi tập lệnh trên máy chủ KVM:

sudo bash centos-rocky-kvm-prep.sh

Sử dụng phiên bản Python do Hệ điều hành cung cấp trên gstfsd

  • Hệ thống dựa trên RHEL 9
sudo sed -i 's/python3/python3.9/g' /etc/supervisord.d/gstfsd.ini
  • Các hệ thống dựa trên RHEL 8
sudo sed -i 's/python3/python3.6/g' /etc/supervisord.d/gstfsd.ini

Khởi động lại dịch vụ supervisord.

sudo systemctl restart supervisord

Kiểm tra trạng thái dịch vụ.

$ sudo supervisorctl status
gstfsd                           STARTING

Trên Phiên bản WebvirtCloud

Tạo cặp khóa SSH trên máy chủ WebVirtCloud nếu chưa tồn tại:

$ sudo -u nginx ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/var/lib/nginx/.ssh/id_rsa):
Created directory '/var/lib/nginx/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /var/lib/nginx/.ssh/id_rsa.
Your public key has been saved in /var/lib/nginx/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:U9TVDTByyHL3hybL3MAB8BQ84SiiTVfW/juaWE7VNiI [email 
The key's randomart image is:
+---[RSA 3072]----+
|        +=B*+ooo.|
|       o.*Bo+.  o|
|    o o .+++ o . |
|   + o . .. +.+ .|
|  . .   S E+o*+. |
|         . o=o.. |
|          o  .   |
|         = .o    |
|        . +. .   |
+----[SHA256]-----+

Chúng ta cần sao chép khóa công khai SSH đã tạo vào máy chủ ảo KVM để bật xác thực không cần mật khẩu:

ssh-copy-id -i /var/lib/nginx/.ssh/id_rsa.pub user@compute-server-ip

Đối với hypervisor KVM không cho phép xác thực bằng mật khẩu, hãy sao chép khóa thủ công.

cat /var/lib/nginx/.ssh/id_rsa.pub

Bạn có thể thêm nội dung vào tệp khóa được ủy quyền SSH.

vi ~/.ssh/authorized_keys

Kiểm tra kết nối từ webvirtcloud đến máy chủ KVM.

sudo -u nginx ssh user@compute-server-ip

# Example
sudo -u nginx ssh [email 

Nếu bạn gặp sự cố với các danh tính, hãy xóa tệp /var/lib/nginx/.ssh/known_hosts và thử lại.

Thêm một máy chủ tính toán mới bằng cách vào “Computes” –> “SSH“

Cung cấp tên máy chủ, tên đăng nhập và địa chỉ IP được sử dụng khi sao chép khóa công khai ssh.

Nếu mọi thứ diễn ra suôn sẻ, trạng thái sẽ là «Đã kết nối».

Nhấp vào biểu tượng “mắt” trên nút để bắt đầu quản lý các tài nguyên ảo hóa trên máy chủ KVM. Để cấu hình các bể lưu trữ, hãy xem bài viết sau:

Sách được gợi ý:

  • Làm chủ ảo hóa KVM – eBook tối ưu

Trang tiếp theo:

  • Cấu hình các Pool Lưu trữ KVM bằng WebvirtCloud