大家好,我是目前就读的是非全日制硕士软件工程专业的一名研三学生,即将毕业。由于想了解WebRTC相关知识,故在网上找了一个Demo,在调试和修改之后能够成功在本地的虚拟机进行一对一视频通话,故想开放给周边同学和朋友测试,于是想到了使用云服务器搭建项目,因为之前已经购买过一次学生服务器,有了一定的使用经验,在官网了解到“飞天加速计划·高校学生在家实践”活动,完成前期课程学习和考试后顺利地申请到了一台ECS服务器,在熟悉操作一个星期以后,决定写下这篇文章来总结一下自己这段时间的感悟,希望能帮到一些同学。
在申请到云服务器之后,首先想到的是在本地进行ssh登录,于是按照网上的教程,在本地进行了ssh公钥和密钥的创建,通过scp成功将公钥上传至云服务器,之后重启一次实例,最终顺利在本地进行ssh登录。在登录到root账户之后,马上通过adduser命令新建一个本地用户,切换到该用户进行一系列操作,免得因为root用户权限太大,导致发生一些不可挽回的错误。用户默认shell是bash,觉得不太美观和直接,于是决定使用zsh,在查阅了相关资料之后,安装了zsh和oh-my-zsh,使得交互式命令行变得生动起来,也提高了自己操作的兴趣。
做完前期准备工作之后,决定在自己的虚拟机把项目文件上传至云服务器,在开放端口之后,顺利地使用scp命令进行了传输。因为项目需要Node.JS环境和一些依赖模块,于是在服务器里使用sudo apt install xxx -g安装了node及一些依赖模块,但由于Ubuntu系统默认安装的模块版本都非常低,于是在查阅了一些教程之后安装了npm和n,两者都是包管理工具,后者是专门管理node的,最终使用到了node的16.13.0版本。
因为项目本身需要用到express框架来搭建http server以及使用websocket来进行通信,于是需要安装这两个module,安装成功之后发现怎么也无法require进来,在纠结了很长一段时间之后发现是引用路径问题。在这里有一个小tips,可以在命令行输入node,回车后输入module.paths就可以看到require操作的路径,如果你安装的包不在这些路径里就会报错。在~/.zshrc 导入 NODE_PATH ,指定路径之后就会更新require路径。在安装完所有需要的程序模块之后,需要进行ssl证书的安装,因为音、视频流的传输需要在安全的环境下进行,http是明文传输,故使用https方式来访问。因为没有域名,这样免费申请到的ssl证书也无法使用,于是选择在本地进行模拟CA证书,在查询资料及相关操作之后,在踩了许多坑的情况下最后也是顺利的解决了访问配置问题。
最后一关是nginx的配置,因为自己是第一次操作nginx,前期踩了不少坑,包括server模块的参数熟悉,端口的监听,ssl模块的参数,log信息的存放以及反向代理,在使用ufw操作防火墙之后还是无法进行入网和出网,在查询了相关博客之后操作了安全组并开放指定端口,最后也是顺利的把项目启动起来了,成果见上传的图片。
飞天加速计划是一个对在校生十分友好的项目,它让我们能够把自己写了一些简单程序也能提供给外部人员使用,也让使用者对真实的线上服务器操作有了一些实际操作体验,在之后希望能够在服务器上进行其它相关操作,让自己能够更加熟悉。