如何在Ubuntu 16.04 LTS上使用MongoDB和Apache设置Meteor.js Web应用程序

Meteor.js是一个考虑到Node.js编写的开源JavaScript框架。它之所以受欢迎是因为它以纯JavaScript构建Web应用程序的观点。Meteor集成了可在Web浏览器中运行的前端JavaScript支持以及将在主机服务器上运行的后端JavaScript。它与React,Angular.js等前端JavaScript框架以及流行的NoSQL数据库MongoDB很好地集成在一起。选择Meteor.js的几个重要原因如下:

  • Meteor.js是一个完整的堆栈框架。因此,有了它,您将获得所需的一切:数据库,前端,后端。流星将所有内容捆绑在一起做得非常出色。

  • 速度。流星的直观打包系统为您提供了许多可能需要完善工具的工具。

  • 它得到了Meteor开发人员小组以及使用它的其他开发人员的良好支持。您将很容易找出可能遇到的任何问题并迅速解决。

在本教程中,我们将在Ubuntu 16.04上实现以下目标:

  • 安装Node.js,我们的Javascript运行时。

  • 安装Meteor.js

  • 安装MongoDB,选择Meteor的数据库。

  • 安装Apache,选择我们的反向代理,并设置我们的域(如果适用)。

  • 测试我们的网站。

  • 设置我们的网站进行生产。

安装Node.js

首先,您需要安装Node.js(它是我们的JavaScript解释器)和Meteor的核心。这将使我们能够运行Meteor以及将来可能拥有的其他Node.js应用程序。在这种情况下,我们将安装Node.js8。要开始下载,只需在终端中运行以下命令。

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

等待下载和安装完成。

安装MongoDB

接下来,我们将安装数据库:MongoDB。MongoDB是一个免费的开源NoSQL文档数据库,也是Meteor的首选数据库。与传统的SQL数据库中的结构化表相反,它对文档使用类似于JSON的格式。

导入APT(高级打包终端)使用的MongoDB公钥。这使APT可以验证包裹;在这种情况下,是MongoDB。

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

为Ubuntu 16.04创建必要的列表文件。

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

开始安装MongoDB,然后等待安装完成。

sudo apt update && sudo apt install mongodb-org -y

打开系统服务进行编辑。

sudo nano /etc/systemd/system/mongodb.service

复制并粘贴以下内容以完成systemd服务。

[Unit]
Description=High-performance, schema-free document-oriented database
After=network.target
[Service]
User=mongodb
ExecStart=/usr/bin/mongod --quiet --config /etc/mongod.conf

[Install]
WantedBy=multi-user.target

使用“ Control-O”保存,然后使用“ Control-X”退出。

通过输入sudo systemctl start mongodb终端来运行MongoDB systemd服务。

要验证它是否已成功启动,请键入以下内容。

sudo systemctl status mongodb

您将看到该服务处于活动状态。

安装和设置Apache2

接下来,我们将安装Apache。Apache是​​一个免费的开放源代码Web服务器软件,它还可以充当反向代理,这是我们在本教程中将要使用的软件。需要反向代理将我们的Meteor.js应用程序绑定到port 80。Node.js阻止应用程序在没有root用户访问权限的情况下在该端口上运行。Apache会root自动运行以及绑定到port 80,因此在运行我们的网站时,我们不必担心。

安装Apache。

sudo apt update && sudo apt install apache2

为了允许访问外部Web端口(例如)port 80,我们需要为Apache配置防火墙。我们通过UFW(不复杂的防火墙)进行此操作。

sudo ufw allow 'Apache Full'

这将允许访问“ Apache Full”个人资料。这使我们进入的流量port 80,这就是我们的应用程序将要运行的流量。

安装Meteor.js并创建我们的基本应用程序

现在,我们将安装我们的Web框架:Meteor.js。我们将使用流星团队提供的简单bash脚本进行安装。

curl https://install.meteor.com/ | sh

等待安装完成。基本上,脚本的作用是从官方网站下载Meteor,并在全球进行安装,因此我们可以在任何地方使用它。完成后,我们可以创建应用程序目录。流星有一个方便的小工具供我们使用,称为meteor create。要创建您的应用程序目录,请键入以下内容。

meteor create <projectname>

将使用指定的名称(<projectname>)创建该文件夹。

设置我们的Apache反向代理

现在我们已经设置了应用程序目录,我们可以继续设置反向代理了。Apache使用名为的模块mod_proxy,该模块实现了Apache的代理。

sudo apt-get install libapache2-mod-proxy-html libxml2-dev -y

这将安装该模块并使它可供Apache使用。

接下来,我们将需要启用Apache运行所需的所有必要模块。我们将使用a2enmod,该工具可为Apache启用模块。这些模块将使我们能够利用反向代理。只需将这些命令键入您的终端即可。

sudo a2enmod proxy
sudo a2enmod proxy_http
sudo a2enmod proxy_ajp
sudo a2enmod rewrite
sudo a2enmod deflate
sudo a2enmod headers
sudo a2enmod proxy_balancer
sudo a2enmod proxy_connect
sudo a2enmod proxy_html

之后,我们将需要禁用默认的Apache站点以使其无法启动,因此我们可以启动自己的站点。否则,默认的Apache应用程序将覆盖我们的应用程序。要禁用默认站点,只需运行以下命令。

sudo a2dissite 000-default

现在,我们将创建虚拟主机文件。为此,只需打开一个文本编辑器。

sudo nano /etc/apache2/sites-available/<projectname>

复制并粘贴以下内容。

<VirtualHost *:80>
  ErrorLog ${APACHE_LOG_DIR}/error.log
  CustomLog ${APACHE_LOG_DIR}/access.log combined
  ProxyPreserveHost On
  # Servers to proxy the connection, or
  # List of application servers Usage
  ProxyPass / http://0.0.0.0:3000/
 ServerName localhost
</VirtualHost>
  • VirtualHost *:80:告诉Apache连接到端口80,这是我们的Web应用程序所需的端口。

  • ProxyPass:要转发到反向代理的站点的IP地址。这很可能是您的VPS的IP

  • ServerName:您的服务器名称(默认名称通常为localhost)。

完成必要的设置后,请使用“ Control-O”保存并使用“ ” Control-X退出。

首次运行该网站

要测试并确保网站正在运行,请在项目目录中键入以下内容。

meteor

您将看到以下输出,表明您的网站已成功启动。

=> App running at: http://localhost:3000/

请注意,流星默认情况下会监听port 3000

设置我们的网站进行生产

为了确保我们的应用程序能够保持运行,我们将使用systemd服务。与我们之前对MongoDB进行的操作类似,该系统服务将确保我们的网站在系统启动时就可以启动并保持运行。如果由于任何原因崩溃,它也会重新启动我们的应用程序。要设置我们的systemd服务,请在终端中键入以下内容。

sudo nano /etc/systemd/system/<projectname>.service

这是您想要文件的外观。

[Service]
WorkingDirectory=/home/<yourusername>/<projectname>
ExecStart=/usr/local/bin/meteor --production
Restart=always
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=<projectName>
User=<yourusername>
Environment=NODE_ENV=production
Environment=PWD=/home/<yourusername>/<projectname>
Environment=PORT=3000
Environment=HTTP_FORWARDED_COUNT=1

注意不要忘记projectname用项目名称和yourusernameVPS用户名替换。

以下是一些要牢记的重点。

  • WorkingDirectory:您的应用程序的目录。

  • Restart:无论出于什么原因,是否重新启动它的应用程序都会停止。

  • User: 您的用户名。

  • Environment=PWD:与相同WorkingDirectory

  • Environment=PORT:您的应用程序运行所在的端口。默认值为3000

保存并关闭文件。

现在,我们将启用并启动该服务。

sudo systemctl enable <projectname>.service

<projectname>我们创建的服务文件的名称在哪里。

然后,我们将启动服务。

sudo systemctl start <projectname>.service

您的应用程序将启动。要验证它是否已启动,只需运行以下命令。

sudo systemctl status <projectname>

您将看到它处于活动状态,并验证服务已成功启动。

接下来,我们将检查我们的网站。在您选择的Web浏览器中,导航到您的IP地址。

http://your-server-ip/

您将看到“流星”示例屏幕,确认您已正确完成所有操作。

管理我们的应用程序

现在我们已经启动了应用程序,我们将需要对其进行管理。

重新启动您的应用程序

sudo systemctl restart <projectname>

停止应用

sudo systemctl stop <projectname>

查看应用程序的状态

sudo systemctl status <projectname>

查看日志

journalctl -u <projectname>

现在,您已经成功配置了MongoDB,Apache和Meteor,并创建了一个Meteor.js Web服务器进行生产。现在剩下的工作就由您决定,可以在前端和后端设计您的网站。您可以访问MongoDB来存储您可能需要的任何数据,还可以使用Node.js,它可以通过Node Package Manager(NPM)提供各种模块,以进一步增强您的后端。有关更多文档,请随时访问Meteor网站,您可以在此进一步学习如何根据自己的喜好自定义网站。另外,在处理数据库操作时,您可以参考MongoDB文档



Leave a Comment

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 年人工智能對醫療保健的影響

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