本教程目的是帮助您设置Ubuntu服务器以运行Node.js程序,包括基于Express,Geddy或Sails的应用程序。这些说明将帮助您避免一些安全性错误,主要内容如下,让我们开始吧!
例如:
以上说明假定您有一定的Linux基础知识,希望您任真阅读。在教程开始之前,你应该先购买一台服Ubuntu服务器,我建议您使用腾讯云免费的开发者专属在线实验平台进行试验。
首次使用腾讯云CVM时,您会在您的邮箱收到使用Ubuntu帐户登录的说明。说明看起来会像这样:
尊敬的用户,
您重装云服务器购买成功,感谢您对腾讯云的支持!
服务器操作系统为 Ubuntu Server 16.04.1 LTS 64位 ,默认账户为 ubuntu ,密码是您设置的初始密码,如果忘记,请在控制台重置密码。
服务器名称 云主机ID 所在网络ID 内网IP 公网IP
未命名 ins-XXXX vpc-XXXX 172.27.X.X 118.24.XXX.XXX
这里我们先以Ubuntu
账户登录,并创建名为safeuser
的账户118.24.XXX.XXX
对您而言会有所不同。在设置虚拟服务器并使用ssh登录时,只需按照从腾讯云CVM收到的说明进行操作即可。
ssh ubuntu@118.24.XXX.XXX
useradd -s /bin/bash -m -d /home/safeuser -c "safe user" safeuser
为safeuser创建密码,输入以下命令后,系统会要求您输入两次密码:
passwd safeuser
授予安全用户使用root别命令的权限:
usermod -aG sudo <username>
按ctrl-D退出腾讯云CVM ubuntu会话。请注意,以安全用户身份登录的命令与您之前使用的命令相同,但用户名已更改。一旦以安全用户身份登录,每次要运行具有root权限的命令时,您必须使用sudo继续执行该命令。从您自己计算机上使用下面显示的命令登录。
ssh safeuser@192.241.xxx.xxx
下面我们来安装GIT(我们将使用GIT安装Node.js)。
在Ubuntu上安装:
sudo apt-get install git
sudo表示您要以root身份运行此命令。系统将提示您输入密码,输入密码后,将运行该命令。
请注意,在撰写本文时,v0.10.24是Node的最新版本。如果有更新的版本,请使用该版本号。输入以下命令进行安装:
sudo apt-get install build-essential
sudo apt-get install curl openssl libssl-dev
git clone https://github.com/joyent/node.git
cd node
git checkout v0.10.24
./configure
make
sudo make install
当make install
命令执行完成后,请输入以下命令检查您的服务器是否安装了node:
node -v
如果一切顺利,你应该看到:
v0.10.24.
我们不希望以root用户身份运行您的应用,但有一个问题:safeuser无权使用默认HTTP端口(80)。但是这样,用户就无法通过http://mysite.com访问你的网站了。除非你以root用户身份登录,否则你必须使用http://mysite.com:3000这样的网址才能登录。
有没有解决方案呢?答案很简单,输入以下命令:
sudo apt-get install libcap2-bin
sudo setcap cap_net_bind_service=+ep /usr/local/bin/node
现在,当您告诉Node应用程序您希望它在80端口上运行,他就会使用80端口啦!
NPM是一个包管理器,您将使用它来安装与Node.js应用一起使用的框架和库。PM2是一个很好的工具,可以解决两个问题:
通过在命令行输入下面的命令来安装PM2:
sudo npm install pm2 -g
您可以测试您的环境,以确保一切正常。在此示例中,我将使用IP地址,建议您使用域名,域名注册请点击这里
首先,创建一个简单的node.js应用程序,仅用于测试。在命令行输入
nano app.js
然后在nano编辑器中输入以下代码行:
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 http://127.0.0.1:80/");
按ctrl-X退出 - 当nano询问您是否要保存时,请回答是。
现在您有了一个名为app.js的基于node.js的应用程序,您可以使用它来测试您的环境。
您可以通过输入以下命令运行app.js
node app.js
现在,您应该能够通过浏览器输入您的IP地址来查看您的hello world文本。您可以通过按crtl-C来中断执行。其实更好的方法是使用PM2来运行它,而不是直接使用Node。
如果您使用pm2运行应用程序,那么你会发现pm2的好处,使用以下命令运行它:
pm2 start app.js
你应该看到这个报告:
以这种方式运行应用程序有什么好处?
/home/safeuser/.pm2/logs/app-err.log
中的文件中。输入以下内容将您的应用程序作为服务运行:
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
现在我们完成了之前设定的目标!
PS:您可能会注意到safeuser目录中名为node的文件夹。虽然它在安装过程中被使用,但实际上您不再需要它了。您可以通过输入以下内容将其删除:
rm -rf /home/safuser/node
现在,你已经学会使用Ubuntu安装Node.js程序,并且学会使用PM2来控制node.js程序,购买一台服务器进行尝试吧,学无止境!更多Linux教程请前往腾讯云+社区学习。
参考文献:《How To Use PM2 to Setup a Node.js Production Environment On An Ubuntu VPS》
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。