阿里云服务器+node+express+mysql,从0搭建node服务(1.5万字附源码地址)
相信很多前端和我一样,希望能拥有一台自己从0搭建的服务器,放一些自己写的轮子,起一个属于自己的node服务,把我的踩坑历史分享给大家,趁着周末,愉快的搞起来吧。
github地址:https://github.com/wuxiaohuaer/node-server
一、服务器和数据库
买服务器的作用有很多,比如自己写的一些开源的前端项目、自己的博客网站、以前写过的小项目、自己写的node服务等等,都可以放在服务器,方便交流,也方便自己查看。我买服务器最主要的目的是,想自己纯实战的用node开发一套后台接口。
现在市面上非常多的服务器,阿里云、华为云等等,我买的是阿里云的服务器,便宜、操作简单。
下面这个是阿里云的官网:
https://www.aliyun.com/?spm=5176.8097504.fszjobuve.2.2ec76fb5d5MVVI
直接选择云服务器ECS就可以了
如果你是新用户,最近应该有一个0.9折的活动,服务器、数据库、oss一共加起来92块钱,非常划算,直接下单就可。
二、配置服务器和数据库
配置服务器
1、进入控制台,创建实例
2、重置实例密码,这个地方重置的实例的密码,等连ssh的时候要用,得记下来
配置数据库
按照下面的图,一步一步操作非常轻松加愉快
三、远程连接服务器
进入到紧张刺激的远程连接服务器的环节,此处坑多且深:
要连接服务器必须要有一个连接工具,可以用xshell,也可以用FinalShell之类的,只是一个工具,都可以的,这里以xshell为例:
(一)新建一个ssh
新建一个ssh,主机就写给你发短信的那个IP,端口是22,密码就是刚才实例的密码
(二)安装node
网上安装node的教程非常多,我推荐一个比较快也比较稳定的
1、下载node
我在根目录新建了一个node文件夹,在它下面安装的node,命令:
直接运行:
2、解压node包
直接运行:
想换名字就换,不想换就算了,命令:
这个时候,你可以使用一下node命令,发现会报错
因为node命令和npm命令并不是全局命令,需要建立一个软连,命令:
3、设置全局变量
尝试把node配置到环境变量中 .bash_profile 中
这个时候node和npm就已经安装好了,输入node和npm命令都不会报错了
(三)安装nginx
1、安装依赖
2、下载安装包
3、解压安装包
4、编译
5、软连接
6、启动
安装完nginx就可以把写的前端页面部署到服务器了
四、配置nginx
1、随便找一个文件夹,放一个html文件
2、进入/user/local/nginx/conf,编辑nginx.conf文件
这个时候去浏览器打开ip:7070,哈哈哈,页面加载不出来。
然后折腾一下午,前面的流程全部走了一遍,还是打不开,原来是阿里云的端口没开,千万别忘了开端口,血的教训。
前端进阶路上node是躲不过去的技术栈,对于大部分前端来说,都或多或少的写过一些node代码或者demo,接下来就一步一步构建属于自己的node后台接口。
技术栈:node.js、express框架、mysql、pm2
写在前面
这篇博客适合有一定前端开发经验、学习过一点node.js的同学,因为项目当中使用了非常多的es6语法,所以最好对es6也有一定的了解。
五、express
1、新建一个js文件(index.js)
2、全局安装:
3、js文件引入express
4、新建一个get请求的接口
5、app.listen(8000)
浏览器输入http://localhost:8000/api/get,OK,一个node接口就开发完了。
完成这一步,恭喜你,你已经是一个全栈开发工程师了!
一切不从实战出发的的学习都是耍流氓,把刚开发完的接口连上数据库才能更逼真。
六、连接数据库
1、远程连接数据库
2、安装mysql
3、项目引入sql
4、创建一个sql实例,加入配置
5、接口里面使用数据库的数据
在浏览器中输入http://localhost:8000/api/get,拿到刚才新建表中的数据
数据库连接成功!
七、封装sql
项目中要使用express,肯定要使用路由进行多模块开发,每一个模块都创建一个sql实例,就太麻烦了,把sql抽离出来,进行一些封装,让代码看起来更加优雅。
1、新建一个config目录
2、basedata.js里面放数据库配置
3、sql.js里面用来暴露一个方法
3、修改index.js
刚才的index.js就可以直接引入封装好的sql了
sql就封装完成了
八、使用express路由
要开发整套的接口,不可能一个js文件上开发,要模块化开发就得使用router,express的路由非常方便。
1、新建一个routes文件夹
2、开发user.js
3、修改index.js
这样user.js模块的接口就挂在api下面,可以暴露出来请求了
九、mysql基本操作
因为我们用的是mysql当做数据库来开发,,虽然后面为了写的更快,会使用sequelize这些工具,但是要做一个全栈,sql语句肯定要掌握。
此处的语句示例来自21分钟mysql入门教程:
1、查询
select 列名称 from 表名称 where 条件
查询年龄在21岁以上的所有人信息: select * from students where age > 21
2、新增
insert [into] 表名 [(列名1, 列名2, 列名3, ...)] values (值1, 值2, 值3, ...);
insert into students values(NULL, "吴建运", "男", 20, "13811371377");
3、update
update 表名称 set 列名称=新值 where 更新条件;
将id为5的手机号改为默认的"-": update students set tel=default where id=5;
4、delete
delete from 表名称 where 删除条件;
删除id为2的行: delete from students where id=2;
5、添加列
alter table 表名 add 列名 列数据类型 [after 插入位置];
在表的最后追加列 address: alter table students add address char(60);
6、修改列
alter table 表名 change 列名称 列新名称 新数据类型;
将表 tel 列改名为 telphone: alter table students change tel telphone char(13) default "-";
7、删除列
alter table 表名 drop 列名称;
删除 birthday 列: alter table students drop birthday;
8、重命名表
alter table 表名 rename 新表名;
重命名 students 表为 workmates: alter table students rename workmates;
9、删除表
drop table 表名;
删除 workmates 表: drop table workmates;
10、删除整个数据库
drop database 数据库名
samp_db 数据库: drop database samp_db;
十、获取post请求参数的三种模式
(一)www-form-urlencoded
1、要做需要 body-parse 插件支持
2、在index.js中使用body-parse
3、在路由的接口内使用.body接收参数
(二)application/json
一般api喜欢此类提交方式,数据使用方法,节省带宽.
bodyParser 支持此类参数解析.
在index.js中使用
(三) form-data
这个很好理解,上传文件需要的请求头,需要使用另外一个插件connect-multiparty
1、安装connect-multiparty
2、项目中引用connect-multiparty
3、在路由的接口内使用.body接收参数
写在结尾
项目做到这儿,写几个增删改查的接口没啥问题了,但是如果想系统的搭建一个项目的架构,可能还需要很多的组件、工具
比如日志、实现ORM的sequelize等等
后面也会持续更新,接着一步一步完成自己的node项目
更多技术博客、心灵鸡汤,请关注微信公众号!
本文系作者 @河马 原创发布在河马博客站点。未经许可,禁止转载。
暂无评论数据