问题描述
我是一个全新的开发人员,正在尝试部署我的第一个应用程序(假设名称为testing
)。
我想通过使用Passenger来部署Next.js React应用程序(Dreamhost包含并要求此应用程序,因此我没有安装它,并且服务器终端上没有passenger
命令),但是我没有提示该怎么做。
据我所知,乘客正在寻找app.js
来启动应用程序,因此,在我的服务器上,我的域文件夹中应该有一个app.js
(testing.com/app.js
) 。
但是Next.js没有明确的app.js
,我所拥有的只是_app.js
文件夹中的pages
,它做了一些小的更改,所以我不知道如何连接它们
配置了app.js后,我还想知道是否需要运行node app.js
?
如果我更改testing.com/app.js
的代码,就像下面的代码,看来我的网站将会做出相应的更改:
var http = require("http");
http.createServer(function(request,response) {
response.writeHead(200,{"Content-Type": "text/plain"});
response.write("Hello World");
response.end();
}).listen(80);
如果我运行node app.js
并列出端口3000,则该端口适用于http
,https
仍将显示类似We're sorry,but something went wrong.
的内容。
如果我不运行node app.js
或将监听设置为80,则只能获得We're sorry,but something went wrong.
。
任何帮助将不胜感激。
解决方法
我强烈建议您阅读how to deploy a node.js app using passenger。
关于端口问题...
由于您没有显示任何错误日志,所以我假设问题是您没有超级用户访问权限。低于1024的任何端口都需要root访问权限才能使用。
只需运行sudo node app.js
,您就可以侦听1024以下的端口。
您不需要安装Passenger或运行node app.js
。 App.js通过旅客自动执行。但是,您将需要在dreamhost上安装NVM和nodejs。有关安装节点的完整说明,请参见:https://help.dreamhost.com/hc/en-us/articles/360029083351-Installing-a-custom-version-of-NVM-and-Node-js
然后确保已为您的域启用{Password&Node.js}:https://help.dreamhost.com/hc/en-us/articles/216635318-Enabling-Passenger-for-Node-js
完成上述操作之后,您就可以开始使用了。确保您的域具有以下目录结构:
application directory
|
+-- app.js
|
+-- .htaccess
|
+-- public/
|
+-- tmp/
您的app.js文件如下所示
var http = require("http");
http.createServer(function(request,response) {
response.writeHead(200,{"Content-Type": "text/plain"});
response.write("Hello World. This page is running Node.js version: ");
response.write(process.version);
response.end();
}).listen(80);
您的.htaccess文件如下所示
#path to nodejs version installed
PassengerNodejs [PUT IN YOUR PATH TO YOUR INSTALLATION OF NODE JS]
#error reporting
PassengerFriendlyErrorPages on
现在,每当您更改配置时,您都将需要命令Passenger重新启动您的nodejs应用程序。这可以在您的应用目录中完成
touch tmp/restart.txt
您的node.js应用程序应如何在您的域上“打招呼”。如果仍然没有,则需要检查日志,然后给Dreamhost支持小组发送电子邮件。我第一次进行此设置时,Dreamhost必须修复一些问题。
但是关于Next.Js。这可能比较棘手,因为您只能触发app.js。 Next.js位于目录调用pages
中。不幸的是,我仍在寻找解决方法。