Mac系统部署Node.js至阿里云服务器并实现外网访问
转载https://www.jianshu.com/p/b5b6d062ba29
先记录一下整体的过程:
1、购买阿里云服务器,在ESC控制台创建实例
2、在ESC服务器上搭建node环境
3、上传node.js代码到ESC服务器,并用阿里云服务器公网IP访问
一、购买ESC服务器
1、登录阿里云,找到云服务器ESC,点击购买,在此学习阶段我选择了最低的配置,最短的时长
2、打开阿里云控制台,选择云服务器ESC-实例-创建实例
![](https://upload-images.jianshu.io/upload_images/2763628-844e102f02833c5d.png?imageMogr2/auto-orient/strip|imageView2/2/w/1200/format/webp)
其中选择分配公网IP,无需再申请弹性公网IP,安全组规则可以使用默认配置,镜像服务选择CentOS版本最新的。
上图表示云服务器已经购买完成。
二、在阿里云服务器上搭建node环境
这里踩了许多的坑,但结果是美好的,多踩坑多学习。
1、首先连接阿里云服务器,Mac上可以使用终端操作,在终端中输入:
$ ssh root@47.92.165.181
![](https://upload-images.jianshu.io/upload_images/2763628-82dd585313bbe42a.png?imageMogr2/auto-orient/strip|imageView2/2/w/570/format/webp)
提示“ Welcome to Alibaba Cloud Elastic Compute Service !”表示连接服务器成功。
2、此时的服务器是一张白纸,不存在node环境的,下面开始搭建node环境
① 使用源代码构建node.js,要进行软件的安装,需要先安装用来编译源代码的开发工具:
[root@iz8vbfrblr3s915qrmkrj8z ~]# yum -y groupinstall "Development Tools"
② 安装node.js,此时服务器默认处于root路径下,先执行
[root@iz8vbfrblr3s915qrmkrj8z ~]# cd ..
回到上层路径中,然后执行ls,列出当前路径下的文件与文件夹
![](https://upload-images.jianshu.io/upload_images/2763628-a5ec252c9eaf5682.png?imageMogr2/auto-orient/strip|imageView2/2/w/570/format/webp)
③ 进入/usr/src文件夹,在这个文件夹中存放node源代码,使用wget命令下载node.js安装包,由于是Mac环境,所以下载node安装包的时候要注意选择适合mac的版本。
![](https://upload-images.jianshu.io/upload_images/2763628-c7ecab3ae91ed951.png?imageMogr2/auto-orient/strip|imageView2/2/w/570/format/webp)
这里选择了最新的v9.9.0版本,下载好压缩包后,开始解压文件
[root@iz8vbfrblr3s915qrmkrj8z src]# tar -zxf node-v9.9.0.tar.gz
现在在src目录下执行ls,看当前目录下有哪些文件
![](https://upload-images.jianshu.io/upload_images/2763628-588267d6d7c65a7b.png?imageMogr2/auto-orient/strip|imageView2/2/w/459/format/webp)
④ 进入解压后的文件夹
![](https://upload-images.jianshu.io/upload_images/2763628-fd6dfa2a2707af8b.png?imageMogr2/auto-orient/strip|imageView2/2/w/436/format/webp)
并执行配置脚本来进行预编译处理
⑤ 编译node.js源代码
[root@iz8vbfrblr3s915qrmkrj8z node-v9.9.0]# make
这一步需要很久,大概花了40分钟的样子才编译完成
⑥ 编译完成后,需要执行make install
⑦ 此时node.js已经安装完成,nodejs默认有npm,可以使用npm安装express 和 forever,全局安装
[root@iz8vbfrblr3s915qrmkrj8z node-v9.9.0]# npm -g install express forever
⑧ 创建软链接,可以全局使用node、npm命令,否则会报“命令未找到”
sudo ln -s /usr/local/bin/node /usr/bin/node
sudo ln -s /usr/local/lib/node /usr/lib/node
sudo ln -s /usr/local/bin/npm /usr/bin/npm
sudo ln -s /usr/local/bin/forever /usr/bin/forever
至此,node环境已经搭建完成。
?xml version="1.0" encoding="UTF-8"?
三、上传node.js代码到阿里云服务器
进入/home文件夹,把node代码放在此路径下
![](https://upload-images.jianshu.io/upload_images/2763628-30c0da641befa887.png?imageMogr2/auto-orient/strip|imageView2/2/w/357/format/webp)
可以使用git拉取代码,此处只做演示,未拉取代码,后面完善
创建项目服务器文件:touch example.js
编辑example.js: vim example.js
(i,进入编辑模式,编辑完成按Esc键退出编辑,并输入:wq退出vim编辑器)
const http = require('http');
const hostname = '172.26.141.193';//私网IP
const port = 80;
const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('wo zheng ni ge xiao chou zhu wa zi 666.\n');
});
server.listen(port, hostname, ()=> {
console.log(`Server running at http://${hostname}:${port}/`);
});
执行example.js(node example.js或者forever start example.js)
![](https://upload-images.jianshu.io/upload_images/2763628-9d498ea0ac993a6f.png?imageMogr2/auto-orient/strip|imageView2/2/w/462/format/webp)
到此已经大功告成,可以在浏览器中输入公网IP+端口号,也可以是相应的域名
![](https://upload-images.jianshu.io/upload_images/2763628-cf70c5eaaa3edd05.png?imageMogr2/auto-orient/strip|imageView2/2/w/1200/format/webp)
域名:由于没备案,备案又需要购买3个月及以上ESC服务,所以暂时无法打开,后续再购买体验一把
![](https://upload-images.jianshu.io/upload_images/2763628-e792275576f017a2.png?imageMogr2/auto-orient/strip|imageView2/2/w/1200/format/webp)