一、自我介绍:
本人学的是电子信息专业,目前在读大二,因为课程设计是做一款具有AI能力的微信小程序,需要把Pytorch深度学习模型部署到云服务器上,实现真机能够测试的效果。在选择云服务器上,隔壁实验室的同学就推荐阿里云的服务器,说学生可以参加“飞天加速计划·高校学生在家实践”活动”,然后就开始了阿里云服务器的学习之旅。
二、两周学习经历:
这两周的学习确实收获还挺大的,而且也已经实现了将Pytorch深度模型部署到云服务器上,微信小程序通过接口能够访问服务器,真机测试也通过了。但是由于域名没有备案,所以暂时只能通过云服务器的IP地址访问。接下来就是学习的过程。
首先我们拥有一台服务器之后,需要申请域名,然后域名解析到服务器的IP地址,再就是申请阿里的免费的SSL证书,拥有证书之后要让我们的域名能够访问,必须要进行证书部署,我选择的是通过ngixn服务器部署,接下来就是我学习nginx遇到的各种问题和解决方法。
我们通过远程登录服务器,用户名默认是root,输入密码:XXXX。进入服务器是控制台之后,由于我使用的是ubuntu18.04版本会默认安装python3版本。首先,我们安装虚拟环境vurtualenv,通过pip3 insall virtualenv命令来执行,安装成功后新建虚拟环境目录env, t通过命令virtualenv env来执行。然后进入虚拟环境通过命令source env/bin/activate 进入成功后会显示(env)root@... 通过cd env命令进入虚拟环境根目录, 然后再安装nginx 通过sudo apt-get install nginx命令来执行,输入nginx-t 来检测配置文件有没有问题,返回结果是success ok 就是正确的配置,然后把公网的ip输入到浏览器上访问会出现Welcome to nginx!页面,接下来就是SSL证书部署到nginx.
我们通过命令cd /etc/nginx/命令切换到nginx目标下 通过ls命令可以查看到该目录下有nginx.f文件 通过vim nginx.f命令打开文件 输入命令i 进入insert模式可以修改数据 我们将server{}里面的listen 80注释掉,然后开启listen 443 ssl 进行证书部署 将下载的证书.pem和.key文件拷贝到该文件内,server_name后面填写自己的服务器域名,注意要通过ssh本地远程连接服务器,将文件上传服务端的指定目录下,然后我们再复制目标到nginx.f文件内,配置完成后通过nginx-t命令来验证配置文件是否正确,再通过命令systemctl nginx start命令重启nginx服务器,没有报错说明配置文件有效。
注意:这里千万要注意,如果我们的域名没有备案,那么我们即使将ssl证书部署到nginx服务器也无法正常访问网页,当然如果想验证可以通过命令curl http://XXXXXX:5000 如果能返回html的代码数据,说明证书部署是正确的,只不到需要等域名备案通过了才能访问网站,这个问题困扰了我好几天才解决,之前还以为是防火墙的原因,后面开放防火墙80 443端口还是不行,那就是域名需要备案。
接下来就是安装gunicor和后端flask+pytorch模型部署
我们在虚拟环境下通过命令sudo pip3 install gunicorn,使用Pycharm远程连接服务器,将本地项目上传到服务器的虚拟环境中,我们通过命令gunicorn -w 2 -b 127.0.0.1:5000 -demo:app命令来执行,可以发现服务能够运行,如何发现端口被占用,通过命令netstat找到被占用端口的PID ,通过kill -9 PID命令杀掉进程来释放端口就行了。最后再使用命令gunicorn -w 2 -b 127.0.0.1:5000 -demo:app将服务调动起来,打开小程序就可以进行前后端的交互了。
三、两周收获与总结
通过这两周的学习,我对云服务部署后端项目具备了一定的基础,特别是我这种linux操作系统小白来说收获是非常大的。我现在能够熟练的使用linux操作系统的常用指令对文件进行操作以及项目的部署,遇到的常见问题也可以解决,对应netstat和kill -9 PID命令使用也很流畅,知道端口被占用了该如何快速解决,最开心的我的小程序已经实现了前后端的交互,项目可以说是完成了,后面就是进行域名的备案,耐心的等待审核通过就可以使用我自己的域名来访问云服务器了。