IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> Ubuntu系统部署Node.js接口项目 -> 正文阅读

[系统运维]Ubuntu系统部署Node.js接口项目

环境说明:我的系统是Ubuntu 18.04 64位,CPU&内存是1核2 GiB

准备工作

1、下载 node 源文件,我这里安装的版本是 v16.13.2。终端ssh连接上自己的服务器,执行下面的命令:

curl -sL https://deb.nodesource.com/setup_16.x | sudo -E bash - 

2、安装node.js 和淘宝镜像

sudo apt-get install -y nodejs

# 查看node版本
node -v    # v16.13.2

# 查看 npm 版本
npm -v    # 8.1.2

# 安装cnpm淘宝镜像
npm install -g cnpm --registry=https://registry.npm.taobao.org

3、安装 NGINX

sudo apt-get install nginx

# 安装完成,查看 nginx 版本
nginx -v    # nginx version: nginx/1.14.0 (Ubuntu)

4、安装MySQL客户端,配置密码步骤省略,自行完成

apt-get install mysql-server mysql-client

我这里的 MySQL 安装的版本是5.7

开放端口和配置域名

1、由于我的域名和服务器都是阿里云的,登入阿里云,找到网络与安全–安全组–配置规则–手动添加,
填写端口范围为3000/3000,授权对象为0.0.0.0/0

2、解析域名,此操作自行完成。

上传数据库

1、先将本地数据库导出sql文件保存至桌面,数据库名先用xxx_development

2、修改服务器上项目的数据库配置文件config.json,配置数据库的账号密码

{
  "development": {
    "username": "你的数据库账号",
    "password": "你的数据库密码",
    "database": "xxx_development",
    "host": "127.0.0.1",
    "dialect": "mysql",
    "timezone": "+08:00"
  },
  "test": {
    "username": "root",
    "password": null,
    "database": "database_test",
    "host": "127.0.0.1",
    "dialect": "mysql",
    "timezone": "+08:00"
  },
  "production": {
    "username": "你的数据库账号",
    "password": "你的数据库密码",
    "database": "xxx_development",
    "host": "127.0.0.1",
    "dialect": "mysql",
    "timezone": "+08:00"
  }
}

上传项目

1、本地开发好的接口项目除去node_modules文件夹,其余文件全部打包Zip格式,
通过ftp软件上传至项目目录,我这里存放项目目录的文件夹是/var/www

2、进入/var/www 执行下面的命令进行解压

unzip xxx.zip   # xxx代表项目名称

注意:上传时不要忘记了.env文件

3、进入项目目录,安装依赖

cd /var/www/xxx

cnpm i

4、测试接口访问

服务器上 `cd` 到项目目录,执行 `npm start`

打开`Google`浏览器,访问`http://ip.xxx.xxx.xx:3000`

确认能访问到数据即可,然后停止npm start服务。

安装 pm2

pm2是一个进程管理工具,可以用它来管理你的node进程,并查看node进程的状态,当然也支持性能监控,进程守护,负载均衡等功能。

pm2需要全局安装

cnpm i -g pm2

# 使用 `pm2` 启动
pm2 start ./bin/www

# `pm2`常用命令
pm2 status              # 查看状态
pm2 stop ./bin/www      # 停止服务
pm2 restart ./bin/www   # 重启服务

尝试重新访问接口是否正常。

生成配置文件

1、创建配置文件

# 进入项目目录
cd /var/www/xxx

# 生成配置文件
pm2 ecosystem  # 执行完成,会在项目根目录中生成`ecosystem.config.js`文件

# 接着添加如下代码

module.exports = {
  apps : [{
    name: "xxx",  # xxx是项目名称,可自行修改
    script: "./bin/www",
    env: {
      NODE_ENV: "development",
    },
    env_production: {
      NODE_ENV: "production",
    }
  }]
}

2、启动配置,以上步骤完成后,通过执行下面的命令启动配置

pm2 start ecosystem.config.js --env production

将项目代码中的数据库和客户端中的数据库都改名为xxx_production

配置站点

1、创建配置文件

cd /etc/nginx/sites-available

cp default xxx

vim xxx

# 修改配置如下(http)

server
{
    listen 80;
    server_name xxx.xxx.com;  # 解析的域名
    
    location / {
      proxy_pass http://127.0.0.1:3000;  # 配置反向代理
    }
}

# 修改配置如下(https),记得要上传自己的证书

server {
  listen 80;
  server_name xxx.xxx.com;
  return 301 https://xxx.xxx.com$request_uri;
}

server{
    listen 443 ssl;
    server_name xxx.xxx.com;
    ssl_certificate /opt/nginx/xxx.xxx.com.pem;
    ssl_certificate_key /root/certs/xxx.xxx.com.key;
    ssl_session_cache shared:SSL:1m;
    ssl_session_timeout 5m;
    ssl_ciphers HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers on;
    location /{
            proxy_pass http://localhost:3000;
            proxy_set_header Host $host;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            proxy_read_timeout 86400;
    }
}

2、使配置文件生效

ln -s /etc/nginx/sites-available/xxx /etc/nginx/sites-enabled/xxx

# 检查 nginx
nginx -t
# 重启 nginx
service nginx restart

pm2 有几个命令

pm2 status

# xxx是服务名,服务名在pm2 status里能看到
pm2 start xxx
pm2 stop xxx
pm2 restart xxx

在这里插入图片描述

部署后台

本次项目是基于 vue 写的一个后台管理系统,做完后部署上线。

1、本地打包。进入项目目录,执行 yarn build ,注意:这个命令不是固定的,要看 package.json 里面的 scripts 。打包完成,会出现 dist 文件夹,压缩成 zip 文件。

2、登录自己的服务器,通过 ftp 软件上传至服务器中,然后配置 nginx

server {
        listen 80;

        root /var/www/admin;

        index index.html index.htm index.nginx-debian.html;

        server_name admin.xxx.com;

        location / {
                try_files $uri $uri/ /index.html;
        }
}

3、做软链,重启 nginx
4、开启 gzip,修改 nginx 配置文件:

sudo vim /etc/nginx/nginx.conf

找到以下内容后,取消注释

##
# Gzip Settings
##

gzip on;
gzip_disable "msie6";
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_buffers 16 8k;
gzip_http_version 1.1;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

重启 nginx

sudo service nginx restart

5、进入项目目录,解压 zip 文件,完成

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-03-12 18:00:11  更:2022-03-12 18:03:11 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 1:30:48-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码