在 CentOS 7 上测试 MEAN Stack

为了测试我们的 MEAN 堆栈配置,我们正在运行一个示例应用程序,如下所示。

[root@nodejs-01 mean]# cd /tmp/mean
[root@nodejs-01 mean]# cp .env.example .env
[root@nodejs-01 mean]# npm start
> mean@2.0.2 start /tmp/mean

在客户端浏览器中打开 URL http://nodejs-01.onitroad.com:4040。

MEAN Stack 成功安装在 CentOS 7 服务器上。

在 CentOS 7 上安装 MongoDB 4

MongoDB 在标准 yum 存储库中不可用。
因此,我们必须在我们的 CentOS 7 服务器上安装 MongoDB 官方 yum 存储库,然后我们才能安装 MongoDB 数据库。

在 /etc/yum.repos.d 目录中创建一个 yum 存储库文件。

[root@nodejs-01 ~]# vi /etc/yum.repos.d/mongodb.repo

并其中添加以下配置。

[mongodb-org-4.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.0.asc

为 MongoDB yum 存储库构建缓存。

[root@nodejs-01 ~]# yum makecache fast

使用 yum 命令在我们的 CentOS 7 服务器上安装 MongoDB 4.

[root@nodejs-01 ~]# yum install -y mongodb-org

MongoDB 数据库服务 'mongod.service' 由安装程序自动启用。
我们只需要启动一次 MongoDB 服务。

[root@nodejs-01 ~]# systemctl start mongod.service

MongoDB 4 已安装在我们的 CentOS 7 服务器上。

在 CentOS 7 上安装 Node.js 10

Node.js 在标准 yum 存储库中不可用。
因此,我们必须安装 Node.js 官方 yum 存储库,然后我们才能安装 Node.js 。

Node.js 提供了一个二进制安装程序,用于安装 Node.js yum 存储库。
因此,请按如下方式下载并执行该二进制文件。

[root@nodejs-01 ~]# curl -sL https://rpm.nodesource.com/setup_10.x | sudo -E bash 
## Installing the NodeSource Node.js 10.x repo...

## Inspecting system...
+ rpm -q --whatprovides redhat-release || rpm -q --whatprovides centos-release || rpm -q --whatprovides cloudlinux-release || rpm -q --whatprovides sl-release
+ uname -m
## Confirming "el7-x86_64" is supported...
+ curl -sLf -o /dev/null 'https://rpm.nodesource.com/pub_10.x/el/7/x86_64/nodesource-release-el7-1.noarch.rpm'
## Downloading release setup RPM...
+ mktemp
+ curl -sL -o '/tmp/tmp.8FUOG96Pkq' 'https://rpm.nodesource.com/pub_10.x/el/7/x86_64/nodesource-release-el7-1.noarch.rpm'
## Installing release setup RPM...
+ rpm -i --nosignature --force '/tmp/tmp.8FUOG96Pkq'
## Cleaning up...
+ rm -f '/tmp/tmp.8FUOG96Pkq'
## Checking for existing installations...
+ rpm -qa 'node|npm' | grep -v nodesource
## Run `sudo yum install -y nodejs` to install Node.js 10.x and npm.
## You may also need development tools to build native addons:
     sudo yum install gcc-c++ make
## To install the Yarn package manager, run:
     curl -sL https://dl.yarnpkg.com/rpm/yarn.repo | sudo tee /etc/yum.repos.d/yarn.repo
     sudo yum install yarn

现在,我们已经安装了 Node.js yum 存储库。
记下在 CentOS 7 上安装 Yarn 包管理器的命令。
我们将在本文后面使用这些命令来安装 Yarn 包管理器。

使用 yum 命令在我们的 CentOS 7 服务器上安装 Node.js 10.

[root@nodejs-01 ~]# yum install -y nodejs

验证 Node.js 和相关库的版本。

[root@nodejs-01 ~]# npm version
{ npm: '6.9.0',
  ares: '1.15.0',
  brotli: '1.0.7',
  cldr: '35.1',
  http_parser: '2.8.0',
  icu: '64.2',
  modules: '64',
  napi: '4',
  nghttp2: '1.34.0',
  node: '10.16.0',
  openssl: '1.1.1b',
  tz: '2019a',
  unicode: '12.1',
  uv: '1.28.0',
  v8: '6.8.275.32-node.52',
  zlib: '1.2.11' }

Node.js 10 已经安装在我们的 CentOS 7 服务器上。

npm ,Node.js 包管理器,也随 Node.js 一起安装。
我们可以使用 npm 来安装 MEAN stack 的其余组件。

安装 MEAN Stack 必备包

MEAN 堆栈的各个组件都需要这些包;因此,我们使用 yum 命令一次性安装它们。

[root@nodejs-01 ~]# yum install -y gcc-c++ make git
https://onitroad.com 更多教程

在 CentOS 7 上安装 Yarn Package Manager

Yarn 是前端应用程序的包管理器。
它替代了以前版本的 MEAN 堆栈中使用的 Bower 包管理器。

安装 Yarn 官方 yum 仓库如下。

[root@nodejs-01 ~]# curl -sL https://dl.yarnpkg.com/rpm/yarn.repo | sudo tee /etc/yum.repos.d/yarn.repo
[yarn]
name=Yarn Repository
baseurl=https://dl.yarnpkg.com/rpm/
enabled=1
gpgcheck=1
gpgkey=https://dl.yarnpkg.com/rpm/pubkey.gpg

使用 yum 命令安装 Yarn。

[root@nodejs-01 ~]# yum install -y yarn
在 CentOS 7 上安装 MEAN Stack

MEAN 是一个免费的开源 JavaScript 软件栈。
MEAN 堆栈使用其四个组件 MongoDB、Express.js、AngularJS 和 Node.js 的首字母命名。

由于 MEAN 堆栈的所有四个组件都支持 JavaScript,因此 MEAN 堆栈用于服务器端和客户端执行环境,以使用 JavaScript 构建动态网站和 Web 应用程序。

在本文中,我们将在 CentOS 7 服务器上安装 MEAN 堆栈。

在 CentOS 7 上安装 Gulp Task Scheduler

Gulp 是一个 JavaScript 任务调度器。
Node.js 需要 Gulp,我们可以使用 npm 命令安装它。

[root@nodejs-01 ~]# npm install -g gulp
/usr/bin/gulp -> /usr/lib/node_modules/gulp/bin/gulp.js
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.2.9 (node_modules/gulp/node_modules/fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.9: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})
+ gulp@4.0.2
added 314 packages from 217 contributors in 67.397s

在 CentOS 7 上安装 MEAN Stack

使用 git 命令从 GitHub 下载最新版本的 MEAN 堆栈。

[root@nodejs-01 ~]# cd /tmp
[root@nodejs-01 tmp]# git clone https://github.com/linnovate/mean
Cloning into 'mean'...
remote: Enumerating objects: 16743, done.
remote: Total 16743 (delta 0), reused 0 (delta 0), pack-reused 16743
Receiving objects: 100% (16743/16743), 8.04 MiB | 415.00 KiB/s, done.
Resolving deltas: 100% (9154/9154), done.

切换到 /tmp/mean 目录并使用 npm 命令在我们的 CentOS 7 服务器上安装 MEAN 堆栈。

[root@nodejs-01 tmp]# cd /tmp/mean
[root@nodejs-01 mean]# npm install
npm WARN deprecated @angular/http@6.1.10: Switch to @angular/common/http - see https://angular.io/guide/http
npm WARN deprecated core-js@2.5.7: core-js<@2.6.8 is no longer maintained. Please, upgrade to core-js@3 or at least to actual version of core-js@2.
npm WARN deprecated joi@13.7.0: This version has been deprecated in accordance with the hapi support policy (hapi.im/support). Please upgrade to the latest version to get the best features, bug fixes, and security patches. If you are unable to upgrade at this time, paid support is available for older versions (hapi.im/commercial).
npm WARN deprecated istanbul@0.4.5: This module is no longer maintained, try this instead:
npm WARN deprecated   npm i nyc
npm WARN deprecated Visit https://istanbul.js.org/integrations for other alternatives.
npm WARN deprecated topo@3.0.3: This module has moved and is now available at @hapi/topo. Please update your dependencies as this version is no longer maintained an may contain bugs and security issues.
npm WARN deprecated hoek@5.0.4: This version has been deprecated in accordance with the hapi support policy (hapi.im/support). Please upgrade to the latest version to get the best features, bug fixes, and security patches. If you are unable to upgrade at this time, paid support is available for older versions (hapi.im/commercial).
npm WARN deprecated circular-json@0.5.9: CircularJSON is in maintenance only, flatted is its successor.
npm WARN deprecated hoek@6.1.3: This module has moved and is now available at @hapi/hoek. Please update your dependencies as this version is no longer maintained an may contain bugs and security issues.
> node-sass@4.12.0 install /tmp/mean/node_modules/node-sass
> node scripts/install.js
Downloading binary from https://github.com/sass/node-sass/releases/download/v4.12.0/linux-x64-64_binding.node
Download complete  ] - :
Binary saved to /tmp/mean/node_modules/node-sass/vendor/linux-x64-64/binding.node
Caching binary to /root/.npm/node-sass/4.12.0/linux-x64-64_binding.node
> bcrypt@3.0.6 install /tmp/mean/node_modules/bcrypt
> node-pre-gyp install --fallback-to-build
node-pre-gyp WARN Using request for node-pre-gyp https download
[bcrypt] Success: "/tmp/mean/node_modules/bcrypt/lib/binding/bcrypt_lib.node" is installed via remote
> node-sass@4.12.0 postinstall /tmp/mean/node_modules/node-sass
> node scripts/build.js
Binary found at /tmp/mean/node_modules/node-sass/vendor/linux-x64-64/binding.node
Testing binary
Binary is fine
> nodemon@1.19.1 postinstall /tmp/mean/node_modules/nodemon
> node bin/postinstall || exit 0
Love nodemon? You can now support the project via the open collective:
 > https://opencollective.com/nodemon/donate
npm notice created a lockfile as package-lock.json. You should commit this file.
npm WARN karma-jasmine-html-reporter@1.1.0 requires a peer of jasmine@>=3 but none is installed. You must install peer dependencies yourself.
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.2.9 (node_modules/fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.9: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})
added 1352 packages from 1431 contributors and audited 47449 packages in 233.363s
found 2 low severity vulnerabilities
  run `npm audit fix` to fix them, or `npm audit` for details

安装程序在软件包中发现了一些已知的安全漏洞。
我们正在按照上述命令的建议修复它们。

[root@nodejs-01 mean]# npm audit fix

并非所有安全漏洞都可以通过审计命令自动修复。
我们需要手动检查和修复其中的一些。

在 Linux 防火墙中允许 MEAN 堆栈服务端口。

[root@nodejs-01 ~]# firewall-cmd --permanent --add-port=4040/tcp
success
[root@nodejs-01 ~]# firewall-cmd --reload
success

使用以下命令检查已安装的软件包。

[root@nodejs-01 mean]# npm list --depth=0
日期:2020-09-17 00:16:38 来源:oir作者:oir