关键字: node.js,Ubuntu, MISCELLANEOUS ###介绍 这篇教程旨在于帮助大家设置一个Ubuntu服务器来运行基于Express,Greddy或Sails上的Node.js应用程序,通过学习这篇教程,可以避免一些安全问题,一定会受益匪浅,例如:
• 不要作为根用户运行你的app,这样,app会更安全。 • 你需要使用80端口运行app,只有根用户可以进入。(你需要用一个自定义URl来运行app,例如http://mysite.com –但不用指定端口) • 如果你的app崩溃,会重新启动,并会记录未处理的异常情况。 • 当服务器启动时,app也会重启-就是说,它会作为一即服务运行。 这个教程的前提是:读者有Linux基础知识,你可能会跳过不需要的步骤,但跟着教程一步步走会很有益处。
请注意:‘192.241.xxx.xxx’会有些不同之处。当你的虚拟服务器设置好并用ssh登录后,只管跟着执行DigitalOcean给出的指令就可以。正如我们大多数理解的那样,如果你使用根账户运行代码,而不怀好意的人泄露了代码,他就可以完全控制你的VPS。为避免事情发生,要设置一个安全账户,即使我们提供了合适的密码,账户仍然可以执行根操作。在本教程中,我们就给安全账户起名叫做“safeuser”-你也可以随便命名。现在,作为根用户登陆,并执行这些步骤:
在 /home/safeuser/里用一个文件夹创建用户:
给safeuser设置密码—输入以下命令后,你需要输入两遍:
给安全用户使用根级别命令的权限:
请注意作为安全用户登录的命令是你之前使用的同样命令,但用户名变了。而作为安全用户登陆时,每次你想运行一个具有根特权的命令时,需要在命令前加一个词:sudo。自己机器上的命令行使用命令登陆会显示下面的信息。
Sudo表明你想作为根用户运行这一命令,你会看到密码提示,就是安全用户密码。当提供密码后,命令开始运行。
当你输入sudo make,会发生很多事,耐心点。 当make install进程完毕后,为确保一切顺利,输入:
如果一切顺利,你会看到:
不走运的是,除非作为根用户登陆,一般情况下,你都需要使用像http://mysite.com:3000这样的一个URL—注意端口号。 很多人在这儿卡住,其实解决方法很简单,有几种方法,但有一个我比较偏爱。输入下面的命令:
现在,当你告诉一个Node应用程序你希望它在80端口运行,它会任劳任怨。
1. 如果它崩溃了,会通过重启应用程序让你的站点保持正常。 这些崩溃是不该发生的,但了解PM2能挽救你还是很好的。(一些人可能知道Forever.js,这是另外一个工具,可以让node基础站点保持运行—不过我觉得你会发现PM2能提供更多帮助)
**2.每次你重启服务器时,你的node应用程序会作为一项服务重启,这样会帮助到你。**一些用户知道其他的方法,但pm2更加简单,而且它添加了一些灵活性。
在命令行输入下列命令安装PM2:
首先,测试前创建一个简单的node app,在命令行输入:
然后,在nano编辑器输入下面的代码:
现在你有了一个基于node的名为app.js的应用程序,可以用它测试环境。 可以在命令行输入下列内容运行app.js:
完成后,通过浏览器,并输入IP地址作为URL,你应该可以看到你的hello world文本了。可以按Crtl+C中断执行。我们不想这样运行应用程序,这儿有一个要好得多的方法,我们用PM2来运行,不直接用Node。
你应该能看到这个内容:

运行这条命令,将应用程序作为一项服务运行:
请注意,你可能不会把用户名设置为安全用户—使用和你的设置相对应的名字。你应该会看到下面内容:
玩的开心吧!这个开始阶段的设置相当强大了吧。
关于node还有很多要学,但这个教程会带你走在正确的轨道上。要学习更多关于pm2的东西,可以访问pm2 repo。
重要说明:有一个启动脚本可以启动你的Node应用程序,但如果你知道它怎样工作的话,可以避免很多混淆,脚本叫做‘pm2-init.sh.’,在 'etc/init.d/'目录里,但它不会启动app.js。相反,服务器最后一次关机时,它会启动运行在PM2下的程序。 这很重要。当你输入pm2 list,如果你的node应用程序没有出现在list,你的app在服务器重启时将不会重启。使用pm2开启你的apps,以保证它们会重启:
回复 (1)
楼主把代码格式化的语法改一下吧, 不要用 <pre> code </pre>, 应该是 ```lang\n code \n```