Rain's Blog

在Linux上部署一个node项目

Rain, Wed Jan 17 2024back

本文将介绍如何使用 Linux 服务器、pm2 和 nginx 来搭建一个基于 Node.js 的网站。我们将通过上传文件、运行 Node 项目、放行端口、DNS 域名解析和 Nginx 域名代理等步骤来实现这一目标。

使用 node 快速编写一个 web 服务器

const express = require("express");
const app = express();
const port = 5000;

app.get("/", (_, res) => {
  res.send("Hello World!");
});

app.listen(port, () => {
  console.log(`The service runs on port ${port}`);
});

将文件上传到 Linux 服务器

接下来,我们将文件上传到 Linux 服务器。使用 scp 命令(如果有多个文件需要上传,则空格即可),您可以将文件从本地计算机传输到远程服务器。例如,以下命令将 main.js 文件上传到服务器的 /var/www 目录中。

# scp yourFile yourname@ip folder
scp main.js [email protected]:/var/www

# 如果配置了ssh,那么可以使用别名替代用户名和ip地址
scp main.js musk:/var/www/

使用 pm2 运行 node 项目

# 启动项目
pm2 start main.js --name node

# 查看本地运行的进程
pm2 ls

# 根据其id删除进程
pm2 del id

# 删除全部
pm2 del all

放行服务器端口

此时项目已经正常运行起来,但是由于端口没有放行,网站在外部访问不到的。

#放行端口
firewall-cmd --zone=public --add-port=5000/tcp --permanent

#重启防火墙
firewall-cmd --reload

顺便补充点其他命令

#查看开放的端口列表
firewall-cmd --zone=public --list-ports

#关闭端口
firewall-cmd --zone=public --remove-port=5000/tcp --permanent

这样在浏览器访问你的服务器 ip+端口号就可以看到内容了。

DNS 域名解析

如果想通过域名访问应用程序,则进行 DNS 域名解析。打开域名控制面板,并添加一个 A 记录。名称应为你想要的域名前缀,IP 地址应为服务器 IP 地址。等待 DNS 解析完成。

nginx 域名代理

回到服务器找到 /usr/local/nginx/conf/nginx.conf 文件 添加以下配置,不需要去启动一个新的 web 服务,只需要去监听即可。

  server {
        listen       80;
        server_name  your domain;

        location / {
		      proxy_pass http://127.0.0.1:5000;
        }
  }

保存文件,然后重启 nginx

nginx -s relaod

打开浏览器访问域名即可看到网站生效。