如何在 Linux 上部署 JavaScript 应用

山海之间
山海之间
发布时间:2026-08-22| 93人浏览过
原创

前言

很多人第一次把 JavaScript 应用放到 Linux 服务器上时,最容易混淆的不是某条命令,而是整条上线链路:本地能跑、服务器能常驻、域名能访问、出了问题能排查,这几件事其实分属不同层面。本文按实际部署顺序把流程重新整理,从 Node.js 环境、项目初始化、PM2 托管到 Nginx 反向代理与上线维护逐段拆开,帮助你判断哪些是必做项,哪些是按需补充。

把 JavaScript 应用部署到 Linux,难点通常不在某一条命令,而在于流程容易碎:本地能跑,不代表上线后能稳定、可维护地跑。下面按“开发准备、服务启动、对外暴露、上线维护”四个环节重组一遍,保留原文里的关键命令和配置,让你能判断自己现在卡在哪一步,以及生产环境还缺哪些基础项。

准备运行环境与项目骨架

在 Linux 上部署 JavaScript 应用,首先要确认基础运行时已经就绪。对于 Node.js 应用来说,最少需要 nodejs 和 npm。

sudo apt update
sudo apt install nodejs npm

如果你还没创建项目目录,可以先新建一个工作目录并进入其中:

mkdir my-js-app
cd my-js-app

随后初始化 Node.js 项目,生成 package.json,让依赖和脚本有统一管理入口:

npm init -y

编辑器方面,原文提到 Visual Studio Code、Sublime Text、Atom,都可以使用。这一步不影响部署流程,但建议至少保证代码、配置文件和日志查看工具顺手可用。

安装依赖并完成应用代码

项目骨架准备好后,就可以安装实际需要的依赖。以 Web 应用为例,常见选择是 Express:

npm install express --sa ve

这条命令会把 Express 写入 package.json 的依赖列表。原文中的命令写法保留不变,实际使用时要注意参数是否符合你当前 npm 版本的习惯。

代码层面,最关键的是让应用明确监听一个端口,例如 3000,这样它才能接收 HTTP 请求。无论你写的是页面服务还是 API,至少都要确认以下两点:

应用需要监听固定端口

如果服务没有正常监听端口,后面的 PM2、Nginx 和监控都无从谈起。

应用需要能返回有效响应

无论是浏览器页面还是接口数据,本地跑通后再进入部署阶段,排错成本会低很多。

展示从环境准备到 PM2 托管的 Node.js 应用部署流程图,强调命令与关键检查点。
部署主线流程图用流程图梳理从系统准备到 PM2 启动应用的主线步骤,适合首次部署时对照检查。

先做本地验证,再补生产环境配置

在把服务交给进程管理器之前,先直接用 Node.js 启动一次,确认应用本身没有明显错误:

node app.js

启动后,可以在浏览器访问 http://localhost:端口号,检查页面或接口是否按预期返回。

本地验证通过后,不要急着直接上线。进入生产环境前,应该先把敏感配置从代码里拿出来。

不要把连接串和密钥硬编码进源码

数据库连接字符串、密钥等内容如果直接写在代码中,后续维护和安全控制都会很被动。

用 .env 管理环境变量

原文推荐使用 .env 文件配合 dotenv 包加载环境变量。这种做法的好处是配置与代码分离,切换开发、测试、生产环境时更容易管理。

用 PM2 托管 Node.js 进程

当应用已经能在本地正常运行后,就可以把它放到服务器上长期运行。相比直接用 node app.js 前台启动,PM2 更适合生产环境,因为它能负责进程托管和重启。

先全局安装 PM2:

npm install pm2 -g

然后启动应用,并给进程命名:

pm2 start app.js --name "my-js-app"

PM2 的核心价值在于两点:一是能持续管理进程状态;二是服务器重启后,应用也更容易恢复运行。对于初次部署的 Node.js 服务,这一步基本可以视为生产环境的默认配置。

需要对外提供服务时,再配置反向代理

如果应用只在本机测试,直接监听端口即可;但如果要对外提供访问,通常会在前面加一层 Nginx 或 Apache,把外部请求转发到 Node.js 服务。

展示 Nginx 反向代理到 Node.js 服务的请求转发关系,以及上线后安全与监控关注点。
对外访问与运维结构图这张图把“域名入口、Nginx 转发、Node.js 进程、安全与监控”放到同一视图中。

以 Nginx 为例,可以在配置中加入一个 location 块:

server {
    listen 80;
    server_name yourdomain.com;

    location / {
        proxy_pass http://localhost:端口号;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}

这段配置的作用,是把发往 yourdomain.com 的请求转发到本机对应端口上的 Node.js 应用。原文也提到,Apache 可以通过 mod_proxy 实现类似效果。

什么时候需要反向代理

当你希望服务通过域名访问、统一处理 HTTP/HTTPS,或者后面还要挂更多站点和服务时,Nginx/Apache 往往是更稳妥的入口层。

上线后重点看安全、性能与维护

应用成功跑起来,只是部署的起点,不是终点。上线后的稳定性,更多取决于安全策略和日常维护习惯。

HTTPS、依赖更新和权限收敛是基础项

原文明确提到,HTTPS 是必须的;依赖项要保持更新;服务器权限应尽量收窄。这三项虽然不复杂,但往往最容易因为“先跑起来再说”被拖延。

Express 应用可加 helmet

如果你的服务基于 Express,可以使用 helmet 中间件,为应用补上一组常见的安全相关 HTTP 头配置。

监控和日志决定后续排障效率

上线后可以使用 PM2 自带监控功能,或者接入第三方监控工具,持续观察性能和稳定性。定期查看日志,往往能比报警更早发现异常趋势。

把这些环节串起来看,Linux 部署 JavaScript 应用并不复杂:先保证 Node.js 环境和项目结构完整,再确认本地可运行,之后用 PM2 托管、按需加 Nginx 反向代理,最后补齐安全和监控。对大多数中小型 Node.js 服务来说,这已经是一套足够可靠的基础上线流程。

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。