在Linux系统配置Nodejs环境的最简单步骤,部署多个thinkjs(nodejs)项目
发现一台服务器部署管理多个nodejs服务,可以采用二级域名weekly.mwcxs.top,也可以采用固定后缀www.mwcxs.top/weekly的方式,本文先从固定后缀的方式部署管理多个nodejs服务。
以下详细的介绍,以周报企业管理系统为例进行部署,欢迎fork和start,源码地址:https://github.com/saucxs/weekly,展示地址:http://weekly.mwcxs.top有问题一起交流。
1、去官网下载和自己系统匹配的文件:
英文网址:https://nodejs.org/en/download/
中文网址:http://nodejs.cn/download/
建议去英文网站下载 ,因为中文这边没有给出稳定版,目前稳定版8点多。最新版是10点多
2、查看linux系统的位数
通过 uname -a 命令查看到我的Linux系统位数是64位(备注:x86_64表示64位系统, i686 i386表示32位系统),如图

选择64位

3、下载下来的tar文件上传到服务器并且解压
我使用的xshell中的rz命令来上传文件
在xshell中输入rz命令,看是否已经安装了lrzsz,如果没有安装则执行 yum -y install lrzsz命令进行安装。

安装成功后,输入rpm -qa lrzsz 命令确认是否正确安装

输入rz或者re -y,选择刚才下的压缩包


现在开始解压
tar -xvf node-v8.12.0-linux-x64.tar.xz

修改文件夹(目录)的名字
mv node-v8.12.0-linux-x64 nodejs

4、执行软连接
注意:确认一下nodejs下bin目录是否有node 和npm文件,如果有执行软连接,如果没有重新下载执行上边步骤

确认有node和npm文件了
执行软链接
ln -s /home/cxs/install/nodejs/bin/npm /usr/local/bin/ ln -s /home/cxs/install/nodejs/bin/node /usr/local/bin/
发现自己没有权限,然后找老大要来root账号

下面是root权限下执行

ok了,回到自己用户下

ok了
5、安装pm2,通过pm2启动node可以使关闭终端时node依然运行。

进入后端代码的跟目录,通过npm i 安装后端代码需要的库,启动node
pm2 start index.js

说明,没有配制到全局,虽然安装到全局,不知道为啥,linux下不像windows下能自动创造一个环境变量去实现我们的全局。所以我们需要创建一个linux下的软连接。
下面红框就是pm2的安装路径,连接到全局环境路径

下面出现的都是全局环境路径,选哪一个都可以,我选的是红框的全局环境变量/usr/local/bin

建立连接
ln -s /home/cxs/install/nodejs/bin/pm2 /usr/local/bin/
使用pm2 list验证是否成功建立连接
pm2 list

说明pm2全局安装成功,并且可以随处访问pm2,我试试我的账号是不是也可以使用pm2命令

出现这个,说明其他账号也可以全局都可以使用pm2
5、thinkjs项目,使用pm2 start pm2.json 来启动项目
切换到自己的账号上,需要全局变量时候没有权限的时候采用root账号
上传项目代码,使用xshell的rz -y来

执行
pm2 start pm2.json

出现上图应该就算启动起来了
但是我想看一下项目启动之后访问情况,怎么搞,这时候需要祭出nginx
6、nginx使用
已经部署完成,但是公网访问出现问题,出现502,

发现是nginx配置的问题,
方案一:把nginx的实际访问地址172.31.231.103:8362修改为127.0.0.1:8362
upstream weekly_node {
server 172.31.231.103:8362;
}
方案二:把项目node的启动主机host(127.0.0.1)修改为0.0.0.0

附上完整的nginx服务配置
user root;
worker_processes ; #error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info; #pid logs/nginx.pid; events {
worker_connections 1024;
} http {
include mime.types;
default_type application/octet-stream; sendfile on; keepalive_timeout 65; upstream weekly_node {
server 172.31.231.103:8362;
}
server {
listen 80;
server_name localhost;
charset utf-8; #weekly static
location /weekly/ {
#root /home/fastdfs/nginx/weekly/dist;
alias /home/fastdfs/nginx/weekly/dist/;
index index.html index.htm;
try_files $uri $uri/ /index.html last;
#root html;
#index index.html;
}
#nodejs服务方向代理
location /weekly_node/ {
proxy_pass http://weekly_node;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k; } } }
在Linux系统配置Nodejs环境的最简单步骤,部署多个thinkjs(nodejs)项目的更多相关文章
- [开发配置]Linux系统配置开发环境
deeplin系统配置开发环境 开发系统:deeplin 15.11 开发工具:Clion 2019.2 ; PyCharm 2019 ; Idea 2019; Android Studio 开源库 ...
- linux下expect环境安装以及简单脚本测试
expect是交互性很强的脚本语言,可以帮助运维人员实现批量管理成千上百台服务器操作,是一款很实用的批量部署工具!expect依赖于tcl,而linux系统里一般不自带安装tcl,所以需要手动安装 下 ...
- linux系统配置jdk环境
前提:linux服务器+JDK8-linux版本 工具:FileZilla+Xshell 将jdk上传到服务器的某个文件夹(本人是JDK) 进入该文件夹,输入tar xzvf jdk-8u77-li ...
- linux下mysql环境支持中文配置步骤
sql脚本执行前加上: CREATE DATABASE IF NOT EXISTS mydatabase DEFAULT CHARSET utf8 COLLATE UTF8_GENERAL_CI; u ...
- Linux下mpi环境配置与执行步骤(Ubuntu为例)
转载注明出处: http://blog.csdn.net/bendanban/article/details/9136755 以两台计算机为例,将这两台计算机应用于MPI运行环境. 第一步:在两台机器 ...
- nodejs环境下的socket通信
结构: socket是应用层和传输层的桥梁.(传输层之上的协议所涉及的数据都是在本机处理的,并没进入网络中) 涉及数据: socket所涉及的数据是报文,是明文. 作用: 建立长久链接,供网络上的两个 ...
- Linux及Windows系统配置JDK环境变量
1.Linux系统配置方法 记住,要下载JDK-8u121-linux-x64.tar.gz,而不是JRE-8u121-linux-x64.tar.gz,JDK中含很多开发者实用工具,比如javac. ...
- linux -- ubuntu搭建nodejs环境
需求:在web端做一个实时性功能比较强的模块, 客户端:用websocket 服务端:node.js node.js介绍:node.js天生就是一个高效的服务端语言,可以直接使用 javascript ...
- 在Linux系统安装Nodejs 最简单步骤
1.去官网下载和自己系统匹配的文件: 英文网址:https://nodejs.org/en/download/ 中文网址:http://nodejs.cn/download/ 通过 uname -a ...
随机推荐
- 手机端实现fullPage——全屏滚动效果
封装了一个小插件模拟fullPage的全屏滚动效果,比较简单. 特点: 1. 纯js实现,小巧轻便. 2. 兼容性好.苹果.安卓都没问题,暂时没遇到问题机型. 缺点: 1. 仅封装了基础功能,H ...
- Canvas的基本用法
canvas没有设置宽度和高度的时候,会初始化宽度:300像素和高度:150像素.可以使用CSS来定义大小,但在绘制时图像会伸缩以适应它的框架尺寸:如果CSS的尺寸与初始画布的比例不一致,它会出现扭曲 ...
- Spider与OpenPyXL的结合
OpenPyXL的API文档 1.OpenPyXL基础操作 引入Workbook这个类,然后调用 from openpyxl import Workbook wb = Workbook() 通过ope ...
- log.go
) //打开日志文件 以及文件操作权限 if err != nil { return err } // 解析日志记录的等级信息 level, err : ...
- loj6045 「雅礼集训 2017 Day8」价
我们考虑最小割. 我一开始觉得是裸的最小割,就直接S到每个减肥药连up+p[i]的边,减肥药到药材连inf边,药材到T连up,然后得到了40分的好成绩. 之后我发现这是一个假的最小割,最小割割的是代价 ...
- bzoj5253 [2018多省省队联测]制胡窜
后缀自动机挺好毒瘤的题. 我们考虑哪些切点是不合法的.肯定是所有的匹配串都被切了. 我们考虑第一个切口的位置. 当第一个切口在第一个出现位置前时,第二个切口必须切掉所有的串. 当第一个切口在$l_{i ...
- BZOJ_3223: Tyvj 1729 文艺平衡树 _splay
题意: 您需要写一种数据结构(可参考题目标题),来维护一个有序数列,其中需要提供以下操作:翻转一个区间,例如原有序序列是5 4 3 2 1,翻转区间是[2,4]的话,结果是5 2 3 4 1 分析: ...
- Caffe初学者第一部:Ubuntu14.04上安装caffe(CPU)+Python的详细过程 (亲测成功, 20180524更新)
前言: 最近在学习深度学习,最先要解决的当然是开源框架的环境安装了.之前一直在学习谷歌的Tensorflow开源框架,最近实验中需要跟别人的算法比较,下载的别人的代码很多都是Caffe的,所以想着搭建 ...
- Django文件上传(经典上传方式)
经典文件上传方式 创建URL from django.contrib import admin from django.urls import path from django.conf.urls i ...
- 深度学习之Batch Normalization
在机器学习领域中,有一个重要的假设:独立同分布假设,也就是假设训练数据和测试数据是满足相同分布的,否则在训练集上学习到的模型在测试集上的表现会比较差.而在深层神经网络的训练中,当中间神经层的前一层参数 ...