之前开源过一个比较灵活多云的 CMDB,只有没有时间整理部署方式,最近总是有朋友问,所以本文就介绍一下,如何部署 fiy 开源CMDB。
如果你还没有了解过,这款 CMDB,欢迎看下演示站点或者之前些的文章。
Github:https://github.com/lanyulei/fiy
如果觉得不错的话,还请不要帮忙点一个宝贵的 star。
演示站点默认账号密码:admin / 123456
文章介绍:https://blog.51cto.com/u_11293981/2783015
下面介绍两种部署方式,脚本一键部署和前后端分离的部署方式。
脚本一键部署的话,相当于将前端编译后放入后端的静态文件存放的位置。省去了部署及维护前端的操作,简单一些。
前后端分离的部署方式,则是通过 nginx 部署前端,同时通过 nginx 的反向代理将请求代理到后端的方式,如果对 nginx 熟悉的,可以尝试这种方式。
脚本一键部署和前后端分离的部署方式,任选其一即可。
在此感谢 @Jiang-boyang 提供的部署脚本。
部署应用程序之前,请自行部署 MySQL、ES。
拉取代码
git clone https://github.com/lanyulei/fiy.git
# 或者
git clone https://gitee.com/yllan/fiy
执行部署脚本
cd fiy
./build.sh install
部署脚本执行的过程中,会有需要确认的输入项目,仔细看下,很清晰的描述。
执行完成后,启动程序。
./build.sh start
# 或者
cd build
./fiy server -c=config/settings.yml
启动成功则表示安装成功了。
默认情况下启动端口为 8000,可通过 http://ip:port 访问。
拉取代码
git clone https://github.com/lanyulei/fiy.git
# 或者
git clone https://gitee.com/yllan/fiy.git
配置代理
go env -w GOPROXY=https://goproxy.cn,direct
安装依赖
cd fiy
go mod tidy
编译
go build -ldflags="-s -w" -o fiy main.go
配置数据库
vim config/settings.yml
# 修改为你们自己的数据库配置。 层级:settings.database.source 。
同步基础数据
# 注意,这一步必须要数据库配置好后,才可进行后续步骤。
./fiy migrate -c config/settings.yml
启动服务
./fiy server -c config/settings.yml
服务成功启动后,后端就完事了。
拉取代码
git clone https://github.com/lanyulei/fiy-ui.git
# 或者
git clone https://gitee.com/yllan/fiy-ui.git
安装依赖
cd fiy-ui
npm install # 若是慢的话,请自行下载 cnpm 尝试。
修改 env 文件,调整为当前程序的访问地址,域名或者IP+端口。
vim .env.production
# 修改 VUE_APP_BASE_API 的值为,你应用的访问地址。
编译
npm run build:prod
mkdir -p /opt/fiy-ui
mv dist /opt/fiy-ui/
若是没有安装 nginx 请自行安装配置。
以下为我的 Nginx 配置,可根据各自实际场景进行相应的调整。
端口若冲突,请自行修改为不冲突的端口。
server {
listen 8001; # 监听端口
server_name fdevops.com:8001; # 域名可以有多个,用空格隔开
# access_log /opt/fiy-ui/logs/nginx.access.log;
# error_log /opt/fiy-ui/logs/nginx.error.log;
location / {
root /opt/fiy-ui/dist;
index index.html index.htm; #目录内的默认打开文件,如果没有匹配到index.html,则搜索index.htm,依次类推
}
#ssl配置省略
location /api {
# rewrite ^.+api/?(.*)$ /$1 break;
proxy_pass http://127.0.0.1:8000; #node api server 即需要代理的IP地址
proxy_redirect off;
proxy_set_header Host $host:$server_port;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
if ($request_method !~* GET) {
return 403;
}
}
# 登陆
location /login {
proxy_pass http://127.0.0.1:8000; #node api server 即需要代理的IP地址
proxy_redirect off;
proxy_ignore_client_abort on;
proxy_max_temp_file_size 256m;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 32k;
proxy_temp_file_write_size 64k;
proxy_http_version 1.1;
proxy_set_header Connection "";
proxy_set_header Host $host:$server_port;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
# 刷新token
location /refresh_token {
proxy_pass http://127.0.0.1:8000; #node api server 即需要代理的IP地址
proxy_set_header Host $host:$server_port;
}
# 接口地址
location /swagger {
proxy_pass http://127.0.0.1:8000; #node api server 即需要代理的IP地址
proxy_set_header Host $host:$server_port;
}
# 后端静态文件路径
location /static/uploadfile {
proxy_pass http://127.0.0.1:8000; #node api server 即需要代理的IP地址
proxy_set_header Host $host:$server_port;
}
#error_page 404 /404.html; #对错误页面404.html 做了定向配置
# redirect server error pages to the static page /50x.html
#将服务器错误页面重定向到静态页面/50x.html
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
nginx 启动成功后,则可通过 http://IP:8001 的方式访问,测试。
展示部分功能截图,更详细具体的内容,还请自行进入演示站点查看。
结合 ES 实现所有资源的统一搜索,在这里不需要关注是什么类型的资源,只需要输入关键字,即可搜索出对应关键字的数据。

根据业务划分资源数据,可清晰的看出当前业务所拥有的资源数据。

服务有那些进程及进程的一些基本信息,例如:进程重启命令、进程停止命令、进程重载命令、工作用户、启动数量等等。

所有资源的一个汇总,通过这里可以进入对应的资源列表页面。

资源列表

批量导入资源

云账号添加,方便进行云资源的同步,目前支持百度云、阿里云、腾讯云。

配置云资源同步的任务。

模型管理,即通过模型及配置的模型字段,添加对应的数据。能更加灵活的让我们管理我们的资源,需要什么资源就创建对应的模型即可。
语言描述的有点苍白,可看下面的截图或者演示站点上去点击测试,更能容易理解。

模型字段

编辑字段

通过配置模型之间的上下游关系,自动生成对应的模型关系图。

用户的增删改操作,统统记录下来,方便排查及修复误操作的数据。

本次操作的新旧数据对比

更多功能,就不一一介绍了。可自行进行演示站点体验。
本文为原创文章,未经授权禁止转载本站文章。
原文出处:兰玉磊的个人博客
原文链接:https://www.fdevops.com/2022/04/16/go-cmdb-31077
版权:本文采用「署名-非商业性使用-相同方式共享 4.0 国际」知识共享许可协议进行许可。
我正在使用i18n从头开始构建一个多语言网络应用程序,虽然我自己可以处理一大堆yml文件,但我说的语言(非常)有限,最终我想寻求外部帮助帮助。我想知道这里是否有人在使用UI插件/gem(与django上的django-rosetta不同)来处理多个翻译器,其中一些翻译器不愿意或无法处理存储库中的100多个文件,处理语言数据。谢谢&问候,安德拉斯(如果您已经在rubyonrails-talk上遇到了这个问题,我们深表歉意) 最佳答案 有一个rails3branchofthetolkgem在github上。您可以通过在Gemfi
我正在寻找执行以下操作的正确语法(在Perl、Shell或Ruby中):#variabletoaccessthedatalinesappendedasafileEND_OF_SCRIPT_MARKERrawdatastartshereanditcontinues. 最佳答案 Perl用__DATA__做这个:#!/usr/bin/perlusestrict;usewarnings;while(){print;}__DATA__Texttoprintgoeshere 关于ruby-如何将脚
我正在编写一个包含C扩展的gem。通常当我写一个gem时,我会遵循TDD的过程,我会写一个失败的规范,然后处理代码直到它通过,等等......在“ext/mygem/mygem.c”中我的C扩展和在gemspec的“扩展”中配置的有效extconf.rb,如何运行我的规范并仍然加载我的C扩展?当我更改C代码时,我需要采取哪些步骤来重新编译代码?这可能是个愚蠢的问题,但是从我的gem的开发源代码树中输入“bundleinstall”不会构建任何native扩展。当我手动运行rubyext/mygem/extconf.rb时,我确实得到了一个Makefile(在整个项目的根目录中),然后当
我已经在Sinatra上创建了应用程序,它代表了一个简单的API。我想在生产和开发上进行部署。我想在部署时选择,是开发还是生产,一些方法的逻辑应该改变,这取决于部署类型。是否有任何想法,如何完成以及解决此问题的一些示例。例子:我有代码get'/api/test'doreturn"Itisdev"end但是在部署到生产环境之后我想在运行/api/test之后看到ItisPROD如何实现? 最佳答案 根据SinatraDocumentation:EnvironmentscanbesetthroughtheRACK_ENVenvironm
当我尝试安装Ruby时遇到此错误。我试过查看this和this但无济于事➜~brewinstallrubyWarning:YouareusingOSX10.12.Wedonotprovidesupportforthispre-releaseversion.Youmayencounterbuildfailuresorotherbreakages.Pleasecreatepull-requestsinsteadoffilingissues.==>Installingdependenciesforruby:readline,libyaml,makedepend==>Installingrub
我们的git存储库中目前有一个Gemfile。但是,有一个gem我只在我的环境中本地使用(我的团队不使用它)。为了使用它,我必须将它添加到我们的Gemfile中,但每次我checkout到我们的master/dev主分支时,由于与跟踪的gemfile冲突,我必须删除它。我想要的是类似Gemfile.local的东西,它将继承从Gemfile导入的gems,但也允许在那里导入新的gems以供使用只有我的机器。此文件将在.gitignore中被忽略。这可能吗? 最佳答案 设置BUNDLE_GEMFILE环境变量:BUNDLE_GEMFI
几个月前,我读了一篇关于rubygem的博客文章,它可以通过阅读代码本身来确定编程语言。对于我的生活,我不记得博客或gem的名称。谷歌搜索“ruby编程语言猜测”及其变体也无济于事。有人碰巧知道相关gem的名称吗? 最佳答案 是这个吗:http://github.com/chrislo/sourceclassifier/tree/master 关于ruby-寻找通过阅读代码确定编程语言的rubygem?,我们在StackOverflow上找到一个类似的问题:
我安装了ruby版本管理器,并将RVM安装的ruby实现设置为默认值,这样'哪个ruby'显示'~/.rvm/ruby-1.8.6-p383/bin/ruby'但是当我在emacs中打开inf-ruby缓冲区时,它使用安装在/usr/bin中的ruby。有没有办法让emacs像shell一样尊重ruby的路径?谢谢! 最佳答案 我创建了一个emacs扩展来将rvm集成到emacs中。如果您有兴趣,可以在这里获取:http://github.com/senny/rvm.el
这似乎非常适得其反,因为太多的gem会在window上破裂。我一直在处理很多mysql和ruby-mysqlgem问题(gem本身发生段错误,一个名为UnixSocket的类显然在Windows机器上不能正常工作,等等)。我只是在浪费时间吗?我应该转向不同的脚本语言吗? 最佳答案 我在Windows上使用Ruby的经验很少,但是当我开始使用Ruby时,我是在Windows上,我的总体印象是它不是Windows原生系统。因此,在主要使用Windows多年之后,开始使用Ruby促使我切换回原来的系统Unix,这次是Linux。Rub
我正在玩HTML5视频并且在ERB中有以下片段:mp4视频从在我的开发环境中运行的服务器很好地流式传输到chrome。然而firefox显示带有海报图像的视频播放器,但带有一个大X。问题似乎是mongrel不确定ogv扩展的mime类型,并且只返回text/plain,如curl所示:$curl-Ihttp://0.0.0.0:3000/pr6.ogvHTTP/1.1200OKConnection:closeDate:Mon,19Apr201012:33:50GMTLast-Modified:Sun,18Apr201012:46:07GMTContent-Type:text/plain