在当今的软件开发领域,MongoDB和Node.js是非常流行的技术组合。MongoDB是一个强大的NoSQL数据库,而Node.js则是基于Chrome V8引擎的JavaScript运行环境,它们的结合可以让开发者高效地构建出各种类型的应用程序。Ubuntu作为一个广泛使用的Linux发行版,为我们提供了一个稳定且易于使用的开发环境。下面将详细介绍如何在Ubuntu上安装和配置MongoDB与Node.js。

安装MongoDB

首先,我们需要导入MongoDB的官方GPG密钥,这是为了确保我们下载的软件包是来自官方且没有被篡改。打开终端,输入以下命令:

wget -qO - https://www.mongodb.org/static/pgp/server-5.0.asc | sudo apt-key add -

上述命令中,wget -qO -用于从指定的URL下载文件并将其输出到标准输出,然后通过管道(|)将输出传递给sudo apt-key add -,从而完成密钥的添加。

接下来,我们要为MongoDB创建一个源列表文件。使用以下命令:

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

这里的命令将指定的源信息写入到指定的文件中,确保系统知道从哪里下载MongoDB软件包。

更新系统的软件包列表,以便获取最新的软件包信息:

sudo apt-get update

现在可以安装MongoDB了,使用以下命令:

sudo apt-get install -y mongodb-org

安装完成后,我们需要启动MongoDB服务,并设置其在系统启动时自动启动。使用以下命令:

sudo systemctl start mongod
sudo systemctl enable mongod

为了验证MongoDB是否成功安装并运行,可以检查服务的状态:

sudo systemctl status mongod

如果看到“active (running)”的字样,说明MongoDB已经成功启动。

配置MongoDB

MongoDB的配置文件位于/etc/mongod.conf。我们可以使用文本编辑器(如nano或vim)来打开并编辑这个文件。例如,使用nano编辑器:

sudo nano /etc/mongod.conf

在配置文件中,有几个重要的参数可以进行调整。比如,bindIp参数用于指定MongoDB监听的IP地址。默认情况下,它可能只监听本地回环地址(127.0.0.1),如果你想让其他机器可以访问MongoDB,可以将其修改为服务器的实际IP地址或0.0.0.0(表示监听所有可用的网络接口)。

修改完成后,保存并退出编辑器。然后重新启动MongoDB服务,使配置生效:

sudo systemctl restart mongod

为了保证MongoDB的安全性,我们可以启用身份验证。首先,以管理员身份连接到MongoDB:

mongo

在MongoDB的shell中,切换到admin数据库:

use admin

创建一个管理员用户:

db.createUser(
  {
    user: "admin",
    pwd: "your_password",
    roles: [ { role: "userAdminAnyDatabase", db: "admin" }, "readWriteAnyDatabase" ]
  }
)

这里的“your_password”需要替换为你自己设置的强密码。创建用户后,退出MongoDB shell。然后再次编辑配置文件,启用身份验证:

sudo nano /etc/mongod.conf

在配置文件中找到“security”部分,取消注释并添加以下内容:

security:
  authorization: enabled

保存并退出编辑器,重新启动MongoDB服务:

sudo systemctl restart mongod

之后,连接到MongoDB时就需要提供用户名和密码了:

mongo -u "admin" -p "your_password" --authenticationDatabase "admin"

安装Node.js

在Ubuntu上安装Node.js有多种方法,这里我们使用NodeSource的发行版。首先,添加NodeSource的GPG密钥:

curl -sL https://deb.nodesource.com/setup_16.x | sudo -E bash -

上述命令会自动下载并添加NodeSource的源到系统中。然后,安装Node.js和npm(Node.js的包管理工具):

sudo apt-get install -y nodejs

安装完成后,验证Node.js和npm是否成功安装:

node -v
npm -v

如果分别显示了Node.js和npm的版本号,说明安装成功。

配置Node.js

npm有一些默认的配置选项,我们可以根据需要进行调整。例如,我们可以设置npm的全局安装路径,避免每次安装全局包时都需要使用sudo。首先,创建一个用于全局包的目录:

mkdir ~/.npm-global

然后,配置npm使用这个目录:

npm config set prefix '~/.npm-global'

接下来,将这个目录添加到系统的环境变量中。编辑~/.profile文件:

nano ~/.profile

在文件末尾添加以下内容:

export PATH=~/.npm-global/bin:$PATH

保存并退出编辑器,然后使配置生效:

source ~/.profile

现在,我们就可以在不使用sudo的情况下全局安装npm包了。

使用MongoDB和Node.js开发应用

安装和配置好MongoDB和Node.js后,我们可以开始开发应用程序了。首先,创建一个新的项目目录:

mkdir my-node-mongo-app
cd my-node-mongo-app

初始化一个新的npm项目:

npm init -y

安装MongoDB的Node.js驱动程序:

npm install mongodb

以下是一个简单的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,然后在终端中运行:

node app.js

如果一切正常,你应该会看到添加文档的信息输出。

通过以上步骤,我们详细介绍了如何在Ubuntu上安装和配置MongoDB与Node.js,并给出了一个简单的应用开发示例。希望这些内容能帮助你顺利搭建开发环境,开展项目开发。