繁体   English   中英

部署 Node.js + Express 到服务器

[英]Deploy Node.js + Express to server

部署 Node.js + Express 到服务器

我是 Node.js 和 Express 开发的新手,在我向老板推销使用这种新技术的新项目之前,我只想在我的服务器上测试该技术以确保一切正常. 我们在 Pair.com 上使用专用服务器进行托管。

背景,我们已经在 PHP/mySQL 中完成了所有以前的开发工作,我猜这就是我们的服务器设置为最有效地运行的内容。

话虽如此,我已经能够将 SSH 安装到服务器中,检查 Node 是否已安装(已安装,并且运行版本 12.18.1),将 CD 放入我的域,然后安装 express。

我使用 npm start 运行以下文件,该文件运行此 app.js 文件。

var bodyParser = require('body-parser');
var app = express();

app.use(bodyParser.urlencoded({ extended: true }));

app.get('/', function (req, res) {
  res.send('Hey this is your website.');
});

app.get('/joke', function (req, res) {
  var joke =
    'What do you call a dog that does magic tricks? A labracadabrador.';
  res.send(joke);
});

app.listen(8080, function () {
  console.log('Server running on 8080!');
});

当我运行它时,我得到“服务器正在 8080 上运行”。 在我的 SSH 终端中,但是,如果我访问该主域或 /joke。 我得到“找不到页面”。

我的理论是 Express 在 8080 上运行,但我的网站正在侦听端口 80,因此当 Express 在技术上运行时,我的网站并没有关注该 app.js 文件。

如果我尝试在端口 80 上运行 Express,我会收到 EACCESS 错误。

我的问题是,如何部署并让我的服务器监听看似在服务器上运行的 app.js 文件?

最好的解决方案是使用反向代理坐在您的快递服务器前面。 反向代理将侦听端口 80 并将请求转发到侦听端口 8080 的 express 应用程序。

您可以考虑使用nginx来完成此操作。 有很多关于配置它以与快速应用程序一起使用的教程。

我曾经遇到过类似的问题。 我通过使用 CORS 中间件解决了这个问题。 我在我的节点服务器上安装了 CORS,并将其用作中间件

app.use(cors({ origin: "http://localhost:3000" }));

请注意我如何使用客户端 URL 作为来源。 您可以将 URL 替换为您的客户端 URL。 我希望这有帮助

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM