在Ubuntu 16.04上,如何使用MongoDB和Apache构建Meteor.js Web应用程序
Apple_express
・14 分钟阅读
Meteor.js是一个开放源码的JavaScript框架,用Node.js编写,它很流行,因为它在纯JavaScript中构建web应用程序,Meteor集成了在网络浏览器中运行的前端JavaScript支持,以及后端JavaScript,它将在主机服务器上运行,它与前端JavaScript框架很好地集成,比如,React和angular.js,以及MongoDB和一个流行的NoSQL数据库,选择Meteor.js的几个主要原因如下:
Meteor.js是一个完整的堆栈框架,这样,你就能得到你所需要的一切: 数据库,前端,后端,Meteor将一切连结在一起。
速度, Meteor的直观包装系统为您提供了许多工具,可以帮助您完善应用程序。
它有来自Meteor开发者组的良好支持,以及使用它的其他开发人员,你可以很容易地找出你可能遇到的任何问题,并且迅速解决。
在本教程中,我们将在Ubuntu 16.04上完成以下目标:
安装
Node.js
,我们的Javascript运行时。安装
Meteor.js
。安装
MongoDB
数据库,选择Meteor 。安装Apache,我们选择的反向代理,并设置我们的域名(如果适用)。
测试我们的网站。
设置我们的网站以进行生产。
正在安装Node.js
你首先需要安装node.js,这是我们的JavaScript解释器,Meteor的核心,它将允许我们运行Meteor,以及将来可能拥有的其他Node.js应用程序,在这种情况下,我们将安装Node.js 8.以启动下载,只需在你的终端中运行。
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install -y nodejs
等待下载和安装完成。
安装MongoDB
接下来,我们将安装我们的数据库: MongoDB是一个免费的开源NoSQL文档数据库,以及Meteor的数据库选择,它文档使用JSON-like格式,与传统SQL数据库中的结构化表相对应。
导入APT
(高级封装终端)使用的MongoDB公钥,这使得APT能够验证包; 在本例中,
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
打开systemd服务进行编辑。
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
"退出。
通过键入以下命令运行MongoDB systemd服务 sudo systemctl start mongodb
在你的终端中。
要验证它是否已成功启动,请键入以下。
sudo systemctl status mongodb
你将看到该服务处于活动状态。
安装和设置Apache2
接下来,我们将安装Apache ,Apache是一个免费的开源web服务器软件,它也作为反向代理,我们将在本教程中使用它,需要反向代理才能将Meteor.js应用程序绑定到port 80
,Node.js阻止应用程序在没有root访问的情况下在该端口上运行,Apache自动以root身份运行,并绑定到端口80,因此在运行我们的网站时,我们不必担心它。
安装Apache 。
sudo apt update && sudo apt install apache2
为了允许访问外部网络端口(比如,port 80
),我们需要为Apache配置防火墙,我们通过UFW (非复杂防火墙)做这个。
sudo ufw allow 'Apache Full'
这将允许访问"Apache Full
"配置文件,这给了我们port 80
的传入流量,这就是我们的应用程序运行的。
安装Meteor.js &创建基础应用程序
现在,我们将安装我们的web框架: Meteor.js,我们将使用Meteor团队提供的一个简单的bash脚本来安装它。
curl https://install.meteor.com/ | sh
等待安装完成,基本上,脚本是从官方网站下载Meteor,并且全局安装它,所以,我们可以从任何地方使用它,一旦完成,我们就可以创建应用程序目录,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的IPServerName
:服务器(默认名称通常为localhost
)的名称。
完成必要的设置后,使用"Control-O
"保存和"Control-X
"退出。
首次运行站点
要测试并确保该网站正在运行,请在项目目录中键入以下内容。
meteor
你将看到以下输出,显示你的站点已成功启动。
=> App running at: http://localhost:3000/
注意Meteor,默认情况下监听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
替换为项目名称,而且yourusername
用的是用户名。
下面是一些你要记住的要点。
WorkingDirectory
:应用程序的目录。Restart
:是否重新启动它的应用因任何原因停止。User
:你的用户名。Environment=PWD
:与WorkingDirectory
相同。Environment=PORT
:你的应用程序正在运行的端口,默认值为3000
。
保存并关闭文件。
现在,我们将启用并启动服务。
sudo systemctl enable <projectname>.service
其中<projectname>
是我们创建的服务文件的名称。
然后,我们将启动服务。
sudo systemctl start <projectname>.service
应用程序将启动要验证它是否已启动,只需运行以下命令。
sudo systemctl status <projectname>
你将看到它处于活动状态,验证服务已成功启动。
接下来,我们将查看我们的网站,在你选择的网络浏览器中,导航到你的IP地址。
http://your-server-ip/
你将看到Meteor例子屏幕,验证你已经正确完成了所有操作。
管理我们的应用程序
现在我们已经启动了应用程序,我们将需要管理它。
重新启动应用程序
sudo systemctl restart <projectname>
停止应用程序
sudo systemctl stop <projectname>
查看应用程序的状态
sudo systemctl status <projectname>
查看日志
journalctl -u <projectname>
现在你已经成功配置了MongoDB,apache和Meteor,并为生产创建了一个Meteor.js ,现在剩下的由您决定,在前端和后端设计您的网站。你可以访问MongoDB存储你可能需要的任何数据,并且node.js提供通过node包管理器(NPM
)提供的各种模块,有关更多文档,请随意访问Meteor站点,你可以进一步了解如何自定义你的网站,另外,当你处理数据库操作时,你可以参考mongoDB文档 。