前言
踩了不少坑网上感觉帖子都不太全自己撸完之后把服务器初始化又重新撸了一遍。就有了这篇文章。
本文主要只介绍了如何使你的云服务器支持node环境。并不包含node.js具体代码。照撸之前、请自己写一份监听端口的文件备用。
1、买个服务器
没啥说了吧、记得服务器的密码就行。
2、登录服务器
- 远程连接到你的服务器
sudo ssh 公网ip
//如果你发现密码不对、也可以用root登录试试
sudo ssh root@公网ip
先输入mac密码、再输入服务器密码
3、安装node
既然是用node.js进行服务器配置。当然要先安装node.js
1、先检查一下g++是否完整
因为我有一次安装的时候提示g++: Command not found导致安装失败。所以还是提前检查一下吧.
g++ --version
如果已经安装。你就可以去安装node.js了。
如果没有
//yum 安装g++时,用yum list的程序名不是 g++,而是 gcc-c++,这个真的很坑。
yum install gcc-c++
2、下载安装node.js
可以使用yum进行安装、但这里不推荐
其一是安装不了太新的版本、而且不能更新
其二是yum安装不会主动检查运行环境、以后麻烦
使用wget命令下载安装
//选择你的源码路径 cd /usr/local/src/
//使用wget下载
wget https://nodejs.org/dist/v8.0.0/node-v8.0.0.tar.gz
//解压
tar xvf node-v8.0.0.tar.gz
//进入文件夹
cd node-v8.0.0
//依次执行
./configure
make && make install
make的时间会很长、你可以看个电影或者电视剧~
安装成功之后、查看一下node版本确认是否完成:
node -v
4、上传node代码
我用的是webstorm、具体看截图吧。
这样就已经配置完了
5、关于服务器端口监听
在保证本地监听可以启动的情况下、如果修改成公网ip进行监听出错。
listen EADDRNOTAVAIL 47.94.210.34:8080
解决办法
1、你可以尝试监听全部IP地址
你可以listen(port,'.0.0.0.0')、或者干脆listen(port)、具体为什么不能监听上面那个、我也不清楚、但0.0.0.0肯定是万能的解法。
以下为开发文档原文
>
server.listen(port, [hostname], [backlog], [callback])#Begin accepting connections
on the specified port and hostname.
If the hostname is omitted, the server will accept connections directed to any IPv4
address (INADDR_ANY).
也就是说如果不填写主机名 hostname 字段、默认是监听 INADDR_ANY 、也就是任意的IPv4地址。
2、如果上面还不好使。你可以尝试修改服务器的安全组配置
6、通过pm2让node.js程序常驻
通常我们启动node程序就是直接node xxx.js
但是控制台是不能退出的。pm2可以帮我们解决这些问题。
安装pm2
npm install -g pm2
//或者
npm install pm2@latest -g
启动pm2
pm2 start form.js --name my_form
启动成功
可以你也可以查看当前进程状态
# pm2 list
请忽视我这个errored、因为是同一个文件、所以端口重复监听了报错。不过从这个15次重新运行上看、mp2的这个功能应该是默认的。
然后、关于如何设置开机自启动程序。
pm2 start form.js
pm2 save
pm2 startup
重启服务器再次查看list、就会发现列表内的线程已经启动成功了。
7、通过npm进行node版本管理
我本地的node是通过brew安装的。但是这个brew在服务器上死活搞不上去、所以才用的安装包。
但不能每次更新也都用安装包配置一遍。
于是、该我们的npm登场了。
//首先安装n模块:专门用来管理node的工具
npm install -g n
//你可以查看所有的node版本。本地版本会加粗显示、当前使用版本会有圆圈标注。
n ls
//下载指定版本的node
n v7.10.0
//选择当前部署版本(上下按钮选择、回车确定部署)
n
赶着下班、我就不贴图了。自己试试就知道了。
最后
至此、你的阿里云上已经成功搭建好了node环境并且可以像你本地一样工作。
如果上述过程中出现了什么问题。欢迎留言。