如何在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

如何在CentOS 7上安装Oxwall

如何在CentOS 7上安装Oxwall

Oxwall是一个开源社交网络软件平台,可用于免费构建自定义社交网站(SNS)。在这篇文章中,

如何在Ubuntu 16.10上安装Review Board

如何在Ubuntu 16.10上安装Review Board

使用其他系统?Review Board是一个免费且开源的工具,用于检查源代码,文档,图像等。这是基于网络的软件战

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

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

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

如何使用Ubuntu 15.10在Vultr服务器上安装Xubuntu桌面

如何使用Ubuntu 15.10在Vultr服务器上安装Xubuntu桌面

Xubuntu是XFCE + Ubuntu!XFCE是Ubuntu的轻量级GUI /桌面。Vultr服务器需要其他依赖项,默认情况下未安装这些依赖项。

如何在Debian 9上安装Monica

如何在Debian 9上安装Monica

使用其他系统?Monica是一个开源的个人关系管理系统。可以将其视为CRM(销售团队使用的一种流行工具

如何使用SSL和安全密码保护由Nginx驱动的网站

如何使用SSL和安全密码保护由Nginx驱动的网站

简介SSL(代表安全套接字层)及其后续版本TLS(代表传输层安全性)是需要加密的加密协议。

如何在Fedora 26 LAMP VPS上安装MODX Revolution

如何在Fedora 26 LAMP VPS上安装MODX Revolution

使用其他系统?MODX Revolution是一种快速,灵活,可扩展,免费和开源的企业级内容管理系统(CMS),由

如何在Ubuntu 17.04上安装JuliaLang

如何在Ubuntu 17.04上安装JuliaLang

朱莉娅(Julia)通常称为JuliaLang,是一种用于数值计算的编程语言。Julia的速度和C一样快,但是却不牺牲可读性

在Ubuntu 14.04上安装Ruby on Rails

在Ubuntu 14.04上安装Ruby on Rails

Ruby on Rails(RoR)是用Ruby编程语言编写的框架,可让您将Ruby与HTML,CSS和类似的程序结合使用。

在Fedora 28上安装Anchor CMS

在Fedora 28上安装Anchor CMS

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

将Debian 9升级到Debian 10

将Debian 9升级到Debian 10

简介Debian 10(Buster)是Debian 9(Stretch)的后继产品。它于2019年7月6日发布。在本教程中,我们将升级一个existin

如何管理Linux服务器时区设置

如何管理Linux服务器时区设置

在Linux服务器上正确设置日期和时间非常重要。您的服务器日志和其他重要信息都将反映时区

如何在Ubuntu 16.04上安装Taiga项目管理工具

如何在Ubuntu 16.04上安装Taiga项目管理工具

使用其他系统?Taiga是用于项目管理的免费和开源应用程序。与其他项目管理工具不同,Taiga使用增量

在Ubuntu上配置Nagios:第1部分-Nagios服务器

在Ubuntu上配置Nagios:第1部分-Nagios服务器

本文是有关在Ubuntu 14.04上安装和配置Nagios的2部分系列文章的一部分。第1部分:Nagios服务器第2部分:远程主机概述Nagio

如何访问Vultr VPS

如何访问Vultr VPS

Vultr提供了几种不同的方式来访问VPS以进行配置,安装和使用。访问凭据VPS ar的默认访问凭据

如何在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上设置vsFTPd

如何在CentOS 7上设置vsFTPd

FTP是用于通过Internet传输文件的有用协议,本指南将向您展示如何设置vsFTPd(非常安全的文件传输协议守护程序)o

在Debian / Ubuntu中使用Rsync设置文件镜像

在Debian / Ubuntu中使用Rsync设置文件镜像

简介如果您经营一个重要的网站,则最好将文件镜像到辅助服务器。如果您的主服务器有网络

在Arch Linux上使用Makepkg

在Arch Linux上使用Makepkg

在Arch Linux上使用Makepkg可以避免系统污染,确保仅安装必要的依赖关系。

如何在Ubuntu 16.04上安装OpenSIPS控制面板

如何在Ubuntu 16.04上安装OpenSIPS控制面板

快速学习如何在Ubuntu 16.04上安装OpenSIPS控制面板,为VoIP提供商提供支持的功能。

在Fedora 28上安装Akaunting

在Fedora 28上安装Akaunting

学习如何在Fedora 28上安装Akaunting,一款适合小型企业和自由职业者的开源会计软件。

如何在CentOS 7上安装Mailtrain新闻通讯应用程序

如何在CentOS 7上安装Mailtrain新闻通讯应用程序

使用其他系统?Mailtrain是一个基于Node.js和MySQL / MariaDB构建的开源自托管新闻通讯应用程序。

诊断Minecraft服务器延迟和低TPS

诊断Minecraft服务器延迟和低TPS

了解導致Minecraft延遲的原因和解決方案,包括優化伺服器性能和減少滯後的步驟。

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 機器變磚。閱讀這篇文章以了解更多信息