xshell+阿里云linux+vue+mysql开发练习

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 这篇文章记录了我在阿里云进行Linux基础学习的过程,以及根据阿里云进行一些简单的开发实践。


开发记录

XShell连接阿里云Linux操作系统

  1. 新建会话
    网络异常,图片无法展示
    |

    网络异常,图片无法展示
    |

  2. 双击连接
    网络异常,图片无法展示
    |

安装MySQL

  1. 在root目录下创建temp目录用于存放压缩包
    mkdir temp
  2. 移动到temp下
    cd temp
  3. 安装lresz
    yum install lrzsz -y
  4. 将下载好的压缩包传入temp
    rz
  5. 解压
    tar -zxf mysql-5.7.27-linux-glibc2.12-x86_64.tar.gz
  6. 移动到 /usr/local/mysql
    cp mysql-5.7.27-linux-glibc2.12-x86_64 /usr/local/mysql -r
  7. 创建mysql用户组
    groupadd mysql
  8. 创建mysql用户
    useradd -r -g mysql mysql
  9. 在mysql目录下授权用户组和用户
    cd /usr/local/mysql
    chgrp -R mysql . //最后的 . 是指对当前目录授权
    chown -R mysql .
  10. 初始化
    ./mysqld --initialize --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/ --lc_messages_dir=/usr/local/mysql/share --lc_messages=en_US
    网络异常,图片无法展示
    |

    注意: 一定要保留初始密码用于第一次登录
  11. 复制启动文件到服务文件夹(support-files)
    cp mysql.server /etc/init.d/mysql
    cp mysql.server /etc/init.d/mysql
  12. 启动mysql
    service mysql start
    设置开机自启动: systemctl enable mysql
  13. 登录mysql
    mysql -u root -p//输入刚才初始化时的密码
  14. 进入mysql后设置密码
    set password=password("密码");
  15. 关闭防火墙
    service firewalld stop
  16. 设置可通过任意方式访问
    GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '密码' WITH GRANT OPTION;
  17. navicat配置连接(连接失败)
  18. 这里跟虚拟机不一样,需要在阿里云控制台配置安全组
    网络异常,图片无法展示
    |

选择快速添加,选择3306和22进行添加

  1. 再次进行navicat连接

到这里数据库远程连接就完成了。

Vue CLI

快速开发

只需要一个App.vue,对单个文件实现快速开发。

vue servevue build

vue + mysql

  1. 根据下方vue.sql文件写入数据

启动Linux端后开启以下端口:

22:服务端口号

8080:服务器端口号

3306:数据库端口号

3000:服务器端口号

安装异步加载依赖:npm install vue-resource --save

安装中间件依赖:cnpm install express mysql body-parser

将数据库文件写入mysql数据库:

 

初始化

配置 db.js :数据库配置

// 数据库配置文件

module.exports= {

   mysql:{

       host:'192.168.***.***',

       user:'root',

       password:'******',

       database:'vue',

       port:'3306'

   }

}

数据库连接实现增删改查

在接口文件 /api/userApi.js 中设置增删改查接口.

varmodels=require('../db');

 

varexpress=require('express');

 

varrouter=express.Router();

 

varmysql=require('mysql');

 

 

// 连接数据库

varconn=mysql.createConnection(models.mysql);

conn.connect();

 

varjsonWrite=function(res, ret) {

 if(typeofret==='undefined') {

   res.json({

     code: '1',

     msg: '操作失败'

   });

 } else {

   res.json(ret);

 }

};

 

// 增加用户接口

router.post('/addUser', (req, res) => {

 varparams=req.body;

 varsql='insert into user(username, password) values (?, ?)';

 console.log(params);

 conn.query(sql, [params.username, params.password], function(err, result) {

   if (err) {

     console.log(err);

   }

   if (result) {

     jsonWrite(res, result);

   }

 })

});

 

// 查询用户接口

router.post('/queryUser', (req, res) => {

 varparams=req.body;

 varsql=" select * from user where username = '"+params.username+"'";

 console.log(params);

 conn.query(sql, [params.username], function(err, result) {

   if (err) {

     console.log(err);

   }

   if (result) {

     console.log(res);

     jsonWrite(res, result);

   }

 })

});

 

// 修改用户接口

router.post('/updateUser', (req, res) => {

 varparams=req.body;

 varsql=" update user set password = '"+params.password+"' where username = '"+params.username+"'";

 console.log(params);

 conn.query(sql, [params.username], function(err, result) {

   if (err) {

     console.log(err);

   }

   if (result) {

     console.log(res);

     jsonWrite(res, result);

   }

 })

});

 

// 删除用户接口

router.post('/deleteUser', (req, res) => {

 varparams=req.body;

 varsql=" delete from user where username = '"+params.username+"'";

 console.log(params);

 conn.query(sql, [params.username], function(err, result) {

   if (err) {

     console.log(err);

   }

   if (result) {

     console.log(res);

     jsonWrite(res, result);

   }

 })

});

 

module.exports=router;

 

 

后端服务器

// node 后端服务器

 

constuserApi=require('./api/userApi');//接口

constfs=require('fs');

constpath=require('path');//路径

constbodyParser=require('body-parser');//中间件

constexpress=require('express');

constapp=express();

app.use(bodyParser.json());//启用中间件

app.use(bodyParser.urlencoded({extended: false}));

 

// 后端api路由

app.use('/api/user', userApi);

 

// 监听端口

app.listen(3000);

 

console.log('success listen at port:3000......');

 

 

根据四表修改查找功能

// 数据库接口, 实现数据增删改查

varmodels=require("../db");

varexpress=require('express');

varrouter=express.Router();

varmysql=require('mysql');

 

varconn=mysql.createConnection(models.mysql);

conn.connect();

 

varjsonWrite=function(res,ret){

   if(typeofret=='undefined'){

       res.json({

           code:'1',

           msg:"操作失败"

       });

   }else{

       res.json(ret);

   }

}

 

// 查询

router.post('/queryMsg',(req,res)=>{

   varparams=req.body;

   console.log(params)

   varsql="SELECT * FROM "+params.table;

   vardatas=[];

   console.log(params);

   // console.log(sql)

   conn.query(sql,function(err,data,result){

       if(err){    

           console.log("ERR:"+err);

           return;

       }

       console.log(data);

       res.json(data)

       returndata;

   })

});

 

module.exports=router;

//获取数据库列表信息并更新

<script>

exportdefault {

 name: 'myHello',

 data () {

   return {

     msg:[]

   }

 },

 created(){

     this.queryMsg()

 },

 methods:{

     queryMsg(){

         letthat=this;

         this.$http.post('/api/user/queryMsg',{table:"学校新闻数据"},{})

         .then((response)=>{

           console.log(response);

           that.msg=response.body;

           

         })

     }

 }

}

</script>

问题

1.vue init webpack process无限download template问题

解决办法:

webpack版本过低,需要重装webpack

npm uninstall -g webapck

npm install -g webapck

2.eslint报错

网络异常,图片无法展示
|

解决办法:

/build/webpack.base.conf.js 中找到 createLintingRule 将内容注释掉

constcreateLintingRule= () => ({

 // test: /\.(js|vue)$/,

 // loader: 'eslint-loader',

 // enforce: 'pre',

 // include: [resolve('src'), resolve('test')],

 // options: {

 //   formatter: require('eslint-friendly-formatter'),

 //   emitWarning: !config.dev.showEslintErrorsInOverlay

 // }

})

3.vue 界面加载同步渲染 created()

<script>

exportdefault {

 name: 'myHello',

 data () {

   return {

     msg:[]

   }

 },

 created(){

     this.queryMsg()

 },

 methods:{

     queryMsg(){

         letthat=this;

         this.$http.post('/api/user/queryMsg',{table:"学校新闻数据"},{})

         .then((response)=>{

           console.log(response);

           that.msg=response.body;

           

         })

     }

 }

}

</script>

4.自定义表名

created(){

     this.queryMsg({str:"专家介绍数据"})

 },

 methods:{

     queryMsg(req){

         letthat=this;

         this.$http.post('/api/user/queryMsg',{table:req.str},{})

         .then((response)=>{

           console.log(response);

           that.msg=response.body;

           

         })

     }

 }

Uncaught ReferenceError: expertsIntro is not defined


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
22天前
|
JavaScript 前端开发 开发者
哇塞!Vue.js 与 Web Components 携手,掀起前端组件复用风暴,震撼你的开发世界!
【8月更文挑战第30天】这段内容介绍了Vue.js和Web Components在前端开发中的优势及二者结合的可能性。Vue.js提供高效简洁的组件化开发,单个组件包含模板、脚本和样式,方便构建复杂用户界面。Web Components作为新兴技术标准,利用自定义元素、Shadow DOM等技术创建封装性强的自定义HTML元素,实现跨框架复用。结合二者,不仅增强了Web Components的逻辑和交互功能,还实现了Vue.js组件在不同框架中的复用,提高了开发效率和可维护性。未来前端开发中,这种结合将大有可为。
65 0
|
18天前
|
NoSQL 关系型数据库 Redis
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo
mall在linux环境下的部署(基于Docker容器),docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongodb、minio详细教程,拉取镜像、运行容器
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo
|
27天前
|
关系型数据库 MySQL Linux
【Azure 应用服务】在创建Web App Service的时候,选Linux系统后无法使用Mysql in App
【Azure 应用服务】在创建Web App Service的时候,选Linux系统后无法使用Mysql in App
【Azure 应用服务】在创建Web App Service的时候,选Linux系统后无法使用Mysql in App
|
28天前
|
关系型数据库 MySQL Linux
Linux环境安装MySQL8.0.36使用rpm包安装,安装顺序是什么?
【8月更文挑战第23天】Linux环境安装MySQL8.0.36使用rpm包安装,安装顺序是什么?
136 1
|
29天前
|
SQL 关系型数据库 MySQL
在Linux中,mysql 数据备份工具有哪些?
在Linux中,mysql 数据备份工具有哪些?
|
29天前
|
安全 关系型数据库 MySQL
在Linux中,如何重置 mysql root 密码?
在Linux中,如何重置 mysql root 密码?
|
21天前
|
SQL 关系型数据库 MySQL
SQL Server、MySQL、PostgreSQL:主流数据库SQL语法异同比较——深入探讨数据类型、分页查询、表创建与数据插入、函数和索引等关键语法差异,为跨数据库开发提供实用指导
【8月更文挑战第31天】SQL Server、MySQL和PostgreSQL是当今最流行的关系型数据库管理系统,均使用SQL作为查询语言,但在语法和功能实现上存在差异。本文将比较它们在数据类型、分页查询、创建和插入数据以及函数和索引等方面的异同,帮助开发者更好地理解和使用这些数据库。尽管它们共用SQL语言,但每个系统都有独特的语法规则,了解这些差异有助于提升开发效率和项目成功率。
92 0
|
22天前
|
JavaScript 开发者 UED
Vue.js 错误处理与调试:跟上技术潮流,摆脱开发困扰,成为代码大神不是梦!
【8月更文挑战第30天】在 Vue.js 开发中,错误处理与调试至关重要。本文将对比 Vue 的全局错误捕获机制 `Vue.config.errorHandler` 和组件内 `watch` 监听数据变化的方式,并介绍 Vue 开发者工具、控制台打印 (`console.log`) 以及代码断点 (`debugger`) 等调试方法。此外,还将探讨如何通过自定义错误页面提升用户体验。通过这些技巧的对比,帮助开发者灵活选择适合的策略,确保应用稳定性和开发效率。
39 0
|
22天前
|
JavaScript 前端开发 API
全栈开发革命来临!Vue.js与Node.js联手,打造前后端无缝对接的奇迹之作!
【8月更文挑战第30天】在Web开发领域,前后端分离与协作至关重要。Vue.js以其轻量级和易用性深受前端开发者喜爱,而Node.js则以高性能和事件驱动特性在后端领域崭露头角。二者结合开启了全栈开发新篇章,通过RESTful API或GraphQL实现高效稳定通信。本文以示例说明如何使用Vue.js和Node.js构建全栈应用,从前端Vue组件到后端Express服务器,展示了数据获取与展示的全过程。这种组合提供了一种高效简洁的全栈开发方案,使开发者能更专注于业务逻辑实现。
45 0
|
22天前
|
JavaScript 前端开发 UED
揭秘Vue.js高效开发:Vue Router如何让单页面应用路由管理变得如此简单?
【8月更文挑战第30天】随着Web应用复杂性的增加,单页面应用(SPA)因出色的用户体验和高效的页面加载性能而备受青睐。Vue.js凭借简洁的语法和灵活的组件系统成为构建SPA的热门选择,其官方路由管理器Vue Router则简化了路由管理。本文通过实战示例介绍如何利用Vue Router实现高效的SPA路由管理,包括命名路由、动态路由及其核心优势。
12 0