如今,前端开发越来越流行,越来越多的程序员开始涉足这个领域。而同时,需求越来越高的是让前端开发人员在项目中担当更多的职责,其中包括web前端开发、node.js后端开发、部署和监视。
在本文中,我们将着重讨论如何部署node.js服务,在实际生产环境中即可使用。如果你想在web前端领域有所发展,这将是一个很好的起点。
第一步:准备服务器
安装node.js之前,我们需要准备一台ubuntu的服务器。我们将使用这个服务器来运行node.js应用程序。
对于诸如openshift和heroku的云计算平台,运行node.js程序非常简单。但是,在本文中,我们将假设您已经获得并配置了一个私有服务器。
第二步:安装node.js
为了安装node.js,我们将使用apt包管理器。我们需要安装node.js和npm(node.js包管理器)。运行以下命令将node.js安装到您的ubuntu服务器上:
sudo apt-get updatesudo apt-get install nodejs npm
请注意,有时候您需要分别安装nodejs和nodejs-legacy包:
sudo apt-get updatesudo apt-get install nodejssudo apt-get install nodejs-legacy npm
安装完成后,我们可以使用以下命令检查node.js版本:
nodejs -v
此命令应该打印出您已经安装的node.js版本号。
第三步:设置防火墙访问
我们需要确保node.js服务可以从外部访问。通过打开服务器的防火墙端口,让其他服务器可以访问。
默认情况下,ubuntu服务器带有ufw防火墙。为了允许外部访问您的应用程序,您需要将tcp流量定向到主机。请运行以下命令将端口打开。
sudo ufw allow 8080/tcp
在许多情况下,您需要将端口定向到对您有意义的端口号(即80或443),因为这些端口是web服务的常见端口。但是,为了简洁起见,我们将在此处选择端口8080。一旦您的应用程序正常运行,则可以将其迁移到该端口。
第四步:编写应用程序
为了部署我们的node.js应用程序,我们需要编写一个简单的示例应用程序。打开您最喜欢的编辑器,并创建一个名为app.js的文件。在其中添加以下内容:
var http = require('http');http.createserver(function (request, response) { response.writehead(200, {'content-type': 'text/plain'}); response.end('hello world');}).listen(8080);console.log('server running at http://your_ip_address:8080/');
其中,your_ip_address为您服务器的ip地址。
在您安装了node.js和npm之后,请键入以下命令以安装http包到您的应用程序中:
npm install http
这些代码意味着什么?我们正在创建一个简单的http服务器,该服务器将在执行时为所有入站流量侦听8080端口。在每个请求中,服务器将响应“hello world”。
在代码中添加了console.log语句,该语句显示服务器正在使用的ip地址和端口号。当您运行应用程序时,您将在终端中看到此输出。这将帮助您确认应用程序是否正在运行以及访问哪个url。
第五步:运行应用程序
我们的应用程序已做好准备,现在让我们运行它吧!回到终端,并转到app.js文件所在的目录。在那里,你可以输入以下命令:
node app.js
这将启动您的应用程序。应用程序将在后台运行,并开始在您的服务器的8080端口上运行。浏览器中的ip地址或curl命令中的该地址作为get请求将向您发送“hello world”。
第六步:设置永久性
尽管在服务器上使用命令启动应用程序很常见,但在实际生产环境中,您可能会发现自己必须依靠服务器管理工具来自动化和监视进程。
为了使应用程序在服务器重新启动后每次自动启动,您需要创建一个systemd服务。systemd是一个许多linux发行版中使用的初始化系统,它能够同时管理和监视系统进程。
为此,请在ubuntu中键入以下命令:
sudo nano /etc/systemd/system/your_app.service
请使用应用程序的实际名称替换your_app。在文件中添加以下内容:
[unit]description=your_appafter=syslog.target network.target[service]environment=node_port=8080type=simpleuser=your_usernameexecstart=/usr/bin/node /path/to/your/app.jsrestart=on-failure[install]wantedby=multi-user.target
在上面这段代码中,需要以下更改:
-your_app:应用程序的名称
-node_port:该应用程序侦听的端口
-your_username:要在其中运行服务的用户
-/path/to/your/app.js:应用程序文件的实际路径
下一步,您需要让systemd重新加载并启动自定义服务。键入以下命令以将您的文件复制到正确的目录并重新加载服务:
sudo systemctl daemon-reloadsudo systemctl enable your_appsudo systemctl start your_app
此时,您的应用程序已配置为使用systemd启动。您可以使用以下命令查看应用程序的状态:
sudo systemctl status your_app
第七步:运行自定义命令
现在,您可以使用systemd在服务器重新启动后自动运行应用程序了。但是,您还可以使用systemd管理来自定义命令,这些命令将在特定时间内运行。
例如,您可以使用以下命令在部署更新期间关闭应用程序:
sudo systemctl stop your_app
然后,在完成更新后,重新启动应用程序:
sudo systemctl start your_app
您已经成功地将您的node.js应用程序部署在实际生产环境中。这是一个很好的起点,让您的开发人员和客户能够访问您的应用程序。
以上就是web前端部署nodejs的详细内容。