亚马逊AWS免费一年+python虚拟配置+部署itchat的一个python应用

自己原来用itchat这个库弄了个消息转发器,这个库是基于网页版的微信的,其实就是收集关键字,然后有准对性的把这些记录转发到自己的内部群。
原先我把程序放在了谷歌云上,但是谷歌云一个是老是会莫名的断,能ping通但是ssh连不上,经常莫名会断,自己也没有深入去研究为什么,加上这两天谷歌云的console奇慢无比,再加上网页版的微信呢现在凌晨必断每天都要启动一次。总之程序挂了现在根本无法重启服务器,所以想找个替代的,同时也练下手记录一下过程。

一、首先是亚马逊AWS免费一年,可以申请一个EC2,对于我这种挂机小程序而言性能应该没问题的,就是网上有人说到这个收费的问题,有一个“ 2 百万个 I/O ”的免费额度,我现在也搞不清我这种基于网页版微信的程序会有多大的IO,只能自己注意观察了,申请和搭建服务器很简单,照了网上的各种教程做就行了,最后我设置了下账单提醒,超额提醒等等。我申请的是Ubuntu 18.04.3 这个系统,记住有一个**下载到自己的电脑保存好就行,用户名默认是ubuntu等等会用到。

二、配置好了以后Xshell 6新建连接,输入自己定义的名称、主机(EC2分配的IP)、端口默认22;用户身份验证,方法选择Public Key,选择,然后浏览选择你刚刚的**文件,用户名是ubuntu,然后就是正常连接上了。

三、接下去我要做的python这快的配置,拿到一台服务器,首先看下装了几个python版本,用命令python2 --versionpython3 --version 分别查看下是否有对应的版本号,就可以知道系统装了几个版本了。我这个系统装了2.7和3.6的版本,而且默认版本是2.7,我准备先切换到3.6为默认版本。echo alias python=python3 >> ~/.bashrcsource ~/.bashrc;然后再看下python --version 显示3.6就切换成功了。我本身的想法是默认版本3.6了以后装虚拟环境也会默认到3.6的,其实不然,最后还是要指定的。
亚马逊AWS免费一年+python虚拟配置+部署itchat的一个python应用
四、然后创建python的虚拟运行环境,为什么要创建虚拟环境,其实就是因为一个系统可能默认装了多个版本的python,不同项目可能会用到不同版本的库,为了避免各种问题,也为了使得自己的各个项目清晰明了,所以建议使用虚拟运行环境。这里使用到了virtualenv来创建,实际上python3.6这个版本自身也是可以配置虚拟环境的,venu的一个模块,python3.6-venu,但是这个东西很多坑,而且应该是有bug的,可能是特定于这个系统,我一切都安装好了,最后要分配虚拟空间了,一直提示我没安装,于是最后作罢还是选择了virtualenv。首先是安装sudo apt-get install python-virtualenv,然后创建一个虚拟环境,这里可以指定生成虚拟环境的python版本,不指定的话默认2.7又会遇到很多坑,所以直接创建virtualenv venv --python=python3.6,(venv是的虚拟环境的名字,你可以自己定义),然后进入source venv/bin/activate ,相应的退出是deactivate,删除是rm -r venv。虚拟环境其实就是个文件夹,里面安装了python的可执行文件和一些基础的类库吧,然后就可以独立运行了,你只要记住自己项目对应的名字就行,这样理解起来比较方便。
亚马逊AWS免费一年+python虚拟配置+部署itchat的一个python应用
五、接下来就准备上传我windows pycharm里编写的程序上去了。首先要一个rz sz上传下载工具,sudo apt-get install lrzsz。完了以后命令rz选择自己的py文件上传。文件涉及到很多类库,本机上可以用pip freeze > requirements.txt导出为requirements.txt,然后rz上传,最后在虚拟环境下pip install -r requirements.txt,就会安装所有的类库,可以用pip list查看已经安装好的库,这样基本该做的都做完了,只要python **.py顺利运行就ok,当然要一直挂机运行着还是推荐用screen,ubuntn这个版本也是自带的。所以整个搭建完事后运行程序的步骤:xshell连接服务器=》创建特定screen:screen -S wechat (wechat为你自己的名字,已创建好的话screen -r wechat)=》进入虚拟环境 source venv/bin/activate =》python **.py 完成!

记录一下搭建经历,每次各种问题搜索之,有时候都不记录,现在年纪大了还是记录一下比较好,免得下次忘记。