我有一个节点应用程序,如果我手动将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专家。任何帮助将不胜感激。
答案 0 :(得分:2)
考虑使用reverse proxy。这允许您在8080之类的端口上运行没有root权限的应用程序,并在端口80上运行特权HTTP服务器(如Apache或Nginx)并将流量代理到您的应用程序。这是常见做法,比使用root权限运行应用程序更安全。