在當(dāng)今的軟件開(kāi)發(fā)領(lǐng)域,MongoDB和Node.js是非常流行的技術(shù)組合。MongoDB是一個(gè)強(qiáng)大的NoSQL數(shù)據(jù)庫(kù),而Node.js則是基于Chrome V8引擎的JavaScript運(yùn)行環(huán)境,它們的結(jié)合可以讓開(kāi)發(fā)者高效地構(gòu)建出各種類型的應(yīng)用程序。Ubuntu作為一個(gè)廣泛使用的Linux發(fā)行版,為我們提供了一個(gè)穩(wěn)定且易于使用的開(kāi)發(fā)環(huán)境。下面將詳細(xì)介紹如何在Ubuntu上安裝和配置MongoDB與Node.js。
安裝MongoDB
首先,我們需要導(dǎo)入MongoDB的官方GPG密鑰,這是為了確保我們下載的軟件包是來(lái)自官方且沒(méi)有被篡改。打開(kāi)終端,輸入以下命令:
wget -qO - https://www.mongodb.org/static/pgp/server-5.0.asc | sudo apt-key add -
上述命令中,wget -qO -用于從指定的URL下載文件并將其輸出到標(biāo)準(zhǔn)輸出,然后通過(guò)管道(|)將輸出傳遞給sudo apt-key add -,從而完成密鑰的添加。
接下來(lái),我們要為MongoDB創(chuàng)建一個(gè)源列表文件。使用以下命令:
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/5.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-5.0.list
這里的命令將指定的源信息寫(xiě)入到指定的文件中,確保系統(tǒng)知道從哪里下載MongoDB軟件包。
更新系統(tǒng)的軟件包列表,以便獲取最新的軟件包信息:
sudo apt-get update
現(xiàn)在可以安裝MongoDB了,使用以下命令:
sudo apt-get install -y mongodb-org
安裝完成后,我們需要啟動(dòng)MongoDB服務(wù),并設(shè)置其在系統(tǒng)啟動(dòng)時(shí)自動(dòng)啟動(dòng)。使用以下命令:
sudo systemctl start mongod sudo systemctl enable mongod
為了驗(yàn)證MongoDB是否成功安裝并運(yùn)行,可以檢查服務(wù)的狀態(tài):
sudo systemctl status mongod
如果看到“active (running)”的字樣,說(shuō)明MongoDB已經(jīng)成功啟動(dòng)。
配置MongoDB
MongoDB的配置文件位于/etc/mongod.conf。我們可以使用文本編輯器(如nano或vim)來(lái)打開(kāi)并編輯這個(gè)文件。例如,使用nano編輯器:
sudo nano /etc/mongod.conf
在配置文件中,有幾個(gè)重要的參數(shù)可以進(jìn)行調(diào)整。比如,bindIp參數(shù)用于指定MongoDB監(jiān)聽(tīng)的IP地址。默認(rèn)情況下,它可能只監(jiān)聽(tīng)本地回環(huán)地址(127.0.0.1),如果你想讓其他機(jī)器可以訪問(wèn)MongoDB,可以將其修改為服務(wù)器的實(shí)際IP地址或0.0.0.0(表示監(jiān)聽(tīng)所有可用的網(wǎng)絡(luò)接口)。
修改完成后,保存并退出編輯器。然后重新啟動(dòng)MongoDB服務(wù),使配置生效:
sudo systemctl restart mongod
為了保證MongoDB的安全性,我們可以啟用身份驗(yàn)證。首先,以管理員身份連接到MongoDB:
mongo
在MongoDB的shell中,切換到admin數(shù)據(jù)庫(kù):
use admin
創(chuàng)建一個(gè)管理員用戶:
db.createUser(
{
user: "admin",
pwd: "your_password",
roles: [ { role: "userAdminAnyDatabase", db: "admin" }, "readWriteAnyDatabase" ]
}
)這里的“your_password”需要替換為你自己設(shè)置的強(qiáng)密碼。創(chuàng)建用戶后,退出MongoDB shell。然后再次編輯配置文件,啟用身份驗(yàn)證:
sudo nano /etc/mongod.conf
在配置文件中找到“security”部分,取消注釋并添加以下內(nèi)容:
security: authorization: enabled
保存并退出編輯器,重新啟動(dòng)MongoDB服務(wù):
sudo systemctl restart mongod
之后,連接到MongoDB時(shí)就需要提供用戶名和密碼了:
mongo -u "admin" -p "your_password" --authenticationDatabase "admin"
安裝Node.js
在Ubuntu上安裝Node.js有多種方法,這里我們使用NodeSource的發(fā)行版。首先,添加NodeSource的GPG密鑰:
curl -sL https://deb.nodesource.com/setup_16.x | sudo -E bash -
上述命令會(huì)自動(dòng)下載并添加NodeSource的源到系統(tǒng)中。然后,安裝Node.js和npm(Node.js的包管理工具):
sudo apt-get install -y nodejs
安裝完成后,驗(yàn)證Node.js和npm是否成功安裝:
node -v npm -v
如果分別顯示了Node.js和npm的版本號(hào),說(shuō)明安裝成功。
配置Node.js
npm有一些默認(rèn)的配置選項(xiàng),我們可以根據(jù)需要進(jìn)行調(diào)整。例如,我們可以設(shè)置npm的全局安裝路徑,避免每次安裝全局包時(shí)都需要使用sudo。首先,創(chuàng)建一個(gè)用于全局包的目錄:
mkdir ~/.npm-global
然后,配置npm使用這個(gè)目錄:
npm config set prefix '~/.npm-global'
接下來(lái),將這個(gè)目錄添加到系統(tǒng)的環(huán)境變量中。編輯~/.profile文件:
nano ~/.profile
在文件末尾添加以下內(nèi)容:
export PATH=~/.npm-global/bin:$PATH
保存并退出編輯器,然后使配置生效:
source ~/.profile
現(xiàn)在,我們就可以在不使用sudo的情況下全局安裝npm包了。
使用MongoDB和Node.js開(kāi)發(fā)應(yīng)用
安裝和配置好MongoDB和Node.js后,我們可以開(kāi)始開(kāi)發(fā)應(yīng)用程序了。首先,創(chuàng)建一個(gè)新的項(xiàng)目目錄:
mkdir my-node-mongo-app cd my-node-mongo-app
初始化一個(gè)新的npm項(xiàng)目:
npm init -y
安裝MongoDB的Node.js驅(qū)動(dòng)程序:
npm install mongodb
以下是一個(gè)簡(jiǎn)單的Node.js示例代碼,用于連接到MongoDB并添加一條文檔:
const { MongoClient } = require('mongodb');
// 連接字符串
const uri = "mongodb://admin:your_password@localhost:27017";
const client = new MongoClient(uri);
async function run() {
try {
await client.connect();
const database = client.db('testdb');
const collection = database.collection('testcollection');
const doc = { name: 'John Doe', age: 30 };
const result = await collection.insertOne(doc);
console.log(`A document was inserted with the _id: ${result.insertedId}`);
} finally {
await client.close();
}
}
run().catch(console.dir);將上述代碼保存為app.js,然后在終端中運(yùn)行:
node app.js
如果一切正常,你應(yīng)該會(huì)看到添加文檔的信息輸出。
通過(guò)以上步驟,我們?cè)敿?xì)介紹了如何在Ubuntu上安裝和配置MongoDB與Node.js,并給出了一個(gè)簡(jiǎn)單的應(yīng)用開(kāi)發(fā)示例。希望這些內(nèi)容能幫助你順利搭建開(kāi)發(fā)環(huán)境,開(kāi)展項(xiàng)目開(kāi)發(fā)。