ubuntu下安装nodejs并实现Nginx反向代理服务器的方法

发布时间 - 2023-05-17 00:00:00    点击率:

一. 新版 nodejs 安装

这里强烈推荐使用 nvm (node版本管理器),其它方式的安装或多或少都有些问题。

具体步骤如下:

1. 通过 git 指令下载nvm

执行指令如下,我们把nvm下载到 /root/git/ 中去(记得要先安装 git):

[root@vm-22-180-ubuntu~]#pwd
/root
[root@vm-22-180-ubuntu~]#mkdir git
[root@vm-22-180-ubuntu~]#cd git
[root@vm-22-180-ubuntu~]#git clone https://github.com/creationix/nvm.git

2. 配置环境变量

这里是要修改 .bashrc 文件,如果不清楚其位置,可以回到根目录执行

#find . -name "*.bashrc" -print

来搜索和获取结果:


然后通过 vim 修改 ./etc/skel/.bashrc 文件(不过我个人是上方三个文件都做了同样的修改),在文件开头加入下面两行:

export nvm_nodejs_org_mirror=https://npm.taobao.org/mirrors/node
source ~/git/nvm/nvm.sh

其中第一行是修改nvm镜像路径到阿里,第二行才是把 nvm 添加到系统环境中去。

保存后执行指令让配置生效:

#source .bashrc

3. 直接用nvm安装nodejs

执行指令

#nvm install node

便可安装新版本的nodejs,安装成功后,最新版的node就装在服务器上了:
二. 安装 nginx

这里和node一样不推荐使用 apt-get/aptitude 形式安装,建议走源码编译安装。

1. 依赖安装和下载

确保安装了 gcc-c++  和 libpcre3-dev:

#aptitude install gcc-c++ libpcre3-dev

然后咱定位到 /home/ubuntu 去下载一些依赖包,并解压缩到该文件夹下:

#wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.36.tar.gz
#wget http://prdownloads.sourceforge.net/libpng/zlib-1.2.8.tar.gz
#wget https://www.openssl.org/source/openssl-1.1.0c.tar.gz

#tar -xzvf pcre-8.36.tar.gz
#tar -xzvf zlib-1.2.8.tar.gz
#tar -xzvf openssl-1.1.0c.tar.gz

这里咱们下载的是 nginx 模块所依赖的 pcre/zlib/openssl,压缩包的下载地址都是在它们对应官网中找到的。

需要留意的点是,pcre 不要下载使用 pcre2 的,否则会导致 nginx 编译过程报错:
推荐使用上方代码段提供的 pcre-8.36 版本。

留意下,如果在终端下载的速度太慢了,推荐用迅雷下载在本地后,再通过 filezilla 把文件同步到云主机上去,百试不爽~

2. 下载和解压 nginx

先到nginx官网找最新的源码包下载路径(截止本文时间,稳定版是 http://nginx.org/download/nginx-1.10.2.tar.gz),然后下载下来(我个人是下载到 /root 路径下):

[root@vm-22-180-ubuntu~]#cd
[root@vm-22-180-ubuntu~]#pwd
/root
[root@vm-22-180-ubuntu~]#wget http://nginx.org/download/nginx-1.10.2.tar.gz

然后解压此压缩包,并进入到文件夹 /nginx-1.10.2 去:

[root@vm-22-180-ubuntu~]#tar -xzvf nginx-1.10.2.tar.gz
[root@vm-22-180-ubuntu~]#cd nginx-1.10.2

3. 编译和安装

按顺序执行如下三条指令:

#./configure --prefix=/home/ubuntu/nginx --with-pcre=/home/ubuntu/pcre-8.36 --with-zlib=/home/ubuntu/zlib-1.2.8 --with-openssl=/home/ubuntu/openssl-1.1.0c

#make

#make install

它们的作用分别是:生成c源码文件和makefile文件、生成二进制文件、将nginx安装到指定目录(/home/ubuntu/nginx)。

注意 ./configure 指令后的参数分别指定了 nginx 的安装目录及相关依赖模块地址。

三. 启动 nginx

执行

#/home/ubuntu/nginx/sbin/nginx

可直接启动 nginx 服务,这时候在任意地方执行:

wget http://127.0.0.1

都可以下载到一份 index.html:
这时候我们直接访问云主机公网 ip 地址,就能直接看到该默认页面:
注意!如果这时无法通过公网ip访问页面,请确保云主机所处的安全组是允许所有端口访问的。
四. 执行一个node服务,并通过 nginx 配置实现反向代理

这里我们简单实现一个 node 页面,监听3000端口。

我们在本地先写一个 index.js 文件来耍一耍:

const http = require('http');

const server = http.createserver((req, res) => {
 res.statuscode = 200;
res.setheader('content-type', 'text/plain');
res.end('hello world\n');
});

server.listen(3000, () => {
 console.log(`node server is now running/`);
});

执行 node index 的话,访问 http://localhost:3000/ 会有“hello world”的输出:


然后咱们把这个文件放到云主机去。

鉴于我已经挂到 github上,读者们可以直接通过如下指令来下载该文件:

#git clone https://github.com/vajoy/node-test.git

p.s. 我个人下载到了“/root/node-project/”文件夹下,要执行node的话指令为:

#node /root/node-project/node-test/cp1/index

ok,咱们接着先修改 nginx 配置。如果你忘了 nginx 的配置在哪里,可以执行这条指令来确定:

#/home/ubuntu/nginx/sbin/nginx -t

本文的nginx是安装在 /home/ubuntu 下的,所以其配置文件路径是“/home/ubuntu/nginx/conf/nginx.conf”,我们这样编辑它(加上红框部分的代码):
这意味着当有请求路径为“/hello”时,nginx 会将请求代理到服务器的3000端口去(即node监听的端口)。

五. 重启 nginx 和 node

到这一步的时候别忘了两点 —— 1. 咱们修改 nginx 配置后还没重启nginx服务;2. 咱们还没有在云主机上跑node服务(上文仅仅是在本地电脑上跑了一次)。

所以我们分别执行如下指令(重启nginx+跑node):

#/home/ubuntu/nginx/sbin/nginx -s reload

#node /root/node-project/node-test/cp1/index

这时候直接访问 http://公网ip/hello,就能直接看到node跑起来的页面内容了:


# ubuntu  # nginx  # nodejs  # html  # JS  # github  # git  # vim  # http  # 推荐使用  # 重启  # 是在  # 就能  # 人是  # 这时候  # 中去  # 压缩包  # 官网  # 的是 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel路由怎么定义_Laravel核心路由系统完全入门指南  JS经典正则表达式笔试题汇总  edge浏览器无法安装扩展 edge浏览器插件安装失败【解决方法】  开心动漫网站制作软件下载,十分开心动画为何停播?  Laravel distinct去重查询_Laravel Eloquent去重方法  Python图片处理进阶教程_Pillow滤镜与图像增强  高端智能建站公司优选:品牌定制与SEO优化一站式服务  javascript中数组(Array)对象和字符串(String)对象的常用方法总结  Laravel项目如何进行性能优化_Laravel应用性能分析与优化技巧大全  如何快速上传自定义模板至建站之星?  北京的网站制作公司有哪些,哪个视频网站最好?  在centOS 7安装mysql 5.7的详细教程  Laravel Facade的原理是什么_深入理解Laravel门面及其工作机制  Python文件操作最佳实践_稳定性说明【指导】  Laravel怎么为数据库表字段添加索引以优化查询  JavaScript中如何操作剪贴板_ClipboardAPI怎么用  Laravel如何升级到最新的版本_Laravel版本升级流程与兼容性处理  Laravel如何为API编写文档_Laravel API文档生成与维护方法  Laravel如何构建RESTful API_Laravel标准化API接口开发指南  Javascript中的事件循环是如何工作的_如何利用Javascript事件循环优化异步代码?  高端建站三要素:定制模板、企业官网与响应式设计优化  Bootstrap CSS布局之列表  免费网站制作appp,免费制作app哪个平台好?  Laravel的契約(Contracts)是什么_深入理解Laravel Contracts与依赖倒置  如何在服务器上三步完成建站并提升流量?  佛山网站制作系统,佛山企业变更地址网上办理步骤?  Laravel如何升级到最新版本?(升级指南和步骤)  Win11怎么更改系统语言为中文_Windows11安装语言包并设为显示语言  详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)  魔方云NAT建站如何实现端口转发?  iOS发送验证码倒计时应用  历史网站制作软件,华为如何找回被删除的网站?  如何在沈阳梯子盘古建站优化SEO排名与功能模块?  javascript基于原型链的继承及call和apply函数用法分析  如何在阿里云完成域名注册与建站?  百度输入法ai面板怎么关 百度输入法ai面板隐藏技巧  网站制作报价单模板图片,小松挖机官方网站报价?  非常酷的网站设计制作软件,酷培ai教育官方网站?  西安专业网站制作公司有哪些,陕西省建行官方网站?  合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?  网易LOFTER官网链接 老福特网页版登录地址  电视网站制作tvbox接口,云海电视怎样自定义添加电视源?  Laravel怎么清理缓存_Laravel optimize clear命令详解  MySQL查询结果复制到新表的方法(更新、插入)  手机软键盘弹出时影响布局的解决方法  网站制作企业,网站的banner和导航栏是指什么?  音乐网站服务器如何优化API响应速度?  如何在万网自助建站中设置域名及备案?  如何在景安服务器上快速搭建个人网站?  Win11搜索栏无法输入_解决Win11开始菜单搜索没反应问题【技巧】