基于exporess搭建node服务及部署

·  阅读 2466
基于exporess搭建node服务及部署

服务器篇

由于服务器是没有桌面的,所以全程都是使用终端进行操作,我选择的是linux 二进制文件(x64) 的下载地址
复制代码

node 安装

# 打开终端 进入远程服务器 
ssh root@000.000.000.0
# 000.000.000.0 是指服务器的公网 IP
复制代码

如果你不知道服务器的初始密码,你可以选择重置密码,重置密码后需要重启才会生效。
复制代码
# 终端

# 进入根目录
cd /
# wget 是linux 系统下载命令 后面跟着地址链接
wget https://npm.taobao.org/mirrors/node/v14.5.0/node-v14.5.0-linux-x64.tar.xz

复制代码
# 终端

# 100% 表示文件已经下载完成,我们下载的是压缩文件,所以我们先解压
复制代码

# 终端

# 解压
tar -xvf node-v14.5.0-linux-x64.tar.xz
# 这个时候我们可以看目录结构
ls
复制代码

node 官网

node 已经安装完成接下来是环境变量配置
复制代码

环境变量配置

# 终端

# 还是在根目录下打开配置文件,我的配置文件是空白的,处于预览状态暂时还不能编辑
- vim .bash_profile
+ vim /ect/propsfile
复制代码

特别注意: 根据系统的不同,配置文件可能不一样

# 终端

i # 进入编辑状态新增环境变量

export NODE_HOME=/node-v14.4.0-linux-x64
export PATH=$PATH:$NODE_HOME/bin
export NODE_PATH=$NODE_HOME/lib/node_modules

复制代码

# 终端

# 取消编辑状态  按 ESC 取消键
# :wq 保存退出 :q 仅退出
:wq 
复制代码

# 终端

# 提交一下修改的文件才会生效
source .bash_profile

# 最后检查一下node 有没有安装成功
node -v 

# 别忘了把之前的压缩删除
rm -rf node-v14.5.0-linux-x64.tar.xz
复制代码

特别提醒


发现在根目录配置 .bash_profile 文件每次进入服务器 node 都失效,需要再次source .bash_profile 才会生效。

# 解决方案
将环境变量写入.bashrc文件中(系统级配置文件),先将我们之前配置根目录配置文件内容删除

# 打开.bashrc 
vim ~/.bashrc

# 保存退出
:wq

#提交.bashrc
source .bashrc
复制代码

淘宝 NPM 镜像

# 终端

npm install -g cnpm --registry=https://registry.npm.taobao.org

复制代码

git 安装

# 终端

# 安装
yum install curl-devel expat-devel gettext-devel \
  openssl-devel zlib-devel
  
复制代码

y  # 回车
复制代码

# 终端

# 检查一下有没有安装成功, 如果没报错就表示已经安装成功了
git help -a

复制代码
# 终端

# 卸载
yum remove git
复制代码

GIT 官网

PM2 安装

# 什么是PM2 
PM2是一个带有负载均衡功能的 Node 应用进程管理器,我们称之为进程守卫

# 这个安装就比较容易了使用npm安装就可以了
npm install pm2 -g
复制代码

PM2 官网

项目部署

基本环境已经安装完成,接下来就是项目部署

# 终端

# 新建文本夹
mkdir frame_sweet

# 进入
cd frame_sweet

# 初始化
npm init -y

# 安装依赖
cnpm install express -S

# 创建一个静态文件侠
mkdir views

# 创建一个html 文件
touch index.html

# 这个文件随便写点什么
....

# 创建主要程序及路由文件
touch app.js router.js

# app.js

const express = require('express')
const router = require('./router')
const path = require('path')
const app = express()

# 挂载静态文件,我的网页暂时放在 views 文件夹里面的
app.use('/', express.static(path.join(__dirname, './views')))

app.use(router)
app.listen(3002)

# router.js

const express = require('express')
const router = express.Router()
router.get('/', (req, res) => {
  res.render('index.html')
})
module.exports = router

复制代码

将项目存储到github 或 码云,方便服务器拿到

我在服务器的根目录新建了static 文件夹放置项目

复制代码
# 终端

cd static 

# 把项目克隆下来 git clone

cd demo
npm install

# 在服务器端先运行看看
node app.js

# 通过外网IP 加上端口访问项目看有没有被访问到
# 访问失败的大概的原因在,没有设置安全组,需要在阿里云控制台设置安全组
# 你访问服务器,所以配置的是入方向 
复制代码

重启 node 服务

到了这一步如果能通过IP:prot访问成功,node服务部署基本上告一段落了
我们使用的是ssh 操作服务器,启动node 项目,如果关闭了ssh那么node 服务就挂掉了,所以我们现在要使用PM2来守护进程,即使你关闭了ssh node 仍然会在后台运行

# pm2 启动服务
pm2 start app.js

# 也可以启用集群模式,只需传递-i 选项: 
# max表示PM2将自动检测可用CPU的数量并运行尽可能多的进程
pm2 start app.js -i max

# 关闭pm2 进程
pm2 stop name
复制代码

服务云防火墙

# 终端

# 查看防火墙状态
firewall-cmd    --state

# 启动防火墙
systemctl  start   firewalld.service

# 关闭防火墙
systemctl  stop   firewalld.service

# 重启防火墙
firewall-cmd --reload
复制代码

番外篇 -- 服务器及域名购买与解析

服务器购买

本人买的是阿里云的服务器,操作系统是 CentOS 7.4 64位
复制代码

域名购买

域名解析


使用的是阿里控制后,购买后需要域名解析及域名备案。

主机记录就是域名前缀,常见用法有:
www:解析后的域名为www.mytiw.com。
@:直接解析主域名 mytiw.com。
*:泛解析,匹配其他所有域名 *.mytiw.com。
mail:将域名解析为mail.mytiw.com,通常用于解析邮箱服务器。
二级域名:如:abc.mytiw.com,填写abc。
手机网站:如:m.mytiw.com,填写m。

记录值指的是服务器的公网IP

备案这一步我就是不展示了,直接使用阿里的备案就可以了

复制代码

到这里域名已经解析成功了
作为一个前端记录第一次部署node服务的步骤,欢迎大神指导 ^_^
复制代码
分类:
前端
标签:
收藏成功!
已添加到「」, 点击更改