自我介绍
本人就读于西北民族大学软件工程专业,目前上大三,在大二的时候初步入门了Web开发领域。刚开始是因为实习需要尽快学习相关知识,所以我自学了Node.js、TypeScript等语言,准备搭建一个后端微服务来练练手。后来在知乎上了解到阿里云对学生群体有优惠,推出了开发者成长计划中有学生的计划内容,所以我就了解了这个飞天加速计划·高校学生在家实践活动。
刚开始2周的免费体验,上手部署服务器后感觉不错,故写成此文,记载自己在使用阿里云学生机搭建微服务和博客的使用体验。
注:我的ECS环境:乌兰察布站点 Ubuntu 22.04
上手ECS服务器
拿到服务器后,首先第一件事就是安装相关软件,配置相关环境。由于我是学Web开发的,Node.js是一款不错的Web开发技术栈,所以我在机器上安装了如下:
- Node.js 18.12
- NPM 8
- MySQL 5.7(数据库,不是很推荐MySQL 8, 因为MySQL 8的新版Authorication机制有坑,网上资料较少)
- Python 3(做工具脚本)
- Git(做源码管理工具)
- Nginx(做Web服务代理)
具体安装可以用apt
、snap
等包管理器。
安装时,推荐清华大学的apt源,使用如下命令可以一件将源转为清华源
sudo sed -i "s@http://.*archive.ubuntu.com@https://mirrors.tuna.tsinghua.edu.cn@g" /etc/apt/sources.list
sudo sed -i "s@http://.*security.ubuntu.com@https://mirrors.tuna.tsinghua.edu.cn@g" /etc/apt/sources.list
具体过程不再赘述。但是需要注意的是,出于软件供应安全策略考虑,源发布的apt软件版本可能滞后,如果想安装Node.js、npm的话,建议遵从以下步骤:
- 将源转为国内镜像:
export NODE_MIRROR=https://mirrors.tuna.tsinghua.edu.cn/nodejs-release/
- 先安装npm,用npm安装node.js版本管理工具
n
- 用
n
安装新版Node.js:n stable
- 设置npm淘宝代理:
npm config set registry https://registry.npm.taobao.org
- 然后更新npm:
npm install npm -g
这样就可以安装到新版的npm和node.js了。
还有一个需要注意的就是,如果你用的ECS是Ubuntu18以上版本的,是apt源是默认MySQL8.0 ,无法抓取到MySQL 5.7包的。只能手动下载安装。
解决办法可以参考这篇博客
安装完这些后,就可以配置软件环境了。
首先,必须给ECS开放相关端口,否则公网是无法访问到服务器内容的。
在ECS服务器->安全组->配置规则里选择快速添加,就可以添加常用软件的端口,比如MySQL的3306,HTTP服务的80端口等。
然后再测试一下公网访问,首先打开控制台,输入命令:nginx
,再到浏览器中用ip地址访问:http://你的ECSIP/
如果出现下面这个页面,说明你的机器可以被公网访问到了。
然后就可以将nginx服务停止了:service nginx stop
搭建一个API微服务
我的实习内容是搭建一个新闻网站,有一项需求就是实现对新闻内容的管理:比如从新闻标题中自动推断出关键词,以便于SEO优化。所以,我就想:能不能设计一个微服务,提供一个API,以新闻标题为参数,输入以后返回推断好的关键词呢?
我对API的设计如下:
- PATH:
/get-keyword
- Method:
GET
- Query Params:
sentence:string
例如:/get-keyword?sentence=这是一个测试
就是对句子这是一个测试
提取关键词。
Node.js由于轻量、简单、门槛低、生态丰富、IO性能出色为特点,是搭建微服务的好工具。
结巴分词也是一个很强大的中文分词处理库,我搭建这个微服务主要依赖于这个库的实现。
首先创建一个项目目录,初始化一个npm包
npm init
然后安装Node.js的Web服务框架express.js
npm install express
安装Node.js的分词库。
npm install nodejieba
安装完后,编写主程序:
//app.js
import express from 'express'
import nodejieba from 'nodejieba'
const app = express();
app.get('/get-keyword',(req,res)=>{
res.contentType('application/json');
res.send(nodejieba.tag(req.query.sentence));
})
app.listen(80);// Listen to 80 Port
console.log('The Micro Service Is Running')
最后,别忘了在package.json中加一条:"type":"module"
;
这个微服务就搭建好了!
注意:必须停止nginx,可以使用service nginx stop
命令,因为微服务和nginx都在监听80端口,会引起端口冲突。
然后运行刚才搭建的微服务:node app.js
然后在浏览器窗口中键入搭建的API:
http://{主机ip}/get-keyword?sentence=这是一个测试
就可以看到API微服务的预览效果了!
总结
以我的经历来说,拥有一台服务器是初学者很快提升技能的一条路径。我建议对于初学者,可以先尝试着捣鼓一台服务器,可以学到很多东西。花个几十块钱买一台阿里云学生机,对自己是一场很值的投资。
以前我在去年上大二的时候偶然就买了一台服务器,一开始选的新用户优惠40元。很难想象当时我还是个菜鸡,对Linux系统操作、计算机网络、数据库、Web开发什么前端后端完全一窍不通,一听就懵。对计算机编程还仅仅停留在大一的C++、C语言、Java那种写写Hello Word,做做xx管理系统命令行输出程序的层次。
后来开始尝试实习,需要为公司开发一套新闻网站,所以我不得不学习网站是如何运作的:什么是前端?什么是后端?什么是数据库?动态页面是怎么实现的?
在焦虑下偶然看到阿里云的新用户优惠,当时还有点犹豫要不要下单。最后还是花了四十块钱下单了。事后证明,确实给我带来了不小的收获。老师们不教我,视频讲的又花里胡哨,也没有靠谱的入门教程,我就只能自学搭建网站,从nginx到Apache再到PHP,最后用PHP成功写了个动态页面,在网上搜了一大堆教程博客改Nginx配置、学习HTTP,学习PHP,终于部署到公网上,还给自己买了个域名,能在别的设备上通过网址就能访问我搭建的网站,那一刻,内心是挺高兴的,自学了一段时间,终于入门Web开发了。