整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          在 Linux 上配置 mongodb

          在 Linux 上配置 mongodb

          ongoDB 是一個介于關系數據庫和非關系數據庫之間的產品,是非關系數據庫當中功能最豐富,最像關系數據庫的。他支持的數據結構非常松散,是類似json的bson格式,因此可以存儲比較復雜的數據類型。Mongo最大的特點是他支持的查詢語言非常強大,其語法有點類似于面向對象的查詢語言,幾乎可以實現類似關系數據庫單表查詢的絕大部分功能,而且還支持對數據建立索引。

          1.下載Linux安裝包

          如下圖,放到本地的某個角落,要記得位置哦~

          2.連接你的服務器

          ssh root@你的IP //回車輸入密碼 

          3.安裝包上傳

          另開ssh窗口(command+n),如果是windows就打開新的cmd窗口,因為我們要操作本地文件,之前的窗口我們已經登了服務器了。傳的方法很多,我只演示其中一種。
          cd "安裝包所在文件夾" // 去你剛才安裝包放的位置
          scp "本地文件" root@你的IP // 回車輸入密碼開始傳送

          如下圖,我是傳送到服務器的根目錄下。其實不建議,你可以放在一個固有目錄,比如/usr/local


          ls -l //以列表的形式展開,我們可以看到已經下載成功了。

          4.解壓安裝包

          tar -zxvf mongodb-linux-x86_64-3.4.6.tgz //解壓 不同文件有不同的解壓命令,自己百度即可

          5.填坑的一步

          剛才說大家可以把每次安裝的東東放到固定的文件夾,所以我把解壓好的文件移到了 /usr/local/mongodb目錄了,如果你已經放到了你喜歡的位置,可以跳過此步驟。如果你不知道怎么移,可以看下。
          cd /user/local //進入local
          mkdir mongodb //創建mongodb文件夾
          cd / //進入根目錄
          mv mongodb-linux-x86_64-3.4.6 /usr/local/mongodb /*將剛才的解壓包移入 /usr/local/mongodb*/

          6.配置mongodb運行環境

          mkdir data //創建data文件夾,存放數據庫db文件  
          mkdir logs //創建logs文件夾,存放日志文件  
          cd logs //進入logs  
          touch mongo.log //創建log文件  
          cd .. //返回上一級  
          mkdir etc //創建配置文件夾  
          cd etc // 進入etc  
          vim mongo.conf //編輯同時創建mongo.conf 文件

          以下是mongo.conf文件里的代碼,大家看好不要寫錯,進入文件之后要按一下鍵盤i才能開始編寫代碼。

          dbpath=/usr/local/mongodb/data //路徑一定要輸入絕對的  
          logpath=/usr/local/mongodb/logs/mongo.log //路徑一定要輸入絕對的  
          logappend=true  
          journal=true  
          quiet=true  
          port=27017 //端口

          寫好了按esc鍵退出,然后按shift+:會在最下面出現:然后輸入wq,保存并退出的意思。


          到了這一步就接近尾聲了。

          7.啟動mongodb

          cd mongodb/mongodb-linux-x86_64-3.4.6/bin //進入安裝包的bin目錄下 
          mongod -f /usr/local/mongodb/etc/mongo.conf  //啟動1方法  或 ./mongod -f /usr/local/mongodb/etc/mongo.conf  //啟動2方法  

          如果輸入這個命令,出現如下圖,沒什么變化,只有光標閃爍。

          8.本地測試是否成功

          我用的可視化工具 Robo 3t,新建鏈接,address輸入服務器地址,端口填你mongo.conf里配置的,基本都是27027。


          點擊保存,如下圖操作,進行 Connect。


          如果到了這一步基本就是成功啦。

          9.小坑警示

          我之前在mongo.conf 里 路徑寫的是相對的,就出現了下面的問題。

          然后就是這樣子的。

          10.總結

          方法有很多,我寫的只是其中一種,自己也是第一次安裝。其中也有點坑坑,遇到問題不要認輸,總會解決的,寫的不對不好的地方,希望大家不吝賜教~

          本文地址:https://www.linuxprobe.com/linux-mongodb.html

          .什么mongodb?

          MongoDB 是一個基于分布式文件存儲的數據庫,由 C++ 語言編寫,旨在為 WEB 應用提供可擴展的高性能數據存儲解決方案。MongoDB 是一個介于關系數據庫和非關系數據庫之間的產品,是非關系數據庫當中功能最豐富,最像關系數據庫的。 MongoDB 將數據存儲為一個文檔,數據結構由鍵值(key=>value)對組成。MongoDB 文檔類似于 JSON 對象。字段值可以包含其他文檔,數組及文檔數組。

          2、MongoDB 概念

          2.1、數據庫

          MongoDB 的單個實例可以容納多個獨立的數據庫,每個數據庫都有自己的集合和權限。 數據庫通過名字來標識;數據庫名為 UTF-8 字符串,需滿足以下條件:

          • 不能是空字符串("")。
          • 不得含有 ' '(空格)、.、$、/、\ 和 >不得含有 ' '(空格)、.、$、/、\ 和 \0 (空字符)。< (空字符)。
          • 應全部小寫。
          • 最多 64 字節。

          內置數據庫:

          • admin:管理數據庫。將一個用戶添加到這個數據庫,則這個用戶自動繼承所有數據庫的權限。一些特定的服務器端命令也只能從這個數據庫運行,比如關閉服務器。
          • local:這個數據永遠不會被復制,可以用來存儲限于本地單臺服務器的集合。
          • config:當 MongoDB 使用分片時,config 數據庫用于保存分片的相關信息。

          2.2、文檔(Document)

          文檔是一組鍵值(key-value)對(即 BSON)。MongoDB 的文檔不需要設置相同的字段,并且相同的字段不需要相同的數據類型,這與關系型數據庫有很大的區別,也是 MongoDB 非常突出的特點。一個簡單的文檔例子如下:

          {"name":"李白", "age":30}

          文檔有如下特性:

          1. 文檔中的鍵/值對是有序的。
          2. 文檔中的值不僅可以是在雙引號里面的字符串,還可以是其他幾種數據類型(甚至可以是整個嵌入的文檔)。
          3. MongoDB 區分類型和大小寫。
          4. MongoDB 的文檔不能有重復的鍵。
          5. 文檔的鍵是字符串。除了少數例外情況,鍵可以使用任意 UTF-8 字符。

          文檔鍵命名規范:

          • 鍵不能含有>鍵不能含有\0 (空字符)。這個字符用來表示鍵的結尾。< (空字符)。這個字符用來表示鍵的結尾。
          • .和$有特別的意義,只有在特定環境下才能使用。
          • 以下劃線"_"開頭的鍵是保留的(不是嚴格要求的)。

          2.3、集合

          集合就是文檔組,類似于關系數據庫中的表。集合沒有固定的結構,可以插入不同格式和類型的數據,但通常情況下我們插入集合的數據都會有一定的關聯性。 比如,我們可以將以下不同數據結構的文檔插入到同一集合中:

          {"name":"杜甫", "age":29}
          {"name":"李白", "age":30}
          {"name":"白居易", "age":31, "height":175}

          集合名的命名規范:

          • 集合名不能是空字符串""。
          • 集合名不能含有>集合名不能含有\0字符(空字符),這個字符表示集合名的結尾。<>
          • 集合名字不能含有保留字符;集合名中不要有$。

          Capped collections 是固定大小的集合,當達到最大值時,它會自動覆蓋最早的文檔。和標準的集合不同,你必須要顯式的創建一個 capped collection,指定一個集合的大小,單位是字節。固定集合的數據存儲空間值提前分配的。固定集合不能刪除一個文檔,可以使用 drop() 方法刪除整個集合。

          2.4、MondoDB 和 RDBMS 的對比

          RDBMS 術語/概念

          MongoDB 術語/概念

          解釋/說明

          database

          database

          數據庫

          table

          collection

          數據庫表/集合

          row

          document

          數據記錄行/文檔

          column

          field

          數據字段/域

          index

          index

          索引

          table joins

          $lookup


          primary key

          primary key

          主鍵,MongoDB 自動將 _id 字段設置為主鍵

          transaction

          transaction


          group by

          aggregation


          3.如何部署

          mongodb有三種部署模式

          • Replica Set(副本集)
          • Sharded Cluster(分片)
          • Standalone MongoDB Instance(測試學習用)

          實驗目標

          在k8s里面部署mongodb副本集

          克隆項目

          git clone https://github.com/mongodb/mongodb-enterprise-kubernetes.git

          create namespace

          kubectl create namespace mongodb
          

          Create CustomResourceDefinitions

          kubectl apply -f crds.yaml -n namespace

          install the Operator

          kubectl apply -f mongodb-enterprise.yaml  -n namespace

          Projects

          A Project object is a Kubernetes ConfigMap that points to an Ops Manager installation and a Project. This ConfigMap has the following structure:

          $ cat my-project.yaml
          ---
          apiVersion: v1
          kind: ConfigMap
          metadata:
            name: my-project
            namespace: mongodb
          data:
            projectName: myProjectName # this is an optional parameter
            orgId: 5b890e0feacf0b76ff3e7183 # this is an optional parameter
            baseUrl: https://my-ops-manager-or-cloud-manager-url

          Apply this file to create the new Project:

          kubectl apply -f my-project.yaml -n middleware

          Credentials

          kubectl -n mongodb create secret generic my-credentials --from-literal="user=my-public-api-key" --from-literal="publicApiKey=my-private-api-key" -n middleware

          Creating a MongoDB Resource

          kubectl apply -f samples/mongodb/minimal/replica-set.yaml -n mongodb

          Create Admin Credentials Secret

          kubectl create secret generic ops-manager-admin-secret  --from-literal=Username="user.name@example.com" --from-literal=Password="Passw0rd."  --from-literal=FirstName="User" --from-literal=LastName="Name" -n <namespace>

          Create MongoDBOpsManager Resource

          kubectl apply -f samples/ops-manager/ops-manager-external.yaml -n <namespace>

          4.驗證

          為了從 Kubernetes 集群外部訪問 Ops Manager UI,您必須在 Ops Manager 資源定義中啟用 spec.externalConnectivity。最簡單的方法是配置 LoadBalancer 服務類型。

          測試Ops Manager UI

          您將能夠從 Operator 創建的 Service 對象中獲取用于連接到 Ops Manager UI 的 URL。

          訪問http//:{節點ip}:31147

          用戶名和密碼是前面創建的

          測試mongodb連接

          MongoDB Connection String:

          mongodb://redacted-credentials@ops-manager-external-db-0.ops-manager-external-db-svc.middleware.svc.cluster.local:27017,ops-manager-external-db-1.ops-manager-external-db-svc.middleware.svc.cluster.local:27017,ops-manager-external-db-2.ops-manager-external-db-svc.middleware.svc.cluster.local:27017/?authMechanism=SCRAM-SHA-256&authSource=admin&connectTimeoutMS=20000&replicaSet=ops-manager-external-db&serverSelectionTimeoutMS=20000

          用mongo compass客戶端工具測試,可以登錄

          5.引用

          • https://www.mongodb.com/docs/kubernetes-operator/current/tutorial/deploy-replica-set/
          • http://www.liuhaihua.cn/archives/710761.html

          所周知,NodeJS是一個基于Chrome V8 JavaScript引擎的運行時環境,用于服務器端和網絡應用程序。并且它是支持跨平臺的開放資源。NodeJS應用程序用純JavaScript編寫。

          使用Node JS上傳文件或圖像到服務器

          背景

          幾年前,如果你需要上傳任何文件或圖像到服務器,那么你得完全依賴于服務器端語言如C#和PHP。在JS革命之后,一切都改變了。今天我將告訴你如何使用NodeJS上傳文件到服務器,甚至不需要寫一行服務器端代碼。希望你會喜歡。

          創建空白的Node JS Web應用程序

          在package.json中設置依賴關系

          開始之前,我們首先要設置我們的依賴關系。為此,請打開package.json文件并粘貼代碼。

          { "name": "node_js_file_upload", "version": "0.0.1", "description": "Node_JS_File_Upload", "main": "server.js", "dependencies": { "body-parser": "^1.15.2", "express": "^4.14.0", "multer": "^1.2.0"}, "author": { "name": "Sibeesh"}}

          現在,運行NPM install命令,如下所示。

          npm install

          運行該命令后,可以看到解決方案中安裝了依賴關系。

          現在我們可以理解這些依賴關系是用來干什么的了。

          express

          根據Express Team,Express是一個極小且靈活的Node.js Web應用程序框架,為Web和移動應用程序提供了一組強大的功能。Express提供了基本Web應用程序功能的一個薄層,不會掩蓋你知道和喜歡的Node.js功能。你可以隨時在 這里 了解更多關于Express Package的信息。

          multer

          Multer是一個用于處理multipart / form-data的node.js中間件,主要用于上傳文件。它構建在busboy基礎上以提高效率。點擊 這里 閱讀更多關于multer包。

          開始使用依賴關系

          你可以按如下所示創建依賴關系的實例。

          var Express=require('express');var multer=require('multer');var bodyParser=require('body-parser');var app=Express();app.use(bodyParser.json());

          然后,創建說明應該在哪里以及如何保存文件/圖像的storage。

          var Storage=multer.diskStorage({ destination: function (req, file, callback) {callback(null, "./Images");}, filename: function (req, file, callback) {callback(null, file.fieldname + "_" + Date.now() + "_" + file.originalname);}});

          每個文件包含以下信息:

          fieldname:在窗體中指定的字段名

          originalname:用戶計算機上文件的名稱

          encoding:文件的編碼類型

          mimetype:文件的MIME類型

          size:文件的大小(以字節為單位)

          destination:保存文件的文件夾

          filename:目標文件的名稱

          path:上傳文件的完整路徑

          buffer:整個文件的Buffer

          現在請創建multer對象如下。

          var upload=multer({ storage: Storage }).array("imgUploader", 3); //Field name and max count

          這里multer接受我們在上一步中創建的storage作為參數。函數

          array(fieldname[, maxCount])

          接受文件數組,所有文件名都為fieldname。

          現在我們該寫post和get請求了:

          app.get("/", function (req, res) {res.sendFile(__dirname + "/index.html");});app.post("/api/Upload", function (req, res) {upload(req, res, function (err) { if (err) { return res.end("Something went wrong!");} return res.end("File uploaded sucessfully!.");});});

          這里/ api / Upload是我們將要設置的操作名稱,在我們馬上就會創建的HTML頁面上。最后,但并非最不重要的是,我們需要確保應用程序正在偵聽我們的特定端口,在本例下,為port 2000。

          app.listen(2000, function (a) { console.log("Listening to port 2000");});

          創建HTML頁面并設置上傳

          你可以使用jquery-3.1.1.min.js和jquery.form.min.js的引用創建如下所示的頁面。

          <!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head><meta charset="utf-8" /><title>Upload images to server using Node JS</title><script src="Scripts/jquery-3.1.1.min.js"></script><script src="Scripts/jquery.form.min.js"></script></head><body><form id="frmUploader" enctype="multipart/form-data" action="api/Upload/" method="post"><input type="file" name="imgUploader" multiple /><input type="submit" name="submit" id="btnSubmit" value="Upload" /></form></body></html>

          請注意,用于表單的ecctype必須是multipart / form-data,操作必須與我們在API中設置的相同。

          創建Ajax提交事件

          現在創建ajax事件,在事件中我們將調用我們的API。

          <script> $(document).ready(function () { var options={ beforeSubmit: showRequest, // pre-submit callback success: showResponse // post-submit callback }; // bind to the form's submit event $('#frmUploader').submit(function () { $(this).ajaxSubmit(options); // always return false to prevent standard browser submit and page navigation return false; }); }); // pre-submit callback function showRequest(formData, jqForm, options) { alert('Uploading is starting.'); return true; } // post-submit callback function showResponse(responseText, statusText, xhr, $form) { alert('status: ' + statusText + '\n\nresponseText: \n' + responseText ); } </script>

          ajaxSubmit函數是插件jquery.form.min.js的一部分,因此請確保你已經包含它。

          運行應用程序

          現在請運行你的應用程序。在運行應用程序之前,你總是可以將腳本文件設置為啟動文件,要設置的話就右鍵單擊項目并單擊屬性。

          現在你可以打開命令提示符,你可以在命令提示符處手動定位項目,也可以使用“Open command prompt here”選項。要選擇的話,請右鍵單擊你的項目并選擇如下選項。

          現在在命令提示符中鍵入node server.js,這將確保你的服務器正在運行。如果一切ok的話,你可以看到如下窗口。

          現在我們可以運行我們的網頁,因為服務器已經準備就緒,請訪問瀏覽器并輸入網址http://localhost:2000。使用我們創建的文件上傳器選擇幾個文件。

          如果單擊提交,你可以看到我們正在調用我們的方法操作,并且文件已上傳。

          你總是可以下載附帶的源代碼以查看完整的代碼和應用程序。編碼快樂!

          結論

          歡迎給出你寶貴的建議和反饋。

          本文由華宇互聯旗下領先品牌樂橙谷提供!


          主站蜘蛛池模板: 精品亚洲福利一区二区| 亚洲av福利无码无一区二区| 无码人妻一区二区三区精品视频| 亚洲国产精品综合一区在线| 国产探花在线精品一区二区| 中文字幕亚洲一区| 亚洲V无码一区二区三区四区观看| 国产无套精品一区二区| 无码国产精品一区二区免费3p| 亚洲一区二区三区久久| 亚洲性色精品一区二区在线| 精品91一区二区三区| 国产免费一区二区三区不卡| 好看的电影网站亚洲一区| 国产微拍精品一区二区| 偷拍精品视频一区二区三区| 精品日产一区二区三区手机| 韩国福利一区二区美女视频| 国产精品免费综合一区视频| 国产一区二区精品久久凹凸| 亚洲国产精品综合一区在线| 无码人妻精品一区二| 伊人久久精品一区二区三区| 成人区人妻精品一区二区不卡视频 | 奇米精品一区二区三区在线观看| 无码精品一区二区三区免费视频 | 国产精品成人免费一区二区| 久久精品国产一区二区电影| 中文字幕乱码一区久久麻豆樱花| 精品久久久久一区二区三区| 亚洲sm另类一区二区三区| 亚洲综合av永久无码精品一区二区| 欲色aV无码一区二区人妻| 中文字幕日本精品一区二区三区| 秋霞日韩一区二区三区在线观看 | 亲子乱av一区区三区40岁| 亚洲一区中文字幕久久| 日本一区二区三区高清| 国产一区在线视频观看| 国产精品免费视频一区| 无码人妻av一区二区三区蜜臀 |