nodejs web项目-阿里云部署步骤

本文详细描述了作者如何在阿里云ECS上部署一个基于Node.js和Mariadb的会员管理系统,包括服务器配置、数据库安装与权限设置、Node.js的安装与配置,以及使用Koa框架进行Web开发的过程。
摘要由CSDN通过智能技术生成

给别朋友开法了一个精简的会员管理系统, 因为项目小自己想尝鲜,所以采用的是

Nodejs + mariadb。代码放在阿里的云效平台方便部署

首先在阿里云花99元 买下1台ECS 云服务器,通过页面远程登录到主机,我在/root目录下操做

--安装mariadb, mysql好像要收费
   yum install mariadb-server
--查看mariadb安装状态,并启动
  systemctl status mariadb, systemctl start mariadb
--初始化数据库,按提示输入,要先启动数据库
   mysql_secure_installation

#开启远程访问
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'XXXXX' WITH GRANT OPTION;
#开启本机访问
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY 'XXXXX';
flush privileges;

--安装nodejs
从网络下载:wget https://nodejs.org/dist/v18.20.1/node-v18.20.1-linux-x64.tar.xz

解压:tar -xvf node-v18.20.1-linux-x64.tar.xz

做软链接:

ln -s /root/node-v18.20.1-linux-x64/bin/node /usr/bin/node
ln -s /root/node-v18.20.1-linux-x64/bin/npm /usr/bin/npm

在/etc/profile文件中,新增以下两行
export NODE_HOME=/root/node-v18.20.1-linux-x64/bin/
export PATH=$PATH:$NODE_HOME:/usr/bin/

使变量文件生效
source /etc/profile

--安装git,并下载代码
yum install -y git
git clone https://codeup.aliyun.com/abc/你的项目.git

------------------------项目的配置及启动

在src/下创建 env_conf.js 并配置对应参数
npm install        //安装所有依赖
npm run prod  //运行

 
-- 开启端口访问,在阿里云ECS控制台配置安全组开放要访问的端口,如果不能访问看下防火墙情况(默认是关闭的不用管)

数据库,我只有当业务需要改数据或手动备份的时候,才会勾线允许外网访问。

--数据库的客户端工具好多都需要收费, 我用的HeidiSQL, 免费且操做风格跟其他工具大致类同

另外谈一下心得,如果项目真的很小随便弄弄用nodejs没问题,大的建议还是老老实实java。

web框架,我用的是koa,这个可以支持同步方式,否则nodejs的异步回调机制写起来真难受

// GET 查询单个用户
router.get('/users/:id', async (ctx) => {
    let queryResult = await getUserById(ctx.params.id, ctx.session.tenant_id)
    ctx.body = {
        errorCode: 'OK',
        data: queryResult
    }
})

数据库我用的是mysql2,多个db操做,需要自己取封装事务

const mysql = require('mysql2/promise');
const envConfig = require('../env_conf')

const pool = mysql.createPool({
  host: envConfig.mysqlHost,
  user: envConfig.mysqlUser,
  password: envConfig.mysqlPwd,
  database: envConfig.mysqlDb,
  timezone: 'Asia/Shanghai',
  waitForConnections: false
});
// 可以执行单个sql
const executeSQL =(sql, params) => {
  // 获取连接
  const connection = pool.getConnection();

  return new Promise(function (resolve, reject) {
    // 执行SQL语句
    try {
      connection.query(sql, params, (err, results) => {
        if (err) {
          reject(err)
        } else {
          resolve(results)
        }
      })
    } catch (e) {
      reject(e)
    } finally {
      connection.release() // 关闭链接
    }
  })
}
// 可以执行多个sql,开启事务
const executeTransactionSQL = async (sqlparamsList) => {
    // 获取连接
    const connection = await pool.getConnection();
    try {
        // 开始事务
        await connection.beginTransaction();
        for(var i=0; i< sqlparamsList.length; i++){
          await connection.query(sqlparamsList[i].sql, sqlparamsList[i].params)
        }    
        // 提交事务
        await connection.commit();
        return "ok"
    } catch (error) {
        // 回滚事务
        await connection.rollback();
        console.log(error);
        return "error"
    } finally {
        // 释放连接
        connection.release();
    }
}

module.exports = { executeSQL, executeTransactionSQL }

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值