凡是可以用 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 –