在 Azure 中的 Linux VM 上創建 MongoDB、Express、AngularJS 和 Node.js (MEAN) 堆棧

本教程介紹如何在 Azure 中的 Linux VM 上實現 MongoDB、Express、AngularJS 和 Node.js (MEAN) 堆棧。 通過創建的 MEAN 堆棧,可以在數據庫中添加、刪除和列出書籍。 你將學習如何執行以下操作:

創建 Linux VM

安裝 Node.js

安裝 MongoDB 并設置服務器

安裝 Express 并設置服務器的路由

使用 AngularJS 訪問路由

運行應用程序

Note

在 Azure 中國區使用 Azure CLI 2.0 之前,請先運行az cloud set -n AzureChinaCloud來改變云環境。如果想切回國際版 Azure,請再次運行az cloud set -n AzureCloud。

如果選擇在本地安裝并使用 CLI,本教程要求運行 Azure CLI 2.0.4 或更高版本。 運行az --version即可查找版本。 如果需要進行安裝或升級,請參閱安裝 Azure CLI 2.0

創建 Linux VM

使用az group create命令創建資源組,并使用az vm create命令創建 Linux VM。 Azure 資源組是在其中部署和管理 Azure 資源的邏輯容器。

以下示例使用 Azure CLI 在“中國北部”位置創建名為myResourceGroupMEAN的資源組。 將會創建一個包含 SSH 密鑰(如果默認密鑰位置不存在這些密鑰)的、名為myVM的 VM。 若要使用一組特定的密鑰,請使用 --ssh-key-value 選項。

Azure CLI復制

azgroupcreate--namemyResourceGroupMEAN--location"China North"azvmcreate\--resource-groupmyResourceGroupMEAN \--namemyVM \--imageUbuntuLTS \--admin-usernameazureuser \--admin-password'Azure12345678!'\--generate-ssh-keysazvmopen-port--port3300--resource-groupmyResourceGroupMEAN--namemyVM

創建 VM 后,Azure CLI 顯示類似于以下示例的信息。

Azure CLI復制

{"fqdns":"","id":"/subscriptions/{subscription-id}/resourceGroups/myResourceGroupMEAN/providers/Microsoft.Compute/virtualMachines/myVM","location":"China North","macAddress":"00-0D-3A-23-9A-49","powerState":"VM running","privateIpAddress":"10.0.0.4","publicIpAddress":"13.72.77.9","resourceGroup":"myResourceGroupMEAN"}

記下publicIpAddress。 此地址用于訪問 VM。

使用以下命令來與 VM 建立 SSH 會話。 請確保使用正確的公共 IP 地址。 在上例中,我們的 IP 地址為 13.72.77.9。

bash復制

ssh azureuser@13.72.77.9

安裝 Node.js

Node.js是構建在 Chrome V8 JavaScript 引擎基礎之上的 JavaScript 運行時。 本教程使用 Node.js 來設置 Express 路由和 AngularJS 控制器。

在 VM 上,使用通過 SSH 打開的 bash shell 安裝 Node.js。

bash復制

sudo apt-get install -y nodejs

安裝 MongoDB 并設置服務器

MongoDB將數據存儲在靈活的、類似于 JSON 的文檔中。 數據庫中的字段根據文檔的不同而異,數據結構隨時可發生變化。 針對示例應用程序,我們要將包含書名、ISBN 編號、作者和頁數的書籍記錄添加到 MongoDB。

在 VM 上,使用通過 SSH 打開的 bash shell 設置 MongoDB 密鑰。

bash復制

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 0C49F3730359A14518585931BC711F9BA15703C6echo"deb [ arch=amd64 ] http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.4 multiverse"| sudo tee /etc/apt/sources.list.d/mongodb-org-3.4.list

使用密鑰更新包管理器。

bash復制

sudo apt-get update

安裝 MongoDB。

bash復制

sudo apt-get install -y mongodb

啟動服務器。

bash復制

sudo service mongodb start

還需要安裝body-parser包,以幫助我們處理在請求中傳遞給服務器的 JSON。

安裝 npm 包管理器。

bash復制

sudo apt-get install npm

安裝正文分析器包。

bash復制

sudo npm install body-parser

創建名為Books的文件夾,并將包含 Web 服務器配置的、名為server.js的文件添加到該文件夾。

node.js復制

var express = require('express');

var bodyParser = require('body-parser');

var app = express();

app.use(express.static(__dirname + '/public'));

app.use(bodyParser.json());

require('./apps/routes')(app);

app.set('port', 3300);

app.listen(app.get('port'), function() {

console.log('Server up: http://localhost:' + app.get('port'));

});

安裝 Express 并設置服務器的路由

Express是一個微型的靈活 Node.js Web 應用程序框架,為 Web 和移動應用程序提供功能。 本教程使用 Express 將書籍信息傳入和傳出 MongoDB 數據庫。Mongoose提供簡潔的基于架構的解決方案來為應用程序數據建模。 本教程使用 Mongoose 來為數據庫提供書籍架構。

安裝 Express 和 Mongoose。

bash復制

sudo npm install express mongoose

Books文件夾中,創建名為apps的文件夾,并添加包含所定義的 Express 路由的、名為routes.js的文件。

node.js復制

var Book = require('./models/book');

module.exports = function(app) {

app.get('/book', function(req, res) {

Book.find({}, function(err, result) {

if ( err ) throw err;

res.json(result);

});

});

app.post('/book', function(req, res) {

var book = new Book( {

name:req.body.name,

isbn:req.body.isbn,

author:req.body.author,

pages:req.body.pages

});

book.save(function(err, result) {

if ( err ) throw err;

res.json( {

message:"Successfully added book",

book:result

});

});

});

app.delete("/book/:isbn", function(req, res) {

Book.findOneAndRemove(req.query, function(err, result) {

if ( err ) throw err;

res.json( {

message: "Successfully deleted the book",

book: result

});

});

});

var path = require('path');

app.get('*', function(req, res) {

res.sendfile(path.join(__dirname + '/public', 'index.html'));

});

};

apps文件夾中,創建名為models的文件夾,并添加包含所定義的書籍模型配置的、名為book.js的文件。

node.js復制

var mongoose = require('mongoose');

var dbHost = 'mongodb://localhost:27017/test';

mongoose.connect(dbHost);

mongoose.connection;

mongoose.set('debug', true);

var bookSchema = mongoose.Schema( {

name: String,

isbn: {type: String, index: true},

author: String,

pages: Number

});

var Book = mongoose.model('Book', bookSchema);

module.exports = mongoose.model('Book', bookSchema);

使用 AngularJS 訪問路由

AngularJS提供一個 Web 框架用于在 Web 應用程序中創建動態視圖。 本教程使用 AngularJS 將網頁與 Express 相連接,并針對書籍數據庫執行操作。

將目錄切換回到Books(cd ../..),然后創建名為public的文件夾,并添加包含所定義的控制器配置的、名為script.js的文件。

node.js復制

var app = angular.module('myApp', []);

app.controller('myCtrl', function($scope, $http) {

$http( {

method: 'GET',

url: '/book'

}).then(function successCallback(response) {

$scope.books = response.data;

}, function errorCallback(response) {

console.log('Error: ' + response);

});

$scope.del_book = function(book) {

$http( {

method: 'DELETE',

url: '/book/:isbn',

params: {'isbn': book.isbn}

}).then(function successCallback(response) {

console.log(response);

}, function errorCallback(response) {

console.log('Error: ' + response);

});

};

$scope.add_book = function() {

var body = '{ "name": "' + $scope.Name +

'", "isbn": "' + $scope.Isbn +

'", "author": "' + $scope.Author +

'", "pages": "' + $scope.Pages + '" }';

$http({

method: 'POST',

url: '/book',

data: body

}).then(function successCallback(response) {

console.log(response);

}, function errorCallback(response) {

console.log('Error: ' + response);

});

};

});

public文件夾中,創建包含所定義的網頁的、名為index.html的文件。

html復制

Name:Isbn:Author:Pages:Add

NameIsbnAuthorPages{{book.name}}{{book.isbn}}{{book.author}}{{book.pages}}

運行應用程序

將目錄切換回到Books(cd ..),并通過運行以下命令啟動服務器:

bash復制

nodejs server.js

打開 Web 瀏覽器并導航到針對 VM 記錄的地址。 例如http://13.72.77.9:3300。 應顯示以下頁面所示的內容:

在文本框中輸入數據并單擊“添加”。 例如:

刷新頁面后,應會看到以下頁面所示的內容:

可以單擊“刪除”并從數據庫中刪除書籍記錄。

后續步驟

本教程已創建一個可在 Linux VM 上使用 MEAN 堆棧跟蹤書籍記錄的 Web 應用程序。 你已了解如何:

創建 Linux VM

安裝 Node.js

安裝 MongoDB 并設置服務器

安裝 Express 并設置服務器的路由

使用 AngularJS 訪問路由

運行應用程序

轉到下一教程,了解如何使用 SSL 證書保護 Web 服務器。

使用 SSL 保護 Web 服務器

立即訪問http://market.azure.cn

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容