在Ubuntu 16.04上使用Nginx反向代理设置Keystone.js服务器

在本教程中,我们将使用反向代理来设置Web服务器。我们将使用的CMS是Keystone.js,它是基于Express.js的著名Web应用程序框架。我们将使用的反向代理是Nginx,它是一个免费的开源反向代理以及HTTP服务器。我们将使用的数据库是Nogo文档数据库MongoDB。这将要求您拥有一个已设置记录的域。如果您没有此设置,请继续进行处理,然后返回本教程。

安装节点

首先,我们将安装Node.js,这是基于Chrome V8 Javascript引擎的Javascript解释器。

curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install -y nodejs
sudo apt-get install -y build-essential

安装Nginx

接下来,我们将安装我们的反向代理Nginx。

sudo apt update
sudo apt install nginx

这将更新软件包列表,并安装Nginx。安装完成后,我们将设置节点项目。

初始化我们的Keystone项目

创建我们的节点项目。为此,只需创建一个新文件夹。

mkdir website

然后,我们将创建package.json文件。为此,只需npm init在您的终端中运行,填写字段,然后回复“ yes”进行确认。创建package.json文件后,我们将安装以下节点模块。

sudo npm install -g generator-keystone
sudo npm install -g yo

一旦下载完成,请运行以下命令。

yo keystone

填写必填字段。它会问你要project nametemplate engineemail控制面板,等等。如果您不知道要选择什么,则可以使用默认值。配置完梯形失真校正设置后,我们可以通过键入node keystone启动应用程序来测试服务器是否正在运行。默认情况下,您的应用程序将localhost在端口上运行3000。请注意,如果您尚未安装MongoDB,则数据库将立即不可用。您可以在本教程的后面部分中学习如何安装它。

这是Keystone.js的基本目录布局:

  • /lib -在这里您将存储自定义库和其他代码。

  • /models-在这里您将存储应用程序的数据库模型。KeystoneJS使用MongoDB作为数据库提供程序。

  • /public -这是您的静态文件(CSS,JS,图像等)的存储位置。

  • /routes/api -这是应用程序的API控制器的存储位置。

  • /routes.views -应用程序视图控制器将存储在此处。

  • /templates -这是所有应用程序模板文件的存储位置。

  • /updates -这是您的迁移脚本的存储位置。

  • package.json -这是生成器为我们生成的您的npm配置文件。

  • keystone.js -我们的主要启动文件,我们在启动网站时运行该文件。

初始化我们的数据库

如前所述,我们将使用的数据库是MongoDB,它是可靠的NoSQL面向文档的数据库。如果您已经碰巧安装了MongoDB,则可以跳过本节。如果没有,那么这里是在Ubuntu 16.04上安装它的方法。

导入用于mongoDB软件包的公钥。

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 0C49F3730359A14518585931BC711F9BA15703C6

创建用于安装软件包的列表文件。

echo "deb [ arch=amd64,arm64 ] http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.4.list

使用更新您的包裹清单apt

sudo apt update

最后,安装MongoDB。

sudo apt install mongodb-org -y

安装完成后,启动MongoDB。

sudo service mongod start

这将在port上启动MongoDB进程27017

MongoDB将在整个应用程序中使用,并将用于存储我们用于模型(例如User模型)的信息。Keystone将其用作首选数据库,目前您无法使用其他数据库供应商。

安装PM2

现在是时候安装PM2(Process Manager 2)了。PM2是npm模块形式的Node.js应用程序的进程管理器。它为您提供了一种管理应用程序并在后台运行它们的简便方法。由于它在NPM中,因此我们要做的所有安装工作如下。

sudo npm install pm2 -g

这告诉npm全局安装它,因此我们可以在系统中的任何地方使用它。

在PM2上运行/管理应用程序

之前,我们使用来运行Web应用程序node keystone。使用PM2,情况有所不同。现在,我们使用以下命令运行节点应用程序。

pm2 start keystone.js

这会将我们的PM2应用程序添加到我们的进程列表中,并且将显示一个小框,以便您可以看到它确实在线。请注意id为您的过程标记的框。保持紧密联系,因为稍后我们将对此进行很多引用。

查看您的应用程序的日志。

pm2 logs [id]

例如,pm2 logs 0如果这是您的第一个PM2应用程序。

随时停止您的Web应用程序。

pm2 stop [id]

完全删除您的应用程序。

pm2 delete [id]

如果您想查看应用程序的一些基本统计信息,则PM2甚至具有一个监控仪表板,您可以使用它来访问它。

pm2 monit

这将显示一些基本信息,例如RAM使用率,CPU使用率和正常运行时间。

PM2提供的一个很棒的功能是watching。本质上,监视是指PM2自动检测到与您的起始文件位于同一目录中的任何文件的更改,并且它将自动重新启动您的应用程序���要启用它,只需重新启动您的应用程序,但将监视标志传递给它即可。

pm2 restart [id] --watch

要在启用监视后禁用监视,只需再次运行同一命令,监视将被禁用。

在本教程中,我们将格外注意。

设置反向代理

确保已安装Nginx。如果由于某种原因而不是,请参考上面的步骤。

调整防火墙设置。在Ubuntu上,ufw是官方防火墙。默认情况下,端口上的连接被阻止80。我们需要在port上为Nginx添加一个例外,该例外80将在我们的Web应用程序上运行。

sudo ufw allow 'Nginx HTTP'

验证您的Nginx服务器正在运行。

systemctl status nginx

在该Active部分下,如果看到active (running),则一切就绪。如果没有,您可以尝试重新启动服务。

systemctl restart nginx

删除默认的Nginx配置文件。

sudo rm /etc/nginx/sites-available/default

创建一个新的,只需调用它node

sudo nano /etc/nginx/sites-available/node

将以下内容粘贴到文件中,并替换example.com为您的网站域。

listen 80;

server_name example.com;

    location / {

        proxy_set_header   X-Forwarded-For $remote_addr;

        proxy_set_header   Host $http_host;

        proxy_pass         "http://127.0.0.1:3000";
    }
}

请注意,proxy_pass表示我们Keystone应用在本地运行的IP ,该IP localhost在port上运行3000listen 80是我们要将应用程序定向到的端口,在本例中为port 80

然后,我们需要创建一个符号链接,或指向名为的文件夹的符号链接sites-enabledsites-enabled和之间的区别sites-availablesites-enabledNginx实际加载了。

sudo ln -s /etc/nginx/sites-available/node /etc/nginx/sites-enabled/node

现在,您的配置文件sites-available已准备就绪,可以从中加载sites-enabled。要应用配置使其生效,只需重新启动Nginx。

sudo systemctl restart nginx

最后,重新启动您的PM2应用程序

pm2 restart [id]

现在,您可以在浏览器中导航到您的域,您将看到一个Welcome to Keystone屏幕,其中包含用于登录的面板。

如果看到它,则说明您已经成功设置了Node.js生产Web服务器。如果不是,则您可能未正确执行步骤,因此您可能需要返回并仔细执行每个步骤。

您可以通过访问Nginx 网站了解更多信息。

我希望您喜欢本教程,并希望它可以帮助您在Vultr VPS上设置自己的Web服务器以进行生产。



Leave a Comment

如何在Debian 9 LAMP VPS上安装October 1.0 CMS

如何在Debian 9 LAMP VPS上安装October 1.0 CMS

使用其他系统?October 1.0 CMS是基于Laravel框架构建的简单,可靠,免费和开源的内容管理系统(CMS)

在Fedora 28上安装Anchor CMS

在Fedora 28上安装Anchor CMS

使用其他系统?Anchor是用PHP编写的轻量级开源博客CMS。Anchors源代码托管在GitHub上。本指南将向您展示

如何在Debian 9上安装Grav CMS

如何在Debian 9上安装Grav CMS

使用其他系统?Grav是用PHP编写的开源平面文件CMS。Grav源代码公开托管在GitHub上。本指南将向您展示如何

如何在Fedora 26 LAMP VPS上安装Pagekit 1.0 CMS

如何在Fedora 26 LAMP VPS上安装Pagekit 1.0 CMS

使用其他系统?Pagekit 1.0 CMS是一个美观,模块化,可扩展,轻量级,免费和开源的内容管理系统(CMS),具有

如何在Ubuntu 16.04 LAMP VPS上安装BigTree CMS

如何在Ubuntu 16.04 LAMP VPS上安装BigTree CMS

使用其他系统?BigTree CMS 4.2是一种快速,轻量级,免费和开源的企业级内容管理系统(CMS),具有广泛的功能。

如何在CentOS 7上安装BoltWire CMS

如何在CentOS 7上安装BoltWire CMS

使用其他系统?简介BoltWire是一个用PHP编写的免费,轻量级的内容管理系统。与大多数其他内容管理人员相比

如何在CentOS 7上安装Microweber

如何在CentOS 7上安装Microweber

使用其他系统?Microweber是一个开放源代码的拖放式CMS和在线商店。Microweber源代码托管在GitHub上。本指南将向您展示

如何在Ubuntu 18.04 LTS上安装WonderCMS

如何在Ubuntu 18.04 LTS上安装WonderCMS

使用其他系统?WonderCMS是用PHP编写的开源,快速,小型平面文件CMS。WonderCMS源代码托管在Github上。本指南将

如何在FreeBSD 11 FAMP VPS上安装Omeka Classic 2.4 CMS

如何在FreeBSD 11 FAMP VPS上安装Omeka Classic 2.4 CMS

使用其他系统?Omeka Classic 2.4 CMS是一个免费的开源数字发布平台和用于共享数字内容的内容管理系统(CMS)

如何在Fedora 28上安装Bludit CMS

如何在Fedora 28上安装Bludit CMS

使用其他系统?Bludit是一个用PHP编写的简单,快速且灵活的博客CMS。Bludit使用JSON格式的文件来存储内容,因此您不必

如何在CentOS 7上安装MODX CMS和Nginx

如何在CentOS 7上安装MODX CMS和Nginx

MODX是一个用PHP编写的免费开放源内容管理系统。它使用MySQL或MariaDB来存储其数据库。MODX专为满足以下条件的企业而设计:

如何在Fedora 26 LAMP VPS上安装Couch CMS 2.0

如何在Fedora 26 LAMP VPS上安装Couch CMS 2.0

使用其他系统?Couch CMS是一个简单,灵活,免费和开源的内容管理系统(CMS),可让Web设计人员进行设计

如何在CentOS 7 LAMP VPS上安装Omeka Classic 2.4 CMS

如何在CentOS 7 LAMP VPS上安装Omeka Classic 2.4 CMS

使用其他系统?Omeka Classic 2.4 CMS是一个免费的开源数字发布平台和用于共享数字内容的内容管理系统(CMS)

如何在FreeBSD 11 FAMP VPS上安装Couch CMS 2.0

如何在FreeBSD 11 FAMP VPS上安装Couch CMS 2.0

使用其他系统?Couch CMS是一个简单,灵活,免费和开源的内容管理系统(CMS),可让Web设计人员进行设计

如何在FreeBSD 11 FAMP VPS上安装ProcessWire CMS 3.0

如何在FreeBSD 11 FAMP VPS上安装ProcessWire CMS 3.0

使用其他系统?ProcessWire CMS 3.0是一个简单,灵活,功能强大,免费和开源的内容管理系统(CMS)。ProcessWire CMS 3。

如何在Fedora 28上安装PyroCMS

如何在Fedora 28上安装PyroCMS

使用其他系统?PyroCMS是用PHP编写的开源CMS。PyroCMS源代码托管在GitHub上。在本指南中,请仔细阅读整个条目

如何在Fedora 26 LAMP VPS上安装BlogoText CMS

如何在Fedora 26 LAMP VPS上安装BlogoText CMS

使用其他系统?BlogoText CMS是一个简单,轻便,免费和开源的内容管理系统(CMS)和极简博客引擎

如何在Debian 9 LAMP VPS上安装Pagekit 1.0 CMS

如何在Debian 9 LAMP VPS上安装Pagekit 1.0 CMS

使用其他系统?Pagekit 1.0 CMS是一个美观,模块化,可扩展,轻量级,免费和开源的内容管理系统(CMS),具有

如何在FreeBSD 11 FAMP VPS上安装Redaxscript 3.2 CMS

如何在FreeBSD 11 FAMP VPS上安装Redaxscript 3.2 CMS

使用其他系统?Redaxscript 3.2 CMS是一款现代,超轻量级,免费和开源的内容管理系统(CMS),具有火箭fas

AI 能否應對越來越多的勒索軟件攻擊?

AI 能否應對越來越多的勒索軟件攻擊?

勒索軟件攻擊呈上升趨勢,但人工智能能否幫助應對最新的計算機病毒?AI 是答案嗎?在這裡閱讀知道是 AI 布恩還是禍根

ReactOS:這是 Windows 的未來嗎?

ReactOS:這是 Windows 的未來嗎?

ReactOS,一個開源和免費的操作系統,這裡有最新版本。它能否滿足現代 Windows 用戶的需求並打倒微軟?讓我們更多地了解這種老式但更新的操作系統體驗。

通過 WhatsApp 桌面應用程序 24*7 保持聯繫

通過 WhatsApp 桌面應用程序 24*7 保持聯繫

Whatsapp 終於為 Mac 和 Windows 用戶推出了桌面應用程序。現在您可以輕鬆地從 Windows 或 Mac 訪問 Whatsapp。適用於 Windows 8+ 和 Mac OS 10.9+

人工智能如何將流程自動化提升到新的水平?

人工智能如何將流程自動化提升到新的水平?

閱讀本文以了解人工智能如何在小型公司中變得流行,以及它如何增加使它們成長並為競爭對手提供優勢的可能性。

macOS Catalina 10.15.4 補充更新引發的問題多於解決

macOS Catalina 10.15.4 補充更新引發的問題多於解決

最近,Apple 發布了 macOS Catalina 10.15.4 補充更新以修復問題,但似乎該更新引起了更多問題,導致 mac 機器變磚。閱讀這篇文章以了解更多信息

大數據的13個商業數據提取工具

大數據的13個商業數據提取工具

大數據的13個商業數據提取工具

什麼是日誌文件系統,它是如何工作的?

什麼是日誌文件系統,它是如何工作的?

我們的計算機以稱為日誌文件系統的有組織的方式存儲所有數據。這是一種有效的方法,可以讓計算機在您點擊搜索時立即搜索和顯示文件。 https://wethegeek.com/?p=94116&preview=true

技術奇點:人類文明的遙遠未來?

技術奇點:人類文明的遙遠未來?

隨著科學的快速發展,接管了我們的大量工作,我們陷入無法解釋的奇點的風險也在增加。閱讀,奇點對我們意味著什麼。

洞察 26 種大數據分析技術:第 1 部分

洞察 26 種大數據分析技術:第 1 部分

洞察 26 種大數據分析技術:第 1 部分

2021 年人工智能對醫療保健的影響

2021 年人工智能對醫療保健的影響

過去幾十年,醫療保健領域的人工智能取得了巨大飛躍。因此,醫療保健中人工智能的未來仍在日益增長。