如何在gcloud上没有deploy.sh文件的node.js应用程序中打开端口80?

时间:2016-04-27 23:39:13

标签: linux unix gcloud

我有一个节点应用程序,如果我手动将putty放入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-instance supervisord:nodeapp sudo:no tty present并且没有指定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

答。)我的要求很简单:我的谷歌域名现在指向上面的计算虚拟机。每当用户输入www.domainname.com时,都应该将他带到网站,网址中没有任何端口号。如何通过简单修改启动脚本(首选)打开端口80?

B。)如果我必须使用教程中指定的deploy.sh,它会自动执行吗?或者如果我必须自动执行它,那么程序是什么。

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

1 个答案:

答案 0 :(得分:2)

考虑使用reverse proxy。这允许您在8080之类的端口上运行没有root权限的应用程序,并在端口80上运行特权HTTP服务器(如Apache或Nginx)并将流量代理到您的应用程序。这是常见做法,比使用root权限运行应用程序更安全。