esp8266时钟+天气+提醒(四)云服务篇一

esp8266时钟+天气+提醒(四)云服务篇一

六、服务器配置

1. 导论

前面我们通过联网获得了对时和获取天气的功能,接下来我们要实现的是提醒功能,但这一次,为了充分感受开发的乐趣,我们选择自己来做服务端——购买一个云服务器,然后让ESP8266连接我们的服务器。

阿里云最近推出了99一年的垃圾货处理活动:链接地址为云服务器ECS_阿里云,在产品规格部分可以看到99一年的配置。特别说明,参考知乎等各平台的评价,据说性能极差,容易宕机,使用条件和场景很有限,单纯图便宜外加抱着试一试的心理选择购买,不建议盲目从众(我不打广告)

控制台选择配置(我都选择的默认)并购买后进入控制台(链接地址:控制台)查看配置、设置密码等。

可以看到操作系统很独特...是阿里自家的Linux:

点击实例名进入实例,点击重置密码后,输入新密码即可,因为还未登录,所以先设置一下。

设置好后就可以远程连接服务器了(SSH的22端口是默认开放的)。

2. 远程连接服务器

2.1 SSH

刚才说到SSH,现在先简要介绍一下它是什么东西。

SSH(Secure Shell)是一种网络协议,用于安全地在网络上进行数据通信、远程命令行登录以及远程命令执行。SSH提供了强加密和认证机制,以防止传输过程中的数据被截获和篡改,保护通信安全。

SSH工作在应用层,通常用于远程管理服务器或进行安全的数据传输。具体原理可以参看《计算机网络》。

我们远程连接服务器,就是通过SSH客户端连接到SSH服务器(服务器的22端口,这是SSH协议的默认端口)。

我们可以使用cmd或者powershell连接,直接在命令行中输入:

ssh root@服务器地址

服务器地址在控制台中可以看到,注意是公有地址。

然后需要输入密码,第一次连接可能还需要验证服务器的指纹,确认无误后继续。

此外,还可以通过密钥认证连接,但这里就先不使用了。

2.2 Xshell7

我使用Xshell7来连接服务器,Xshell是一款功能强大的终端仿真软件,广泛用于Windows操作系统环境下。它支持SSH、TELNET、SFTP、SERIAL等多种协议,能够让用户方便地远程管理Unix/Linux服务器、路由器、交换机等网络设备。

可以看到,窗口左侧有一个绘画管理器,在其中右键,然后点击新建,如下图:

主机处输入服务器的公网IP,然后点击左栏的用户身份验证,输入用户名和密码:

确认密码无误后,就可以点击连接了。第一次连接的话如2.1中所述需要指纹密钥,如下图:

点击接受并保存即可。

3. 安装Nginx

连接成功后,就会进入到一个命令行页面,我们可以直接在其中输入命令,这些命令都会在远程主机上被执行。

初始状态下工作目录是/root,接下来,如下图所示,我们要安装Nginx了。

Nginx是一种高性能的HTTP和反向代理服务器,是一种服务器软件,与Apache、Tomcat以及现在比较火的Caddy是同类,我们要做HTTP服务,需要下载安装Nginx。

3.1 源码下载

在上图中,使用到的指令共3个:

  • ls:显示当前目录下的所有文件
  • pwd:显示当前路径
  • wget xxx:下载xxx

wget是一个广泛使用的命令行工具,它用于从网络上下载文件。它支持HTTP、HTTPS和FTP协议,能够在失去连接或者程序被中断时继续之前的下载(断点续传)。

我们使用的是:

wget https://nginx.org/download/nginx-1.25.4.tar.gz

这行命令的意思是下载Nginx1.25.4的源码包,至于这个链接怎么来的,可以点击官网查看:

Nginxicon-default.png?t=N7T8https://nginx.org/en/download.html这里有各个版本的Nginx,点击即可获取下载链接,粘贴在wget后面即可,注意空格。

3.2 解压缩

在上图中,又出现了四个新命令:

  • mkdir:在当前目录下新建文件夹
  • mv:把文件移动到指定位置
  • cd:进入某文件夹
  • tar:解打包解压缩

观察到我们下载下来了一个nginx-1.25.4.tar.gz,“.gz”格式是Linux中最常用的压缩格式而“.tar”格式是打包格式。打包和压缩是不同的。

我们使用了命令:

tar -zxf nginx-1.25.4.tar.gz

其中使用了三个参数:

  • -z:指定压缩格式为.gz
  • -x:解打包
  • -f:指定压缩包的文件名

这样就把这个压缩包解开了,之后就可以配置和安装了。

3.3 配置

配置操作其实顾名思义,我们可以看到在解压后的文件夹内有一个configure,它是绿色的(XShell中),这代表着它是一个可执行文件。

直接输入./configure就可以执行它。

不过,我们可以看到结果如下图:

出现了错误,上面说需要PCRE模块但没有找到,所以我们需要先安装一下它。

阿里云的这个Linux内置yum,它是一个在基于RPM的Linux系统(红帽系列常见,CentOS、Fedora等都有)中广泛使用的包管理器和命令行工具。它用于安装、更新、删除软件包及其依赖关系。

我们使用yum来安装这个pcre包:

yum install pcre

结果如上图所示,出人意料地,结果是pcre已经被安装了。

事实上,我们还需要额外安装pcre-devel,如下图所示:

yum install pcre-devel

pcre-devel是pcre的开发库包,不过我们不需要纠结它是什么能做什么,我们只需要安装就好了。不要忘记输入y,这表示同意安装。

事实上,nginx不只需要安装这一个,如果现在再回去./configure,我们会发现它仍然缺少某个库比如zlib等等。

yum install -y gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel

这里提供一个一站式解决方案——一次安装所有依赖。

都安装完成后,我们再回去./configure,会看到:

很好,已经配置成功了。接下来就可以编译安装了。

3.4 编译安装

顾名思义,先编译后安装,我们先输入

make

它的意思是编译,如下图所示:

编译结束后,就可以安装了:

make install

如果你的结果与我的一样或类似,说明操作无误。

3.5 包管理器安装

实际上,我们刚才的安装方式被称为源码包编译安装,或简称为源码包安装编译安装,而还有一种安装方式也很常用,即包管理器直接安装,例如:

yum install nginx

至于为什么使用源码包安装,则是因为源码包安装更加灵活,而且配置可调,这是其相较于包管理器安装的优势。

4. 启动Nginx

4.1 启动Nginx

安装好了,接下来我们来启动Nginx。

Nginx安装在/usr/local/nginx处,我们先cd到这个目录:

cd /usr/local/nginx

然后,输入以下命令启动Nginx:

sbin/nginx

当前目录是/usr/local/nginx,在其下有个目录sbin,其中有可执行文件nginx,这样就可以启动了。

我们再输入

netstat -tnl

如果能看到0.0.0.0:80(80端口是HTTP协议的默认端口,被监听了),说明Nginx已经启动了,如下图所示:

4.2 安全组放行

接下来,我们打开浏览器,在地址栏中输入我们服务器的公网IP,尝试访问。

但一般来说,我们是无法访问的,这是因为安全组中可能未放行80端口

解决方案如下:

在控制台中点击安全组

进入安全组后,点击快速添加,注意是入方向(意思是外部访问服务器),结果如图所示:

勾选HTTP(80)和HTTPS(443)即可,点击确定保存设置。

之后我们再去浏览器尝试访问一下,如果效果与下图相同,说明成功:

这是Nginx的默认界面,是可以修改和调整的。

5. 配置Python

5.1 安装Python

Python是一种高级编程语言。它是一种解释型、交互式、面向对象的语言。Python和Linux之间有着密切且互补的关系,绝大多数Linux发行版中都预装了Python,当然也包括我们的阿里版。

Python的安装与Nginx类似:

在/root目录下新建文件夹python(此外还有一个文件夹是我们刚才新建的nginx,装着它的源码包),在其中下载源码包:

mkdir python
cd python
wget https://www.python.org/ftp/python/3.10.14/Python-3.10.14.tgz

我们选择的Python版本是3.10.14,当然也可以下载其它版本,在Python官网上寻找即可,链接地址:Python下载

下载完成后进入文件夹,执行configure:

cd Python-3.10.14/
./configure --prefix=/usr/local/python3

值得注意的是,对于configure,我们附加了--prefix=/usr/local/python3,这样子我们就指定python要安装到/usr/local/python3。

接下来编译并安装,与前面nginx一样。

最终结果如下图所示:

可以看到有非常醒目的警告,大意是当前安装的python没有被添加到环境变量里。

我们尝试运行一下Python,如上图下面几行

python3

可以看到进入了Python 3.6.8的环境,但是,我们安装的好像是3.10.14,这是怎么回事?

先Ctrl+Z退出Python环境,接下来回答刚才的问题。

这是因为前面所说绝大多数Linux发行版都预装了Python,这里的Python3.6.8就是预装好的,当我们输入python3,都会被导向这个预装好的python3.6.8。

那么怎么使用我们安装好的python3.10.14呢,解决方案包括:

  • 直接去寻找安装好的python3.10.14,直接用,不修改其他配置
  • 建立软链接,这样以后输入python3都会被导向python3.10.14
5.2 使用Python

我们采用第一种方案:

cd /usr/local/python3

通过ls命令,我们可以看到这个文件夹下有什么:

四个蓝色的(XShell中),可知它们都是文件夹。

我们cd到bin里面:

cd bin

再使用ls,得到下图的结果:

我们在这里执行一下python3,注意前面加上./,表示特指当前目录下:

./python3

可以看到,我们进入了Python3.10.14的环境,很完美。如下图所示(python3和python3.10效果一样):

5.3 虚拟环境

在创建Python工程的时候,我们通常都需要虚拟环境

虚拟环境是一种自包含的目录树,其中安装了特定版本的Python解释器以及一系列附加包。虚拟环境的主要目的是为不同的项目创建隔离的Python运行环境,每个项目可以拥有自己的依赖,互不干扰,使各个工程之间低耦合高内聚。

在创建虚拟环境之前,我们先找一个合适的地方存放工程:

cd ~
mkdir www
mkdir clock
cd clock

~表示用户目录,我们是root用户,~即/root,在这里新建文件夹www(延续宝塔的传统😀),在其下又新建一个文件夹clock,这个就是工程的名称了,任取即可。

在进入工程文件夹clock后,我们先新建虚拟环境:

/usr/local/python3/bin/python3 -m venv venv

如上图所示,可以看到出现了一个目录venv,这就是前面所说的虚拟环境目录树。

激活虚拟环境的方法为:

source venv/bin/activate

如下图所示,区别很明显:

进入虚拟环境后,会看到前面出现了一个(venv),这表示我们进入了虚拟环境,并且虚拟环境的名称是venv(名称是在创建时指定的,我们起名为venv)。

在虚拟环境中,我们之间输入python3就可以进入一个python3.10.14的环境了。

此外,通过deactivate可以退出虚拟环境

未完待续

下一篇是服务端具体代码实现,我们使用Python的fastapi做后端服务框架,为提醒功能提供支持。同时设置Nginx反向代理,把fastapi转接到HTTP的80端口上。

  • 9
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值