繁体   English   中英

如何在不使用gcloud上的deploy.sh文件的情况下为node.js应用程序打开端口80?

[英]How to open port 80 for a node.js application without deploy.sh file on gcloud?

我有一个节点应用程序,如果我手动将腻子插入gcloud computeVM并运行它,则该应用程序运行良好。

这是复杂性(所有情况都适用于Unix):

1.)我有一个域名。 因此,我添加了dns区域记录以指向上述VM。

2.)为了使计算VM响应,应在80上侦听进程

3.)如果我们遵循https://cloud.google.com/nodejs/getting-started/run-on-compute-engine#download_app ,则它指定在8080上运行该应用程序。

4.)对于<1024的端口,需要root特权才能打开端口。

5.)因此从npm开始,我将启动脚本更改为使用“ sudo npm start”

6.)然后给出以下错误:my-app-instancesupervisored:nodeapp sudo:不存在tty且未指定askpass程序

7.)如果我每次都要“ sudo visudo”并在部署后每次重新启动实例时都添加“ username ALL = NOPASSWD:”,那是我最不希望的。

我已经包含了stratup-script的相关部分以获取更多信息:

# Install app dependencies
cd /myrepo/opt/app/servers
sudo npm install

# Create a nodeapp user. The application will run as this user.
useradd -m -d /home/nodeapp nodeapp
chown -R nodeapp:nodeapp /myrepo/opt/app/servers

# Configure supervisor to run the node app.
cat >/etc/supervisor/conf.d/node-app.conf << EOF
[program:nodeapp]
directory=/myrepo/opt/app/servers
command=sudo npm start
autostart=true
autorestart=true
user=nodeapp
environment=HOME="/home/nodeapp",USER="nodeapp",NODE_ENV="production"
stdout_logfile=syslog
stderr_logfile=syslog
EOF

A.)我的要求很简单:我的Google域现在指向上述计算VM。 每当用户键入www.domainname.com时,都应将其带到网站中,而网址中没有任何端口号。 如何通过简单修改启动脚本(首选)打开端口80?

B.)而且,如果我必须使用教程中指定的deploy.sh,它将自动执行吗? 或者,如果我必须自动执行它,该怎么办。

注意:我不是unix专家。 任何帮助,将不胜感激。

研究使用反向代理 这样,您就可以在没有端口特权的情况下(例如8080)运行应用程序,并在端口80上运行特权HTTP服务器(例如Apache或Nginx),并将流量代理到您的应用程序。 这是常见的做法,比使用root特权运行您的应用程序安全得多。

暂无
暂无

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

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