如今,前端开发越来越流行,越来越多的程序员开始涉足这个领域。而同时,需求越来越高的是让前端开发人员在项目中担当更多的职责,其中包括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 update sudo apt-get install nodejs npm
请注意,有时候您需要分别安装nodejs和nodejs-legacy包:
sudo apt-get update sudo apt-get install nodejs sudo 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_APP After=syslog.target network.target [Service] Environment=NODE_PORT=8080 Type=simple User=YOUR_USERNAME ExecStart=/usr/bin/node /path/to/your/app.js Restart=on-failure [Install] WantedBy=multi-user.target
在上面这段代码中,需要以下更改:
-YOUR_APP:应用程序的名称
-NODE_PORT:该应用程序侦听的端口
-YOUR_USERNAME:要在其中运行服务的用户
-/path/to/your/app.js:应用程序文件的实际路径
下一步,您需要让Systemd重新加载并启动自定义服务。键入以下命令以将您的文件复制到正确的目录并重新加载服务:
sudo systemctl daemon-reload sudo systemctl enable YOUR_APP sudo 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的详细内容。更多信息请关注PHP中文网其他相关文章!