您好,欢迎访问上海聚搜信息技术有限公司官方网站!
24小时咨询热线:4000-747-360

阿里云代理商:阿里云ECS服务器项目部署流程是怎样的?

时间:2022-11-25 22:50:15 点击:

  阿里云代理商:阿里云ECS服务器项目部署流程是怎样的?

  【聚搜云】(www.4526.cn)是上海聚搜信息技术有限公司旗下品牌,坐落于魔都上海,服务于全球、2019年成为阿里云代理商生态合作伙伴。与阿里云代理商、腾讯云、华为云、西部数码、美橙互联、AWS亚马逊云国际站代理商、聚搜云,长期战略合作的计划!阿里云国际站代理商专业的云服务商!

  参照网上的例子,以一个用户登录的模拟场景开发三个接口,前端调用接口成功即可 接口分别为:

  获取所有用户列表

  根据identity删除用户信息

  创建新的用户

  后端使用node + express开发,数据库使用mysql,前端使用vue框架

  建立数据库

  本地下载安装mysql,同时安装mysql workbench,可视化管理数据库

  打开mysql workbench,建立本地连接,一般默认首页会出现本地连接,直接点击会要求输入密码即可连接,密码在安装mysql的时候应该是有要求设置的。没有本地连接的话点击新建按钮,输入hostname,username(一般默认是root),port(默认是3306),点击ok,首页列表中便会出现刚新建的本地连接,点击后输入密码即可连接

  3. 进入本地连接后默认可以看到一个名称为sys的数据库,这里我将所有的默认数据库全都清掉(右键-"drop schema"),新建一个名为users的数据库(schema),默认会有Tables、Views、Stored Procedures、Functions四个子项,选中Tables,右键-"create table"创建新的表user

  也可以选择create table like,内置三种类型的表timestamps,user,category,这里选择user类型,则界面如图

  默认有username,email,password,create_time四个属性,username和password不为空(not null),一般需要设置一个主键(PK),这里新增一个属性identity,dataType设为INT,并设为自增(AI),新建数据时自增的属性不用赋值,会自动加1填充(只有INT类型才能勾选自增)

  4. 表新建完成后,要增加数据可以选中该表,右键-"select rows - limit 1000",右侧可以看到表内容,在表中NULL处填入对应数据即可,至此,数据库相关准备已完成

  创建node项目

  全局安装express

  express 项目名(此处为login)

  2. 初始化项目

  进入要保存项目的目录文件夹,

  express 项目名(此处为login)

  生成的目录结构如下:

  目录中/bin/www为入口文件,注意此时虽然package.json中有许多依赖,但它们尚未安装,执行

  npm install

  3. 项目中安装mysql

  npm install --save mysql

  4. 连接mysql数据

  在项目根目录下新建conf/mysqlConf.js,封装mysql配置及连接代码,连接时通过database字段设置默认的数据库为users,当然也可以不设置

  const mysql = require('mysql')

  const mysqlConfig = {

  connectionLimit: 10,

  host: '121.43.33.208',

  user: 'root',

  password: '19931016dean',

  database: 'users'

  }

  const pool = mysql.createPool(mysqlConfig)

  module.exports = {

  pool

  }

  5. 管理mysql数据

  新建文件夹/models/,该文件夹专门处理mysql数据库,新建文件夹users,对应users数据库

  新建配置文件usersSql.js,用于封装mysql操作语句

  module.exports = {

  addUser: 'insert into users.user (username, cipher, email) values (?, ?, ?)',

  deleteUser: 'delete from users.user where identity = ?',

  queryUser: 'select * from users.user where identity = ?',

  queryUsers: 'select * from users.user'

  }

  新建文件users.js,封装操作mysql数据库的函数,其分别是与上述操作语句对应的

  const { pool } = require('../../conf/mysqlConf.js')

  const {

  addUser,

  deleteUser,

  queryUser,

  queryUsers,

  } = require('./usersSql.js')

  module.exports = {

  add: function (user, callback) {

  const sqlParams = [

  user.username || '',

  user.cipher || '',

  user.email || '',

  ]

  pool.query(addUser, sqlParams, function (error, result) {

  if (error) {

  throw error

  }

  callback(result)

  })

  },

  deleted: function (params, callback) {

  const { identity } = params

  const sqlParams = [identity]

  pool.query(deleteUser, sqlParams, function (error, result) {

  if (error) {

  throw error

  }

  callback(result)

  })

  },

  query: function (params, callback) {

  const { identity } = params

  const sqlParams = [identity]

  pool.query(queryUser, sqlParams, function (error, result) {

  if (error) {

  throw error

  }

  callback(result[0])

  })

  },

  queryAll: function (callback) {

  pool.query(queryUsers, null, function (error, result) {

  if (error) {

  throw error

  }

  callback(result)

  })

  }

  }

  6. 封装express路由代码

  在routes文件夹下新建user.js,代码如下:

  const express = require('express')

  const router = express.Router()

  const { add, deleted, query, queryAll } = require('../models/users/users.js')

  router.get('/', function(req, res, next) {

  res.send('users', {

  title: 'usersApi',

  apiList: [

  {

  url: 'users/adduser',

  method: 'post',

  params: {

  username: '用户名称',

  cipher: '密码',

  email: '邮箱',

  },

  result: {

  success: true,

  data: '',

  },

  },

  {

  url: 'users/deleteuser',

  method: 'get',

  params: {

  identity: '用户identity',

  },

  result: {

  success: true,

  data: '',

  },

  },

  {

  url: 'users/queryuser',

  method: 'get',

  params: {

  identity: '用户identity',

  },

  result: {

  success: true,

  data: {

  identity: '53554645',

  username: '用户名称',

  cipher: '密码',

  email: '邮箱',

  },

  }

  }

  ]

  })

  })

  router.post('/adduser', function (req, res, next) {

  const urlParams = req.body

  add(urlParams, function (result) {

  res.json(result)

  })

  })

  router.get('/deleteuser', function (req, res, next) {

  const urlParams = {

  identity: req.query.identity

  }

  deleted(urlParams, function (result) {

  res.json(result)

  })

  })

  router.get('/queryuser', function (req, res, next) {

  const urlParams = {

  identity: req.query.identity

  }

  query(urlParams, function (result) {

  res.json(result)

  })

  })

  router.get('/queryusers', function (req, res, next) {

  queryAll(function (result) {

  res.json(result)

  })

  })

  module.exports = router

  此处定义了不同接口地址对应的处理方法,如'/queryusers'请求时,使用queryAll方法,即对应的查询数据库users所有数据的操作

  7. 启动服务

  npm start

  部署

  准备工作

  之前已经购买阿里云服务器并安装了nginx,该流程可前往阿里云服务器使用流程查看

  在阿里云服务器上安装node

  打开Xshell,连接到阿里云服务器,下载node压缩包,具体node版本可以到官网去查找

  [root@iZbp132ol31nc3v7nvumh7Z ~]# wget https://nodejs.org/dist/v16.13.0/node-v16.13.0-linux-x64.tar.xz

  解压

  [root@iZbp132ol31nc3v7nvumh7Z ~]# tar xf node-v16.13.0-linux-x64.tar.xz

  建立软连接,软连接的作用类似于快捷方式,可以为某一个文件在另外一个位置建立一个不同的链接,把解 压的node连接到/usr/local/bin/node,相当于可以在/usr/local/bin/node访问到node,这样便可以全局使用node命令

  [root@iZbp132ol31nc3v7nvumh7Z ~]# ln -s /root/node-v16.13.0-linux-x64/bin/node /usr/local/bin/node

  [root@iZbp132ol31nc3v7nvumh7Z ~]# ln -s /root/node-v16.13.0-linux-x64/bin/npm /usr/local/bin/npm

  2. 在阿里云服务器上安装mysql

  [root@iZbp132ol31nc3v7nvumh7Z ~]# wget https://repo.mysql.com//mysql80-community-release-sl15.rpm

  [root@iZbp132ol31nc3v7nvumh7Z ~]# rpm -ivh mysql80-community-release-sl15.rpm

  [root@iZbp132ol31nc3v7nvumh7Z ~]# yum install mysql-server

  [root@iZbp132ol31nc3v7nvumh7Z ~]# yum install mysql-devel

  安装完成后需输入用户名和密码登录

  修改密码

  [root@iZbp132ol31nc3v7nvumh7Z ~]# update user set password=PASSWORD('123456') where user='root'

  登录

  mysql -uroot -p

  2. 将本地数据库的数据复制到阿里云服务器的数据库中

  打开mysql workbench,新建连接,填入阿里云服务器公网ip和其mysql用户密码进行连接,成功后将本地数据库导出,如下

  切换到阿里云服务器的连接,将刚才本地导出的sql文件导入,如下

  刷新可以看到阿里云服务器数据库中已有了本地数据

  3. 将node项目和前端代码上传到阿里云服务器

  使用Xftp上传即可

  4. 开启node服务

  进入node项目地址,npm start即可开启服务

  [root@iZbp132ol31nc3v7nvumh7Z ~]# cd /root/APPs/login-server

  [root@iZbp132ol31nc3v7nvumh7Z ~]# npm start

  由于本项目node服务监听的端口是3000,mysql默认端口是3306,因此还需到阿里云服务器安全组开启这两个端口

  5. 访问前端页面

  打开浏览器,输入阿里云服务器公网地址 + 项目路径,nginx需事先配好根目录访问路径,可以看到接口请求也是成功的

  6. pm2工具

  整个项目部署完成,访问成功,但这种方式开启node服务后不可关闭终端,也没法在终端中进行其他操作,每次访问前端页面都必须先开启node服务。要令服务长期开启,还需安装其他工具 此例安装pm2

  [root@iZbp132ol31nc3v7nvumh7Z ~]# npm install -g pm2

  [root@iZbp132ol31nc3v7nvumh7Z ~]# ln -s /root/node-v16.13.0-linux-x64/bin/pm2 /usr/local/bin/

  然后通过以下命令开启node服务即可

  [root@iZbp132ol31nc3v7nvumh7Z ~]# pm2 start ./bin/www

标签

收缩
  • 电话咨询

  • 4000-747-360
微信咨询 获取代理价(更低折扣)
更低报价 更低折扣 代金券申请
咨询热线: 15026612550