之前几章,我们讲了如何通过短信和邮件发送我们需要的信息。但是遗憾的是,我们都是讲相关的服务运行在自己的电脑上的。如果我们关闭了自己的电脑,那么我们的程序也就相应的停止了服务。本章将从购买服务器开始,一步一步将我们之前开发的程序搬移到服务器中,实现服务的全天候运作。相关代码已经放在本课程的Github项目上,同学们可以随时下载参考。
系统的选择
目前主流的服务器提供商提供的系统主要有Windows
和Linux
。因为之前我们都是在自己基于Windows
系统的电脑上开发的,因此本篇文章提高一下难度:使用Linux
服务器进行开发。在本文接下来的过程中,会穿插讲解一些基础的Linux
语句,方便之前没有基础的同学理解。
####服务器的选择
提供Linux
系统服务器的厂商有很多,比如阿里云、腾讯云、京东云等。考虑到目前很多企业在使用阿里云,而且就个人而言,在之前的服务器出现问题时,阿里云的售后也很及时的解决了问题。因此,本文选择阿里云的服务器。
注意!你可以选择其他服务器厂商提供的服务,所有的操作并不会因为你选择的企业不同,而导致无法正常操作!
- 如果你是学生,可以使用阿里云的云翼计划或者是腾讯云的学生计划,每个月最低只要10元左右就可以获得能够满足日常使用的服务器;
- 如果你只是想短时间内使用,建议你使用例如京东云等经常提供免费使用日期的新晋云服务商。
购买服务器
- 注册
访问阿里云官网,没有注册同学点击右上角注册,注册过程和正常的网站没有啥大的不同,所以略过不表。 - 购买服务器
在官网首页的产品
中选择云服务器ECS
,进入购买界面。在购买页面中,我们选择包年包月
,地域你可以选择喜欢的地域,我们这里默认为随机分配
:
因为我们的服务并不需要太多的性能,因此在实例中,我们选择入门级(共享型)
即可:
在镜像中,我们选择Ubuntu 16.04 64位
,存储大家可以根据自己的需求增加或者减少,我们这里默认不变:
接下来一直点击下一步
至设置密码
,我们输入自己的密码:
设置完密码后,我们确认订单,然后付款就完成了购买服务器的步骤了。
配置服务器
-
查看服务器实例
点击云服务器ECS
->实例
就可以看到之前购买的服务器信息,我们需要记住对应的内、外网IP:
-
连接服务器
我们使用开源的SSH链接工具putty连接我们的服务器,同时填上我们的服务器公网IP,然后点击open
:
初次使用,软件会显示Putty Security Alert 提示,我们直接点击“是”即可。
- 配置服务器环境
我们首先要输入之前我们配置的用户名和密码,这里我的用户名是root
,密码是******
。输入后回车,如果输入的信息正确,会出现Welcome to Ubuntu.....
的字样,说明我们已经连接到了我们购买的服务器后台中:
我们先输入python3
,在>>>
后输入`print(“hello world!”),看看环境是否正常:
输入exit()
退出Python 服务。由于ubuntu自带了Python 2.x 和Python 3.x 两个版本的Python,为了保证我们能够顺利载入Python 3.x 版本的框架包,我们需要安装pip3
。为了防止出现意外,我们首先下载一个get_pip.py
的文件,让它帮我们自动搜索并下载:
mkdir python_list
cd python_list
wget https://bootstrap.pypa.io/get-pip.py
python3 get_pip.py
我们来详细解释上述的代码:
mkdir python_list
我们创建了一个名为“python_list"的文件夹,mkdir
是创建目录的命令;cd python_list
:我们进入到了“python_list"目录,cd
是进入某个目录的命令;wget https://bootstrap.pypa.io/get-pip.py
我们从后面的网站中下载了相关的文件,wget
是下载文件的命令;python3 get_pip.py
运行下载后的py文件。因为我们使用的是Python3.x的版本,因此要指定运行的是python3
版本。
接下来我们要使用pip
安装项目所要依赖的包:
pip3 install requests
pip3 install twilio
pip3 install BeautifulSoup4
修改代码
既然服务能够全天候为我们服务,那么我们就需要考虑:到底什么时候发送短信告诉我们今天的天气呢?很显然,我们需要控制之前的天气预报服务,让它在一定的时间内发送,其他时间保持静默,不打扰我们。
我们假设每天8点系统发送一条短信通知给我们,告诉我们今天的天气,因此代码运行时,应该保证只有处于8点时,系统才会服务:
from chapter10.crwal_info import get_info
from chapter10.send_sms import send_sms
import time
if __name__ == '__main__':
url = ' http://api.map.baidu.com/telematics/v3/weather?location=杭州&output=json&ak=你的AK值'
now_hour = time.strftime('%H',time.localtime(time.time()))
send_time = int(now_hour)
if send_time==8:
text = get_info(url)
send_sms("要发送的手机号码","Twilio提供的号码",text)
else:
time.sleep(60*60)
系统首先获取当前的小时,如果等于8点,则发送相关的短信。否则,系统休眠1个小时,在1个小时候再次判断是否是8点,能否发送短信给我。
上传代码
我们使用PSCP上传文件。首先我们需要找到代码所在的位置,启动控制台,按照下面的格式进行上传:
即
pscp -r 目录 用户名@LinuxIP:目录
上述图片中,我把chapter10
中的文件,上传到了IP为147.104.252.85
,用户名为root
,存放目录为python_list
的服务器中。
让我们到服务器中,使用ls
命令查看是否已经成功上传:
果然成功上传到了服务器!
让我们进入chapter10
的目录中,直接运行Main.py
,尝试能否发出短信吧:
cd chapter10
python3 Main.py
手机收到的短信:
运行正常,我们已经在服务器上成功搭建了我们的服务!
总结
- 本章从购买服务器开始,一步一步将我们之前开发的程序搬移到服务器中,实现服务的全天候运作;
- 前几章都是直接请求API,减少了网页爬取方面的知识,主要是方面同学们了解我们之后要使用的相关基础技术。从下一章开始,我们要重点攻克网页爬取技术,为最后的实战项目做准备;
- 事实上,网上有很多免费的API接口,为了不浪费珍贵的服务器资源,同学们在课后如果感兴趣的话,可以开发属于自己的短信小程序,提高生活的质量。