凡是可以用 Javascript 来写的应用,最终都会用Javascript来写。
近些年 Nodejs 异常的火爆,因此有一些服务端也开始使用 js 来写了。
作为前端开发工程师,nodejs也是必须要掌握的一项技能了。
最近在网上买了个云服务器,于是想搭个 Node 服务出来,顺便学习了如何搭建服务器 nodejs 环境。
一、Nodejs的安装
现在,在 Windows 上和 Mac 等拥有图形界面的机器上安装 nodejs 还是很方便的,去官网下载安装包,然后下一步、下一步、下一步…就可以了。
而在没有图形界面的机器,比如服务器上安装就稍微麻烦些了,没有固定的安装包。
此时,我们有两种方式来在服务器上安装
1  | 1)直接下载二进制文件进行安装,这种方式下载下来配置下环境变量就可以用了。  | 
官方下载地址: https://nodejs.org/en/download/
注意:
如果使用第一种方式,选择直接下载二进制文件,需要注意系统的版本,如果版本对不上可能会出现运行报错的情况。
第二种方式,下载源码直接在服务器上手动编译。
方法1、通过二进制文件安装(推荐)
1  | wget https://nodejs.org/dist/v16.18.0/node-v16.18.0-linux-x64.tar.xz # 获取nodejs最新包,版本号可选最新的  | 
方法2、通过源码编译安装
首先将 nodejs 的源码安装包下载下来,然后解压编译
1  | apt-get update # 更新已安装的包 若提示权限不足,在前面加上sudo  | 
make 的时候可能会报这个错误:
1  | WARNING: failed to autodetect C++ compiler version (CXX=g++)  | 
解决办法,手动编译
1  | apt-get install build-essential # 安装此代码包  | 
nodejs安装目录
1  | which node # ubuntu & mac 系统都可用  | 
注意:此方式可能没有安装 npm 包(需要想办法自己安装 npm 包),推荐直接下载编译后的二进制包(方法1)。
二、将本地的小网站上传到服务器上去
首先确定服务器上的网站存放目录。
这里我将它放到/website/
1  | scp -r ~/test ubuntu/@123.xxx.xxx.xxx:/website  | 
或者用rsync
1  | rsync -a ~/* root@118.193.173.25:~/website/  | 
上传过长中出了一个错误,如果是直接上传到 tmp 就可以,其它的目录就会报错:
1  | scp permission denied  | 
网上查了下是因为权限不足,于是试了下上传到tmp目录,发现可行,确定是权限的问题之后就将自己的目录权限设置一下,就能正常上传了。
权限问题需谨慎,这里给了最高权限,实际生产环境自己调整适当的权限。
1  | # chmod 755 ./data1  | 
三、安装mongodb
1  | apt-get update  | 
如果不update会报如下错误:
1  | Unable to locate package mongo  | 
四、安装pm2
直接在服务器上执行
1  | npm install -g pm2  | 
五、安装并配置Nginx解析
安装
1  | sudo apt-get install nginx  | 
查看nginx是否安装成功
1  | nginx -v  | 
nginx 的配置文件路径
1  | /etc/nginx  | 
配置过程中遇到个坑,老是返回 hello nginx 页面
解决办法
1  | 注释掉 /etc/nginx/nginx.conf 里面的  | 
然后增加如下 nginx 配置,将 80 端口反代理到项目端口
比如我在服务端写了个简单的 node 程序,端口为3000
配置代理如下:
1  | server {  | 
配置完毕,检测 Nginx 配置是否正确
1  | sudo nginx -t  | 
检测错误,则对应具体信息做修改
检测正确,重启Nginx 服务生效
1  | sudo service nginx reload  | 
然后访问 xxx.xxx.xxx.xxx:80 即可访问到Node程序了
至此服务端 Node 搭建网站告一段落
下一步就是申请域名了。
– 更新于 2022/10/21 –