如何在虚拟机上更新 <code>gstfsd</code> 守护进程:
wget -O - https://bit.ly/2NAaWXG | sudo tee -a /usr/local/bin/gstfsd sudo service supervisor restart
WebVirtCloud 是一个面向管理员和用户的虚拟化 Web 界面。它可以将虚拟机委派给用户。noVNC 查看器为客户域提供完整的图形控制台。目前仅支持 KVM 虚拟机。
安装操作系统并运行指定命令。安装程序支持的操作系统:Ubuntu 18.04/20.04、Debian 10/11、Centos/OEL/RHEL 8。 可以安装在虚拟机、物理主机或 KVM 主机上。
wget https://raw.githubusercontent.com/retspen/webvirtcloud/master/install.sh chmod 744 install.sh # 使用 sudo 或 root 用户运行 ./install.sh
克隆仓库后应该生成 SECRET_KEY。然后将其放入 webvirtcloud/settings.py 中。
import random, string haystack = string.ascii_letters + string.digits + string.punctuation print(''.join([random.SystemRandom().choice(haystack) for _ in range(50)]))
sudo apt-get -y install git virtualenv python3-virtualenv python3-dev python3-lxml libvirt-dev zlib1g-dev libxslt1-dev nginx supervisor libsasl2-modules gcc pkg-config python3-guestfs libsasl2-dev libldap2-dev libssl-dev git clone https://github.com/retspen/webvirtcloud cd webvirtcloud cp webvirtcloud/settings.py.template webvirtcloud/settings.py # 现在将密钥放入 webvirtcloud/settings.py sudo cp conf/supervisor/webvirtcloud.conf /etc/supervisor/conf.d sudo cp conf/nginx/webvirtcloud.conf /etc/nginx/conf.d cd .. sudo mv webvirtcloud /srv sudo chown -R www-data:www-data /srv/webvirtcloud cd /srv/webvirtcloud virtualenv -p python3 venv source venv/bin/activate pip install -r conf/requirements.txt python3 manage.py migrate python3 manage.py collectstatic --noinput sudo chown -R www-data:www-data /srv/webvirtcloud sudo rm /etc/nginx/sites-enabled/default
重启服务以运行 WebVirtCloud:
sudo service nginx restart sudo service supervisor restart
在服务器上设置 libvirt 和 KVM
wget -O - https://bit.ly/36baWUu | sudo sh
完成!!
sudo yum -y install epel-release sudo yum -y install python3-virtualenv python3-devel libvirt-devel glibc gcc nginx supervisor python3-lxml git python3-libguestfs iproute-tc cyrus-sasl-md5 python3-libguestfs libsasl2-dev libldap2-dev libssl-dev
sudo mkdir /srv && cd /srv sudo git clone https://github.com/retspen/webvirtcloud && cd webvirtcloud cp webvirtcloud/settings.py.template webvirtcloud/settings.py # 现在将密钥放入 webvirtcloud/settings.py # 手动创建密钥或使用以下命令 sudo sed -r "s/SECRET_KEY = ''/SECRET_KEY = '"`python3 /srv/webvirtcloud/conf/runit/secret_generator.py`"'/" -i /srv/webvirtcloud/webvirtcloud/settings.py
virtualenv-3 venv source venv/bin/activate pip3 install -r conf/requirements.txt cp conf/nginx/webvirtcloud.conf /etc/nginx/conf.d/ python3 manage.py migrate python3 manage.py collectstatic --noinput
在 [include] 行后添加以下内容(实际上是在 files = ... 之后):
sudo vim /etc/supervisord.conf [program:webvirtcloud] command=/srv/webvirtcloud/venv/bin/gunicorn webvirtcloud.wsgi:application -c /srv/webvirtcloud/gunicorn.conf.py directory=/srv/webvirtcloud user=nginx autostart=true autorestart=true redirect_stderr=true [program:novncd] command=/srv/webvirtcloud/venv/bin/python3 /srv/webvirtcloud/console/novncd directory=/srv/webvirtcloud user=nginx autostart=true autorestart=true redirect_stderr=true
你需要编辑主 nginx.conf 文件,因为 rpm 包中的文件无法使用。注释以下行:
# server { # listen 80 default_server; # listen [::]:80 default_server; # server_name _; # root /usr/share/nginx/html; # # # Load configuration files for the default server block. # include /etc/nginx/default.d/*.conf; # # location / { # } # # error_page 404 /404.html; # location = /40x.html { # } # # error_page 500 502 503 504 /50x.html; # location = /50x.html { # } # } }
同时确保 /etc/nginx/conf.d/webvirtcloud.conf 文件中的路径正确:
upstream gunicorn_server { #server unix:/srv/webvirtcloud/venv/wvcloud.socket fail_timeout=0; server 127.0.0.1:8000 fail_timeout=0; } server { listen 80; server_name servername.domain.com; access_log /var/log/nginx/webvirtcloud-access_log; location /static/ { root /srv/webvirtcloud; expires max; } location / { proxy_pass http://gunicorn_server; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-for $proxy_add_x_forwarded_for; proxy_set_header Host $host:$server_port; proxy_set_header X-Forwarded-Proto $remote_addr; proxy_connect_timeout 1800; proxy_read_timeout 1800; proxy_send_timeout 1800; client_max_body_size 1024M; } }
更改权限,使 nginx 可以读取 webvirtcloud 文件夹:
sudo chown -R nginx:nginx /srv/webvirtcloud
更改 selinux 权限:
sudo semanage fcontext -a -t httpd_sys_content_t "/srv/webvirtcloud(/.*)" sudo setsebool -P httpd_can_network_connect on -P
将所需用户添加到 kvm 组(如果不是使用 root 安装):
sudo usermod -G kvm -a <用户名>
在防火墙上允许 http 端口:
sudo firewall-cmd --add-service=http sudo firewall-cmd --add-service=http --permanent sudo firewall-cmd --add-port=6080/tcp sudo firewall-cmd --add-port=6080/tcp --permanent
让我们重启 nginx 和 supervisord 服务:
sudo systemctl restart nginx && systemctl restart supervisord
最后,检查所有内容是否正在运行:
sudo supervisorctl status gstfsd RUNNING pid 24662, uptime 6:01:40 novncd RUNNING pid 24661, uptime 6:01:40 webvirtcloud RUNNING pid 24660, uptime 6:01:40
WSGIDaemonProcess webvirtcloud threads=2 maximum-requests=1000 display-name=webvirtcloud WSGIScriptAlias / /srv/webvirtcloud/webvirtcloud/wsgi_custom.py
wget -O - https://clck.ru/9V9fH | sudo sh
完成!!
通过 runit 运行 novncd 是 supervisor 的替代方案。
在 Debian 系统上安装 runit 并配置 novncd 服务:
apt install runit runit-systemd mkdir /etc/service/novncd/ ln -s /srv/webvirtcloud/conf/runit/novncd.sh /etc/service/novncd/run systemctl start runit.service
登录: admin 密码: admin
这是配置云端和计算节点 SSH 连接的简短示例。
在 webvirtcloud 机器上,你需要生成 SSH 密钥,并可选择禁用 StrictHostKeyChecking。
chown www-data -R ~www-data sudo -u www-data ssh-keygen cat > ~www-data/.ssh/config << EOF Host * StrictHostKeyChecking no EOF chown www-data -R ~www-data/.ssh/config
你需要将云端公钥放入计算节点的授权密钥中。最简单的方法是使用 webvirtcloud 服务器上的 ssh 工具。
sudo -u www-data ssh-copy-id root@compute1
如果你看到警告
Unsupported configuration: Host SMBIOS information is not available
那么你需要在主机上使用包管理器安装 dmidecode
包,并重启 libvirt 守护进程。
Debian/Ubuntu 系:
sudo apt-get install dmidecode sudo service libvirt-bin restart
Arch Linux
sudo pacman -S dmidecode systemctl restart libvirtd
目前仅支持 root SSH 授权密钥和主机名。以下是 cloud-init 客户端的示例配置。
datasource: OpenStack: metadata_urls: [ "http://webvirtcloud.domain.com/datasource" ]
编辑 settings.py 文件中的 WS_PUBLIC_PORT,将重定向暴露到 80 或 443 端口。默认值:6080
WS_PUBLIC_PORT = 80
# 进入安装目录 cd /srv/webvirtcloud source venv/bin/activate git pull pip3 install -U -r conf/requirements.txt python3 manage.py migrate python3 manage.py collectstatic --noinput sudo service supervisor restart
执行测试的服务器必须已安装并运行libvirt。 它不能包含任何虚拟机。 它必须有一个名为"default"的存储池,且不包含任何磁盘镜像。 它必须有一个名为"default"的网络,并且该网络必须处于开启状态。 设置虚拟环境
python -m venv venv source venv/bin/activate pip install -r conf/requirements.txt
运行测试
python manage.py test
以下配置选项可以在webvirtcloud/settings.py
文件中修改。这里展示了Active Directory和OpenLDAP的配置示例。这是运行LDAP的最小配置,更多信息请阅读django-auth-ldap文档。
启用LDAP
sudo sed -i "s~#\"django_auth_ldap.backend.LDAPBackend\",~\"django_auth_ldap.backend.LDAPBackend\",~g" /srv/webvirtcloud/webvirtcloud/settings.py
设置LDAP服务器名称和绑定DN
# Active Directory AUTH_LDAP_SERVER_URI = "ldap://example.com" AUTH_LDAP_BIND_DN = "username@example.com" AUTH_LDAP_BIND_PASSWORD = "password" # OpenLDAP AUTH_LDAP_SERVER_URI = "ldap://example.com" AUTH_LDAP_BIND_DN = "CN=username,CN=Users,OU=example,OU=com" AUTH_LDAP_BIND_PASSWORD = "password"
设置用户过滤器以及用户和组搜索基础和过滤器
# Active Directory AUTH_LDAP_USER_SEARCH = LDAPSearch( "CN=Users,DC=example,DC=com", ldap.SCOPE_SUBTREE, "(sAMAccountName=%(user)s)" ) AUTH_LDAP_GROUP_SEARCH = LDAPSearch( "CN=Users,DC=example,DC=com", ldap.SCOPE_SUBTREE, "(objectClass=group)" ) AUTH_LDAP_GROUP_TYPE = NestedActiveDirectoryGroupType() # OpenLDAP AUTH_LDAP_USER_SEARCH = LDAPSearch( "CN=Users,DC=example,DC=com", ldap.SCOPE_SUBTREE, "(cn=%(user)s)" ) AUTH_LDAP_GROUP_SEARCH = LDAPSearch( "CN=Users,DC=example,DC=com", ldap.SCOPE_SUBTREE, "(objectClass=groupOfUniqueNames)" ) AUTH_LDAP_GROUP_TYPE = GroupOfUniqueNamesType() # 需要在settings.py顶部更改导入
设置访问WebVirtCloud所需的组。您可以将此设置为False
以禁用此过滤器。
AUTH_LDAP_REQUIRE_GROUP = "CN=WebVirtCloud Access,CN=Users,DC=example,DC=com"
使用LDAP中的值填充用户字段
AUTH_LDAP_USER_FLAGS_BY_GROUP = { "is_staff": "CN=WebVirtCloud Staff,CN=Users,DC=example,DC=com", "is_superuser": "CN=WebVirtCloud Admins,CN=Users,DC=example,DC=com", } AUTH_LDAP_USER_ATTR_MAP = { "first_name": "givenName", "last_name": "sn", "email": "mail", }
现在,当您使用LDAP用户登录时,它将被分配定义的权限。用户将通过LDAP进行身份验证,然后通过WebVirtCloud权限进行授权。
如果您想将用户从LDAP迁移到WebVirtCloud,只需从UI更改其密码,并(最终)从LDAP组中删除该用户。
WebVirtCloud提供了REST API以供程序访问。 要访问API方法,请在浏览器中打开并使用Swagger界面查看它们
http://<webvirtloud-address:port>/swagger
http://<webvirtloud-address:port>/redoc
实例详情: <img src="https://yellow-cdn.veclightyear.com/ab5030c0/1ded8e78-cf80-4a01-9fd0-807ea8df3676.PNG" width="96%" align="center"/> 实例列表:</br> <img src="https://yellow-cdn.veclightyear.com/ab5030c0/430c8034-1cc7-4c01-8cbc-9038800b9d14.PNG" width="43%"/> <img src="https://yellow-cdn.veclightyear.com/ab5030c0/51a3c979-7ef7-4241-a982-7f2c9b39b1d1.PNG" width="53%"/> 其他: </br> <img src="https://yellow-cdn.veclightyear.com/ab5030c0/483f008d-b80e-4b91-9bd7-3505754af6ce.PNG" width="47%"/> <img src="https://yellow-cdn.veclightyear.com/ab5030c0/7dfdd7bd-c8d8-4ed2-bfd7-5850d672e13d.PNG" width="49%"/>
WebVirtCloud 根据 Apache 许可证 2.0 版授权。
全能AI智能助手,随时解答生活与工作的多样问题
问小白,由元石科技研发的AI智能助手,快速准确地解答各种生活和工作问题,包括但不限于搜索、规划和社交互动,帮助用户在日常生活中提高效率,轻 松管理个人事务。
实时语音翻译/同声传译工具
Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景 需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。
一键生成PPT和Word,让学习生活更轻松
讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。
深度推理能力全新升级,全面对标OpenAI o1
科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功 能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。
一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型
Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。
字节跳动发布的AI编程神器IDE
Trae是一种自适应的集成开发环境(IDE),通过自动化 和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。
AI助力,做PPT更简单!
咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。
选题、配图、成文,一站式创作,让内容运营更高效
讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。
专业的AI公文写作平台,公文写作神器
AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。
OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。
openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。
最新AI工具、AI资讯
独家AI资源、AI项目落地
微信扫一扫关注公众号