将Node.js + Express部署到服务器

时间:2020-06-25 00:17:32

标签: javascript node.js express

将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文件?

2 个答案:

答案 0 :(得分:0)

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

您可以考虑使用nginx完成此操作。有关如何配置它与Express应用程序一起使用的教程很多。​​

答案 1 :(得分:0)

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

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

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