亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

10分鐘用python搭建一個(gè)超好用的CMDB系統(tǒng)

系統(tǒng) 1776 0

CMDB 是什么,作為 IT 工程師的你想必已經(jīng)聽說過了,或者已經(jīng)爛熟了,容我再介紹一下,以防有讀者還不知道。CMDB 的全稱是 Configuration Management Data Base,翻譯下就是配置管理數(shù)據(jù)庫,它存儲(chǔ)與管理企業(yè) IT 架構(gòu)中設(shè)備的各種配置信息,它支撐服務(wù)流程的運(yùn)轉(zhuǎn)、發(fā)揮著配置信息的價(jià)值。在今天,無論是自動(dòng)化運(yùn)維、標(biāo)準(zhǔn)化運(yùn)維、DevOps、甚至是時(shí)髦的智能運(yùn)維,其實(shí)都離開不 CMDB,可以說 CMDB 是運(yùn)維體系的基石,有了配置信息數(shù)據(jù)庫,后面各種標(biāo)準(zhǔn)、流程都可以建立在 CMDB 基礎(chǔ)之上,從而實(shí)現(xiàn)真正的標(biāo)準(zhǔn)化、自動(dòng)化、智能化運(yùn)維,節(jié)約運(yùn)維成本的同時(shí),也降低運(yùn)維流程混亂帶來的操作風(fēng)險(xiǎn)。

今天分享一個(gè)開源的 cmdb 系統(tǒng)的搭建過程,通過這一系列搭建的過程你不僅可以獲得一個(gè)支持全文檢索、自帶 restful api 的 cmdb 系統(tǒng),而且還可以學(xué)到不少時(shí)髦的技術(shù)。

后端技術(shù):

  • Python3
  • Django
  • Django REST framework
  • Elasticsearch
  • uwsgi
  • Nginx
  • Docker

前端技術(shù):

  • Vue
  • Element-ui
  • Vue-Router
  • Vuex
  • Axios

先看一下這個(gè) CMDB 系統(tǒng)的容顏,設(shè)計(jì)上參考了餓了么內(nèi)部的 cmdb 系統(tǒng):

10分鐘用python搭建一個(gè)超好用的CMDB系統(tǒng)_第1張圖片

基本功能有:熱添加刪除表、自定義字段類型,方便增刪改查的前端界面,強(qiáng)大的搜索查找能力(后端使用elasticsearch存儲(chǔ)數(shù)據(jù) ) 可以配合 kibana 使用,查看數(shù)據(jù)的刪除修改記錄、歷史版本等,還帶有表級(jí)權(quán)限管理,開放所有 API。

github 倉庫
后端:https://github.com/open-cmdb/cmdb
前端:https://github.com/open-cmdb/cmdb-web

下面介紹兩種方法搭建此開源 cmdb 系統(tǒng) ,一個(gè)是使用 Docker,適用于 linux 操作系統(tǒng) ,另一個(gè)是不使用 Docker,適用于 windows 和 linux 。最后介紹下 vue 環(huán)境的搭建。

1. 使用 Docker

如果你熟悉容器技術(shù),推薦使用此方法,不過最新的 Docker 目前還不支持大多數(shù)的 windows 版本,因此如果使用容器,請(qǐng)使用 ubuntu 或 centos 等 Linux 操作系統(tǒng)。首先要安裝 Docker,安裝 Docker 的方法請(qǐng)參考我之前的一篇文章docker容器從入門到癡迷,或直接網(wǎng)上搜索對(duì)應(yīng)操作系統(tǒng)的安裝方法對(duì)著做即可,沒有難度。

環(huán)境準(zhǔn)備:

1、一臺(tái)可以訪問互聯(lián)網(wǎng)的 linux 服務(wù)器 內(nèi)存最好 >= 4G ,并創(chuàng)建一個(gè)具有 sudo 權(quán)限的普通用戶, 注意要有 yum 命令,如果沒有可以安裝下
2、一個(gè) cmdb 專用的郵箱,用于發(fā)送密碼和驗(yàn)證碼,如果使用163、qq等第三方郵箱請(qǐng)?jiān)谠O(shè)置里面打開POP3/SMTP/IMAP服務(wù)并生成授權(quán)碼。 如果不使用注冊(cè)和忘記密碼功能,也可以不準(zhǔn)備

一鍵安裝

將下述代碼保存到 install_cmdb.py 并執(zhí)行 sudo python3 install_cmdb.py 即可一鍵安裝。

            
# -*- coding: utf-8 -*-
import os
import subprocess
import argparse
import time

def base(cmd):
 if subprocess.call(cmd, shell=True):
  raise Exception("{} 執(zhí)行失敗".format(cmd))

def install_docker():
 base("sudo yum install -y yum-utils device-mapper-persistent-data lvm2")
 base("sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo")
 base("sudo yum makecache fast")
 base("sudo yum -y install docker-ce")
 if(not os.path.exists("/etc/docker")):
  base("mkdir -p /etc/docker")
 with open("/etc/docker/daemon.json", "w") as f:
  f.write('{\n "registry-mirrors": ["https://9f4w4icn.mirror.aliyuncs.com"] \n}')
 base("sudo systemctl daemon-reload")
 base("sudo systemctl start docker")

def create_dir():
 if (not os.path.exists("/var/cmdb/db")):
  base("sudo mkdir -p /var/cmdb/db")
 if (not os.path.exists("/var/cmdb/es")):
  base("sudo mkdir -p /var/cmdb/es")

def run_db_container():
 base("sudo docker run --name cmdb-db -d -e MYSQL_ROOT_PASSWORD=cmdbcmdb -v /var/cmdb/db:/var/lib/mysql mysql:5.7.21")

def run_es_container():
 base("sudo docker run --name cmdb-es -d -v /var/cmdb/es:/usr/share/elasticsearch/data elasticsearch:5.6.8")

def init_db():
 base("sudo docker run -it --rm --link cmdb-db -e ENV=PRO -e DB_HOST=cmdb-db -e DB_PORT=3306 -e DB_USERNAME=root -e DB_PASSWORD=cmdbcmdb -e DB_NAME=cmdb mingmingtang/cmdb init-db")

def run_cmdb_container(site_url, email_host, email_port, email_username, email_password):
 base("sudo docker run -d --name cmdb --link cmdb-db --link cmdb-es -p 80:80 -e ENV=PRO -e SITE_URL={} -e DB_HOST=cmdb-db -e DB_PORT=3306 -e DB_USERNAME=root -e DB_PASSWORD=cmdbcmdb -e DB_NAME=cmdb -e ELASTICSEARCH_HOSTS=cmdb-es -e EMAIL_HOST={} -e EMAIL_PORT={} -e EMAIL_USERNAME={} -e EMAIL_PASSWORD={} mingmingtang/cmdb start".format(site_url, email_host, email_port, email_username, email_password))

def input_para(help):
 value = ""
 while(not value):
  value = raw_input(help)
 return value

if __name__ == '__main__':
 if(os.geteuid() != 0):
  raise("請(qǐng)以root權(quán)限運(yùn)行")
 site_url = input_para("請(qǐng)輸入網(wǎng)站域名或IP(http://cmdb.xxx.com):")
 email_host = input_para("網(wǎng)站郵箱服務(wù)器(smtp.163.com):")
 email_port = input_para("郵箱服務(wù)器端口(25):")
 email_username = input_para("郵箱用戶名(cmdb@163.com):")
 email_password = input_para("郵箱密碼|獨(dú)立授權(quán)碼(P@ssw0rd):")

 print("開始安裝docker")
 install_docker()
 print("開始創(chuàng)建目錄")
 create_dir()
 print("開始運(yùn)行mysql容器")
 run_db_container()
 print("開始運(yùn)行elasticsearch容器")
 run_es_container()
 print("等待數(shù)據(jù)庫啟動(dòng)完成(10s)")
 time.sleep(10)
 print("開始初始化數(shù)據(jù)庫")
 init_db()
 print("開始運(yùn)行cmdb")
 run_cmdb_container(site_url, email_host, email_port, email_username, email_password)
 print("完成!")
          

輸入網(wǎng)站地址和郵箱信息開始安裝,如下圖所示:

10分鐘用python搭建一個(gè)超好用的CMDB系統(tǒng)_第2張圖片

如果一切順利一會(huì)兒后您將看到安裝完成,如果失敗了可能就要調(diào)整一些系統(tǒng)參數(shù)并刪除已運(yùn)行的容器重新執(zhí)行了,不過根據(jù)我的安裝經(jīng)驗(yàn),基本不會(huì)出錯(cuò),容器還是非常方便部署的。

10分鐘用python搭建一個(gè)超好用的CMDB系統(tǒng)_第3張圖片

執(zhí)行

            
sudo docker ps
          

將看到三個(gè)正在運(yùn)行的容器,分別是 cmdb,cmdb-es,cmdb-db,如下圖所示

其中 cmdb 運(yùn)行著 web 服務(wù)器(nginx,uwsgi,django,vue.js),cmdb-es 運(yùn)行著 Elasticsearch 全文檢索引擎,也存儲(chǔ)你的配置信息,cmdb-db 運(yùn)行著 mysql,保存著 web 服務(wù)器的元數(shù)據(jù)(django 的知識(shí)庫)。

在瀏覽器中輸入"localhost" 盡情的開始享用吧。

2. 不使用 Docker

下面的內(nèi)容主要是分享給 windows 用戶的,linux 用戶也可以對(duì)比操作,沒有問題。使用 Docker 雖然方便部署,但它屏蔽了一些細(xì)節(jié),不利于二次開發(fā)和問題排查。在不使用 Docker 的情況下,我們不僅要裝軟件,還要安裝依賴,配置環(huán)境,雖然麻煩,但是可以學(xué)到更多知識(shí),出了問題也可以很快定位,更能加深對(duì)項(xiàng)目框架的理解,也是值得的。

(1)安裝 mysql,創(chuàng)建數(shù)據(jù)庫,配置權(quán)限

如果你的本機(jī)已經(jīng)安裝 mysql,則不心再安裝,直接創(chuàng)建數(shù)據(jù)庫,配置權(quán)限即可。

安裝 mysql

從網(wǎng)官下載最新的 MySQL Community Server [https://dev.mysql.com/downloads/mysql/]
比如我下載的是 mysql-8.0.12-winx64.zip ,這是個(gè)免安裝版本,直接解壓到你想安裝的目錄內(nèi),并在里面新建 my.ini 文件,位置如下圖所示:

10分鐘用python搭建一個(gè)超好用的CMDB系統(tǒng)_第4張圖片

my.ini 的文件內(nèi)容如下所示:

            
[mysqld]
# 設(shè)置3306端口
port=3306
# 設(shè)置mysql的安裝目錄
basedir=D:\program\mysql\mysql-8.0.12-winx64
# 設(shè)置mysql數(shù)據(jù)庫的數(shù)據(jù)的存放目錄
datadir=D:\program\mysql\mysql-8.0.12-winx64\data
# 允許最大連接數(shù)
max_connections=200
# 允許連接失敗的次數(shù)。這是為了防止有人從該主機(jī)試圖攻擊數(shù)據(jù)庫系統(tǒng)
max_connect_errors=10
# 服務(wù)端使用的字符集默認(rèn)為UTF8
character-set-server=utf8
# 創(chuàng)建新表時(shí)將使用的默認(rèn)存儲(chǔ)引擎
default-storage-engine=INNODB
# 默認(rèn)使用“mysql_native_password”插件認(rèn)證
default_authentication_plugin=mysql_native_password
[mysql]
# 設(shè)置mysql客戶端默認(rèn)字符集
default-character-set=utf8
[client]
# 設(shè)置mysql客戶端連接服務(wù)端時(shí)默認(rèn)使用的端口
port=3306
default-character-set=utf8
          

請(qǐng)注意下面的路徑設(shè)置要正確,

            
# 設(shè)置mysql的安裝目錄
basedir=D:\program\mysql\mysql-8.0.12-winx64
# 設(shè)置mysql數(shù)據(jù)庫的數(shù)據(jù)的存放目錄
datadir=D:\program\mysql\mysql-8.0.12-winx64\data
          

如果你想從任意一個(gè)命令窗口啟動(dòng) mysql,請(qǐng)把 D:\program\mysql\mysql-8.0.12-winx64\bin 加入環(huán)境變量。 *

這個(gè) my.ini 文件的編碼一定保存為 gbk 格式,否則會(huì)報(bào)錯(cuò),我費(fèi)了好長(zhǎng)時(shí)間才發(fā)現(xiàn)這個(gè)問題。

接下來在MySQL安裝目錄的 bin 目錄(D:\program\mysql\mysql-8.0.12-winx64\bin)下以管理員權(quán)限執(zhí)行命令:mysqld --initialize --console;執(zhí)行完成后,在輸出信息中會(huì)打印 root 用戶的初始密碼,比如

            
[Server] A temporary password is generated for root@localhost: rIafvf5f5G,a
          

表示臨時(shí)密碼為 rIafvf5f5G,a ,用于 root 用戶第一次登陸,之后再修改 root 用戶的密碼。

這一步執(zhí)行后完成初始化操作,并在安裝目錄下生成 data 文件夾,用于存放數(shù)據(jù)。執(zhí)行

            
mysqld --install
          

完成 mysql 服務(wù)的安裝,安裝完成之后,就可以通過命令 net start mysql 啟動(dòng) mysql 的服務(wù)了。通過命令 net stop mysql 停止服務(wù)。通過命令 sc delete mysql /mysqld -remove 卸載 mysql 服務(wù)。接下來就可以建庫、用戶、分配權(quán)限了。

修改 root 密碼:
在 mysql 安裝目錄的 bin 目錄下執(zhí)行命令:mysql -u root -p 然后輸入上面的密碼,進(jìn)入 mysql 環(huán)境,執(zhí)行

            
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密碼';
          

注意命令尾的“;”一定要有,這是 mysql 的語法,

管理員 root 的 host 是 localhost,代表僅限 localhost 登錄訪問。如果要允許開放其他 ip 登錄,則需要添加新的 host。如果要允許所有 ip 訪問,可以直接修改成“%”;

            
ALTER USER 'root'@'%' IDENTIFIED BY '遠(yuǎn)程登陸密碼';
          

創(chuàng)建數(shù)據(jù)庫,并分配用戶權(quán)限

使用 root 用戶登陸 mysql 并執(zhí)行

            
mysql>create database cmdb;
          

即可創(chuàng)建數(shù)據(jù)庫 cmdb,但是這個(gè)數(shù)據(jù)庫只能有 root 訪問,如果要使用其他用戶訪問,則先新建用戶,例如讓 aaron 用戶可以完全控制 cmdb

            
mysql>CREATE USER 'aaron'@'%' IDENTIFIED BY 'aaron';
Query OK, 0 rows affected (0.48 sec)
mysql> grant all on cmdb.* to 'aaron'@'%';
Query OK, 0 rows affected (0.23 sec)
          

至此 mysql 已安裝配置完畢。

(2)安裝 Elasticsearch

這一步很簡(jiǎn)單,官網(wǎng)下載解壓,進(jìn)入其 bin 目錄運(yùn)行如下圖所示的 bat 文件即可 :

10分鐘用python搭建一個(gè)超好用的CMDB系統(tǒng)_第5張圖片

如果運(yùn)行失敗,說明本機(jī)沒有安裝 java,或者沒有正確地配置 java 環(huán)境變量,這些操作也非常簡(jiǎn)單,網(wǎng)上到處都是,不在此詳述。

(3)運(yùn)行 cmdb 后端 api 服務(wù)、前端 ui

首先準(zhǔn)備 Python3 的環(huán)境,這個(gè)也很簡(jiǎn)單,直接官網(wǎng)下載,運(yùn)行即可,記得把 Python 添加到 Path 變量中。

如果你的電腦里有多個(gè)項(xiàng)目,為防止項(xiàng)目的依賴包版本沖突,建議使用 virtualenv 來為每個(gè)項(xiàng)目前創(chuàng)建一個(gè)虛擬的 Python 環(huán)境,將各自的依賴包裝在自己的虛擬環(huán)境里。

(1)部署后端

執(zhí)行以下命令,注意命令后面的注釋。

            
git clone https://github.com/open-cmdb/cmdb.git
cd cmdb
#如創(chuàng)建了虛擬環(huán)境,請(qǐng)先激活
pip install -r requirements.txt #如果這一步有包安裝失敗,提示卻少 microsoft visual c++ 14.0 的話,請(qǐng)?jiān)诰W(wǎng)站 https://www.lfd.uci.edu/~gohlke/pythonlibs/ 上查找相應(yīng)的whl文件,直接 pip install .whl文件即可。
          

接下來修改3個(gè)文件

修改 apps/mgmt/views.py 文件,注釋掉 “ from . import initialize ”這一行。

修改 manage.py

將 APP_NAME = BASE_DIR.rsplit("/", 1)[-1] 修改為

APP_NAME = BASE_DIR.rsplit("\", 1)[-1] ,這是因?yàn)閣indows的路徑\ 在python 里會(huì)變成 \。

修改 cmdb/settings.py 文件,修改mysql 數(shù)據(jù)庫的配置信息如下所示:

            
DATABASES = {
 'default': {
 'ENGINE': 'django.db.backends.mysql',
 'NAME': "cmdb",
 "HOST": "127.0.0.1",
 "PORT": 3306,
 "USER": "aaron",
 "PASSWORD": "aaron"
 }
}
          

接著在命令窗口繼續(xù)執(zhí)行以下操作:請(qǐng)關(guān)注注釋內(nèi)容。

            
python manage.py makemigrations 
python manage.py migrate
python manage.py cmdb_create_superuser #這一步創(chuàng)建一可以登陸的管理員用戶
#修改 apps/mgmt/views.py 文件,取消注釋“ from . import initialize ”
python manage.py runserver #這一步啟動(dòng)后端的 api 服務(wù)

          

此時(shí)一個(gè)后端的服務(wù)已經(jīng)啟動(dòng)了,在瀏覽器中打開 “127.0.0.1:8000”就可以看到 api 的接口了。

10分鐘用python搭建一個(gè)超好用的CMDB系統(tǒng)_第6張圖片

(2)使用 nginx 部署前端并連接后端 api 服務(wù)

在命令容器執(zhí)行以下命令:

            
git clone https://github.com/open-cmdb/cmdb-web.git
          

獲取前端的源代碼,然后下載下載 ngnix 壓縮包,并解壓至安裝目錄,修改配置文件 nginx.conf,添加如下 server 配置:

            
server {
  listen 8080;
  server_name localhost;
  error_page 500 502 503 504 /50x.html;
  location = /50x.html {
  root html;
  }
  
  root E:\GitHub\cmdb-web\dist;
  index index.html;
  location / {
  try_files $uri $uri/ @router;
  index index.html;
  }
  
  location @router {
  rewrite ^.*$ /index.html last;
  }

  location ~ /api{
  proxy_pass http://127.0.0.1:8000;
  }
 }
          

其中以配置

            
 location ~ /api{
  proxy_pass http://127.0.0.1:8000;
  }
          

讓前臺(tái)發(fā)過來中以 api 開頭的 url 請(qǐng)求都轉(zhuǎn)發(fā)至 http://127.0.0.1:8000 進(jìn)行解析,即第一步部署的 django 項(xiàng)目,這樣就連接了前端和后端。然后我們?cè)?nginx.exe 所在的目錄下啟動(dòng) nginx 服務(wù)。

接下來在瀏覽器中輸入 127.0.0.1:8080 即可正常訪問本文開始處的 cmdb 系統(tǒng),您可以嘗試下強(qiáng)大的搜索功能及增刪改功能。

10分鐘用python搭建一個(gè)超好用的CMDB系統(tǒng)_第7張圖片

點(diǎn)擊右上方【API 文檔】 可以訪問 cmdb 的接口文檔,非常方便。

10分鐘用python搭建一個(gè)超好用的CMDB系統(tǒng)_第8張圖片

至此系統(tǒng)搭建完畢。如果要用于生產(chǎn)環(huán)境,請(qǐng)使用 linux 操作系統(tǒng),并使用 uwsgi 來驅(qū)動(dòng) django 項(xiàng)目。

3. Vue 環(huán)境搭建

我想你不會(huì)僅僅滿足于將別人的項(xiàng)目下載下來能運(yùn)行就行了,你肯定想對(duì)其進(jìn)行改造來滿足自己的需求。因此你可能會(huì)需要修改前端或后端,后端的修改其實(shí)上面部署的已經(jīng)可以了,你可以直接閱讀 django 項(xiàng)目的源代碼進(jìn)行修改調(diào)試。如果要修改前端代碼進(jìn)行調(diào)試,你就需要搭建 Vue 環(huán)境。

你可能會(huì)問了,Vue 是個(gè)啥?Vue 是一個(gè) javascript 框架,如果說 jQuery,你可能就知道了,使用方法是類似的,在 html 上引入一行 javascript 的文件,就可以使用框架的特性了。 Vue 是一套用于構(gòu)建用戶界面的漸進(jìn)式框架。與其它大型框架不同的是,Vue 被設(shè)計(jì)為可以自底向上逐層應(yīng)用。Vue 的核心庫只關(guān)注視圖層,不僅易于上手,還便于與第三方庫或既有項(xiàng)目整合。另一方面,當(dāng)與現(xiàn)代化的工具鏈以及各種支持類庫結(jié)合使用時(shí),Vue 也完全能夠?yàn)閺?fù)雜的單頁應(yīng)用提供驅(qū)動(dòng)。
學(xué)習(xí) vue 需要有 html、css、javascript 基礎(chǔ)
新手可以通過 html 上引入 Vue 的 js 文件來使用 vue,如下所示:

            
            
              Vue 測(cè)試實(shí)例 
            
            
            

{{ message }}

但是在較復(fù)雜的項(xiàng)目中,還是要使用工具來幫助我們管理項(xiàng)目的層級(jí)及文件之間的依賴關(guān)系,這就需要使用 vue 的命令行工具 vue-cli ,vue-cli 需要 npm 工具來安裝,npm 工具集成在 node.js 中,因此需要安裝 node.js。

安裝 node.js 非常簡(jiǎn)單,直接官網(wǎng)下載解壓即可使用:

10分鐘用python搭建一個(gè)超好用的CMDB系統(tǒng)_第9張圖片

將此路徑添加到環(huán)境變量 Path 中,你就可以在任意的命令窗口使用 npm 命令了。

1、安裝 vue-cli

先安裝淘寶鏡像,大家都知道國(guó)內(nèi)直接使用 npm 的官方鏡像是非常慢的,這里推薦使用淘寶 NPM 鏡像。

            
npm install -g cnpm --registry=https://registry.npm.taobao.org
          

執(zhí)行結(jié)果如下:

10分鐘用python搭建一個(gè)超好用的CMDB系統(tǒng)_第10張圖片

這樣就可以使用 cnpm 命令來安裝模塊了:使用 cnpm 安裝 vue-cli

10分鐘用python搭建一個(gè)超好用的CMDB系統(tǒng)_第11張圖片

然后就可以使用 vue init webpack my-project 來建一個(gè)項(xiàng)目my-project,這里需要進(jìn)行一些配置,默認(rèn)回車即可,如下圖所示:

10分鐘用python搭建一個(gè)超好用的CMDB系統(tǒng)_第12張圖片

等依賴安裝完畢后,進(jìn)入項(xiàng)目,執(zhí)行以下命令:

            
C:\Users\xx>cd my-project
C:\Users\xx\my-project>cnpm install
C:\Users\xx\my-project>cnpm run dev
          

運(yùn)行成功后后打印如下信息:

此時(shí)打開瀏覽器,輸入 http://localhost:8081

10分鐘用python搭建一個(gè)超好用的CMDB系統(tǒng)_第13張圖片

如果要把這個(gè)頁面部署在 nginx 服務(wù)器上,你還需要 build 來生成靜態(tài)資源,如下圖所示:

10分鐘用python搭建一個(gè)超好用的CMDB系統(tǒng)_第14張圖片

這時(shí)會(huì)在 my-project 下生成 dist 目錄,相當(dāng)于我們寫程序編譯生成的目標(biāo)文件。my-project 下的內(nèi)容如下:

10分鐘用python搭建一個(gè)超好用的CMDB系統(tǒng)_第15張圖片

10分鐘用python搭建一個(gè)超好用的CMDB系統(tǒng)_第16張圖片

此時(shí)已經(jīng)可以開啟你的 vue 之旅了。

當(dāng)學(xué)會(huì)了 Vue 之后,你就可以修改本項(xiàng)目的前端源代碼來滿足自己的需求了,進(jìn)入 src 目錄,查看并修改源代碼之后,進(jìn)入 cmdb_web 的項(xiàng)目目錄,執(zhí)行

            
# 安裝依賴,如果慢可換成 cnpm
npm install
# 啟動(dòng)服務(wù),默認(rèn)端口為8080,如果被占用會(huì)自動(dòng)選取一個(gè)未被占用的端口
npm run dev
# 建立靜態(tài)文件,可以放在 nginx 上運(yùn)行
npm run build
# 查看建立報(bào)告
npm run build --report
          

即可將生成的 dist 部署到 web 服務(wù)器了。

也許你想這樣實(shí)在太麻煩了,自己動(dòng)手寫一個(gè) cmdb 系統(tǒng),當(dāng)然也可以,但是我不推薦這樣做,畢竟你的時(shí)間是有限的,自己寫一個(gè)要比拿優(yōu)秀的代碼來改造要慢得多,當(dāng)然大神例外,作為一般人我們應(yīng)該避免重復(fù)造輪子,學(xué)會(huì)站在巨人的肩膀上。開發(fā)一個(gè)項(xiàng)目最好是找 github 上優(yōu)秀的開源項(xiàng)目,拿來做修改以滿足自己的需求,這才是正確的做法。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 久久夜夜操| 成年女人午夜毛片免费看 | 国产欧美在线观看不卡 | 国产成人综合自拍 | 四虎影院国产精品 | www久久只有这里有精品 | 91破解版在线 | 亚洲 | 欧美曰韩一区二区三区 | 天天插夜夜操 | 久久综合久久综合久久 | 免费观看一级特黄欧美大片 | 一级毛片免费播放视频 | 国产一区二区精品久久小说 | 久久综合玖玖爱中文字幕 | 干美女网站| 免费人成黄页网站在线观看 | 天天操天天摸天天射 | 国产精品久久久久久久小唯西川 | 日本一区二区网站 | 亚洲青色在线 | 中文线码中文高清播放中 | 亚洲精品中文字幕第一区 | 国产亚洲精品2021自在线 | 一区二区视频在线播放 | 亚洲视频福利 | 亚洲高清视频在线观看 | 欧美精品亚洲网站 | 久久青青视频 | 国产成+人+综合+亚洲不卡 | 在线性爱视频 | 亚洲成人国产 | 国产91av视频| 美女一级a毛片免费观看 | 免费看曰批女人爽的视频网址 | 国产亚洲亚洲精品777 | 狠狠色丁香婷综合久久 | 色综合合久久天天综合绕视看 | 99热精品免费 | 日韩精品一区二区三区高清 | 国产日产久久高清欧美一区 | 九九99香蕉在线视频免费 |