###创建一个安全账户来运行你的代码
当你刚创建好DigitalOcean droplet后,会收到使用根账户登录的指令:
To login to your droplet, you will need to open a terminal window and copy and paste the following string:
ssh root@192.241.xxx.xxx
useradd -s /bin/bash -m -d /home/safeuser -c “safe user” safeuser
passwd safeuser
usermod -aG sudo
sh safeuser@192.241.xxx.xxx
sudo apt-get install git
sudo apt-get install build-essential
sudo apt-get install curl openssl libssl-dev
git clone
cd node
git checkout v0.10.24
./configure
make
sudo make install
node -v
v0.10.24.
sudo apt-get install libcap2-bin
sudo setcap cap_net_bind_service=+ep /usr/local/bin/node
sudo npm install pm2 -g
nano app.js
var http = require(‘http’);
var server = http.createServer(function (request, response) {
response.writeHead(200, {"Content-Type": "text/plain"});
response.end(“Hello World\n”);
});
server.listen(80);
console.log(“Server running at /”);
使用Ctrl-X退出,如果nano询问你是否保存,回答yes。
现在你有了一个基于node的名为app.js的应用程序,可以用它测试环境。
可以在命令行输入下列内容运行app.js:
node app.js
pm2 start app.js
sudo env PATH=$PATH:/usr/local/bin pm2 startup -u safeuser
Adding system startup for /etc/init.d/pm2-init.sh …
/etc/rc0.d/K20pm2-init.sh -> …/init.d/pm2-init.sh
/etc/rc1.d/K20pm2-init.sh -> …/init.d/pm2-init.sh
/etc/rc6.d/K20pm2-init.sh -> …/init.d/pm2-init.sh
/etc/rc2.d/S20pm2-init.sh -> …/init.d/pm2-init.sh
/etc/rc3.d/S20pm2-init.sh -> …/init.d/pm2-init.sh
/etc/rc4.d/S20pm2-init.sh -> …/init.d/pm2-init.sh
/etc/rc5.d/S20pm2-init.sh -> …/init.d/pm2-init.sh
现在我们的目标已经完成了!
• 你并未作为根用户运行;因此,你的app更安全。
• 你是在用80端口,一般只有根用户使用。
• 如果你的应用程序崩溃,它会重启,而且会保持未处理异常情况的记录。
• 服务器开启时,你的应用程序会重启。
玩的开心吧!这个开始阶段的设置相当强大了吧。
读后感:你可能注意到在safeuser目录里,有一个名为node的文件夹。它是在安装时使用的,但你已经不再需要了,可以删掉,输入:
关于node还有很多要学,但这个教程会带你走在正确的轨道上。要学习更多关于pm2的东西,可以访问pm2 repo。
重要说明:有一个启动脚本可以启动你的Node应用程序,但如果你知道它怎样工作的话,可以避免很多混淆,脚本叫做‘pm2-init.sh.’,在 'etc/init.d/’目录里,但它不会启动app.js。相反,服务器最后一次关机时,它会启动运行在PM2下的程序。
这很重要。当你输入pm2 list,如果你的node应用程序没有出现在list,你的app在服务器重启时将不会重启。使用pm2开启你的apps,以保证它们会重启:
pm2 start app.js