如何使用小小的 Raspberry Pi 管理大型酒店

您是否有空闲时间重新思考如何管理您的酒店或汽车旅馆?
140 位读者喜欢这篇文章。
All Things Open speaker support 'office hours' start today

Alan Levine。CC0 1.0

树莓派 (Raspberry Pi) 与 Raspbian Lite 可以非常通用地安装许多有用的服务(另请参阅我的树莓派项目文章)。通过搜索开源软件并使用这个出色的设备进行测试,可以实现一些令人着迷的功能。一个有趣的例子是使用树莓派和 Qloapps 安装完整的开源酒店预订和预订系统。

什么是 Qloapps?

QloApps 是一款开源软件,具有许多功能,可以帮助简化酒店业务管理。这些功能包括

  • 启动酒店预订网站
  • 管理线下预订
  • 部分付款预订
  • 集成支付网关
  • 单次订单中的多房间/多酒店预订
  • 管理退款规则

它由一个 Web 前端(客户可以从互联网访问的页面)和一个 Web 后端(酒店所有者管理酒店、房间、价格和许多其他可自定义选项的地方)组成。

逐步操作步骤

这个项目非常简单,并且仅安装远程 Web 服务意味着我们只需要几个廉价的零件:

  • 树莓派 3 Model B* 与电源
  • 一张 micro SD 卡(建议至少 16GB)

*我将使用树莓派 3 Model B,但它也应该适用于树莓派 3 Model A+ 或更新的板。

您还需要一台装有 SFTP 软件的台式电脑(例如,免费的 Filezilla)将安装包传输到您的 RPI 中。

我们将从设置经典的 LAMP 服务器开始,然后我们将设置数据库用户并安装 Qloapps。

1. 安装 Raspbian Buster Lite 操作系统

对于此步骤,请参考我的在您的树莓派中安装 Raspbian Buster Lite 文章。

确保您的系统是最新的。通过 ssh 终端连接并输入以下命令

sudo apt-get update
sudo apt-get upgrade

2. 安装 LAMP 服务器

LAMP (Linux, Apache, MySQL, PHP) 服务器通常附带 MySQL 数据库。在我们的项目中,我们将使用 MariaDB 代替,因为它更轻巧并且可以与树莓派很好地配合使用。第一部分将很快完成,因为互联网上有大量关于安装 LAMP 服务器的良好说明。

3. 安装 Apache 服务器

sudo apt-get install apache2 -y

现在您应该能够通过浏览 http://<<YouRpiIPAddress>> 来检查 Apache 安装是否正确完成

Apache default page

4. 安装 PHP

sudo apt-get install php -y

5. 安装 MariaDB 服务器和 PHP 连接器

sudo apt-get install mariadb-server php-mysql -y

6. 安装 PHPMyAdmin

sudo apt-get install phpmyadmin

在 PHPMyAdmin 设置屏幕中,按照以下说明操作

  • 使用空格选择 Apache(强制性),然后按 OK。
  • 选择“是”以使用 dbconfig-common 配置 PHPMyAdmin 的数据库。
  • 插入您喜欢的 PHPMyAdmin 密码,然后按 OK。
  • 再次输入您的 PHPMyAdmin 密码以确认,然后按 OK。

7. 授予 PHPMyAdmin 用户数据库权限以管理数据库

我们将使用 root 用户(默认密码为空)连接到 MariaDB 以授予权限。请记住在每行命令末尾使用分号,如下所示

sudo mysql -uroot -p
grant all privileges on *.* to 'phpmyadmin'@'localhost';
flush privileges;

最后,重启 Apache 服务

sudo systemctl restart apache2.service

并通过浏览 "http://<<YouRpiIPAddress>>/phpmyadmin/" 检查 PHPMyAdmin 是否正常工作。

PHPMyAdmin default page

默认 PHPMyAdmin 登录凭据是

  • 用户:phpmyadmin
  • 密码:在 phpmyadmin 安装步骤中设置的密码

安装其他 Qloapps 所需的软件包并设置 PHP

我们需要为 Qloapp 安装检查准备我们的系统。因此我们必须安装 PHP Soap 连接器

sudo apt-get install php-soap

通过合规性检查的另一个要求是将 PHP 最大上传文件大小编辑为 16 MB

sudo nano /etc/php/7.3/apache2/php.ini

查找包含 upload_max_filesize 参数的行,并将其设置为如下所示

upload_max_filesize = 16M

Qloapps 还建议进行以下更改

max_execution_time = 500

保存并退出。再次重启 Apache

sudo systemctl restart apache2.service

安装 Qloapps

我们将遵循官方的 Qloapps 安装指南,并进行一些小的更改以拥有专用的数据库应用程序用户。

创建数据库并设置用户。返回到 PHPMyAdmin 网页(浏览 "http://<<YourRpiIPAddress>>/phpmyadmin/")并登录

  • 用户:phpmyadmin
  • 密码:您在 PHPMyAdmin 安装步骤中设置的密码

点击“数据库”选项卡

Database 1

创建一个数据库,并记下数据库名称,因为在后续安装过程中您将需要相同的名称

Database 2

现在是为 Qloapps 创建数据库用户的时候了。在本示例中,我将使用以下凭据;您可以使用自己选择的登录名。

  • 用户:qloapps_db_user
  • 密码:qloapps_db_password

因此,终端命令将是:

sudo mysql -uroot -p
CREATE USER ‘qloapps_db_user’@‘localhost’ IDENTIFIED BY ‘qloapps_db_password’;
GRANT ALL PRIVILEGES ON qloapps_.* TO 'qloapps_db_user' @ 'localhost';
flush privileges;
quit

(如果之前您没有更改过,则 root 密码仍然为空)

安装 Qloapps 软件

从您的本地 PC 上的 Qloapps 下载页面 下载 Qloapps 安装 zip 文件。在撰写本文时,此文件名为 "HotelCommerce-1.4.0.zip"。

使用您喜欢的 SFTP 软件,将整个 zip 文件传输到树莓派中 "/home/pi/download" 路径下的新文件夹中。常见的(默认)SFP 连接参数是

  • 主机:您的树莓派 IP 地址
  • 用户:pi
  • 密码:raspberry(如果您没有更改 pi 默认密码)
  • 端口:22

返回终端

cd /home/pi/download/ #Enter directory where Qloapps installation files have been transferred
unzip HotelCommerce-1.4.0.zip #Extracts all files from zip
cd /var/www/html/ #Enter Apache web directory
sudo rm index.html #Removes Apache default page - we'll use Qloapps one
sudo cp -R /home/pi/download/HotelCommerce-1.4.0/hotelcommerce/* ./ #Copy installation files to web directory
sudo chown -R www-data:www-data ./

浏览 http://<<YourRpiIPAddress>> 以开始安装

Qloapps installation

选择您喜欢的语言,然后按“下一步”。

Qloapps installation

阅读许可协议。如果您同意,请选中相反的标志,然后按“下一步”。

Qloapps installation

在此步骤中,您需要输入您的商店详细信息以及您将用于访问您的商店的凭据。最后,按“确定”。

Qloapps installation

根据前面段落中定义的参数编辑数据库连接参数。使用本指南中使用的参数,我将编辑

  • 数据库名称:qloapps_(添加了最后的下划线)
  • 数据库登录名:qloapps_db_user
  • 数据库密码:qloapps_db_password

测试数据库连接,应该没问题。单击“下一步”。

Qloapps installation

安装似乎已正确完成,但在进入 Qloapps 网页之前,我们必须删除 install 文件夹。在终端中,输入

sudo rm -R install/

使用终端中的 "ls" 命令,找到名称以 "admin" 开头的文件夹。在我的情况下,输出如下

Qloapps installation

但 admin 文件夹名称可能因安装而异。

现在您的预订 Web 服务器已准备就绪,页面将是

  • 前端(供客户使用):http://<<YourRpiIPAddress>>
  • 后端(供管理员使用):http://<<YourRpiIPAddress>>/<<AdminFolderName>>

首先,后端访问以演示模式进行。可以使用页面右侧标记为“演示模式”的开关按钮禁用此模式。

要自定义,请使用 Qloapps 用户指南

接下来阅读什么
User profile image.
幸运的丈夫,开源爱好者。天生好奇。为我的根感到自豪,很高兴混合并学习不同的根

10 条评论

这只是成功运营酒店所需的一部分,并且需要与其他系统集成。

这是一个在线预订引擎,换句话说,是酒店版的 Magento/Shopify 等,而不是实际运营酒店的后端部分。

对于日常运营,您需要能够处理入住/退房、客房清洁、收益管理、物业维护、行李服务(可选)、第三方收费(电话、迷你吧、餐厅收费、电视/视频等)、团体管理(包括团体预订和账单)、会计以及拼图的其他部分。

完全正确,我同意。
即使您是一家小型酒店或汽车旅馆也是如此。
如果您是一家关于处理您网站上客户数据的注册企业,您还需要处理 GDPR 法律,这将导致您希望获得强大的加密。
无论如何,树莓派 3 都无法处理这方面的问题。
对于 IT 学生来说,这是一个非常酷的模拟项目,可以理解基础知识。
我自己也在学习 IT,可能会向我的老师建议这个,这样我们就可以进行小规模的实践。

喜欢这篇文章的整体,但是的,用这个来运营酒店有点牵强。

回复 作者:Nathan

大家好。
当然,酒店管理是一项工作,树莓派是用于小型项目的小型计算机,更接近计算机技术爱好者或实现概念验证。我尝试了这个测试来探索树莓派的功能,并将这个项目视为尝试(和评估)开源产品的一种方式。同样从 IT 方面来看,商业级平台应考虑备份、访问安全、连续性以及其他应为实际业务考虑和添加的要求。

回复 作者:G.v.M (未验证)

这样的平台不是应该能够支持像 "aes-cbc-essiv:sha256" 这样体面的加密吗?这应该足够了。

回复 作者:G.v.M (未验证)

有多少用户可以访问这样的网站而不会出现明显的性能问题。可以达到 100 个同时访问网页的用户吗?

嗨 Vzhik,
这是一个好问题。即使每个人都希望得到一个简单的数字答案,性能问题也更复杂。这在很大程度上取决于对您来说可接受的性能是什么以及您正在公开的服务类型。
例如,用作提供静态 html 页面的简单 Web 服务器的树莓派可能能够处理 100 个并发连接,正确管理缓存和队列。但是响应时间可能对您来说不太令人满意(树莓派的网络功能有限)。在这种配置中,使用外部 CDN 可以帮助提高性能。但我们描述的是静态页面的示例,没有日志/预订服务,这与 Qloapps 情况完全不同。
考虑到 100 个同时访问是非常大的流量。如果您有如此多的访问量,您应该考虑转向商业级服务。

回复 作者:Vzhik (未验证)

哇!真的很喜欢这篇文章,我不得不发表评论 - 我刚刚在我的汽车旅馆上做了!谢谢你。让我们看看会怎么样..

我还想找到一种管理树莓派本身的方法,获取警报并更改所需的代码/软件包。我找到了一个免费平台(对于我们的规模),它为此提供了一个非常好的解决方案 - https://www.upswift.io/

感谢分享 :)

嗨 Jason,
很高兴您进行测试。请记住,对于实际用例,要评估所有需要的注意事项。最重要的是,记住经常备份您的数据并测试您的恢复程序。
我刚刚看到了您发布的 upswift 链接,我发现它真的很有趣。希望能够在不久的将来对其进行测试。

回复 作者:JasonMotelGo (未验证)

嗨 Giuseppe,

很棒的文章。我一直在按照步骤进行操作,但在您输入 “sudo mysql -uroot -p
grant all privileges on . to 'phpmyadmin' @ 'localhost';
flush privileges;” 到终端的步骤卡住了。第一个命令通过了,当我输入 grant all 时,它给了我一个语法错误。我做了一些调查,我发现一些来源显示授予特定数据库的权限,但不是像这样专门针对这个。您能提供帮助吗?

谢谢,
David

Creative Commons License本作品根据 Creative Commons Attribution-Share Alike 4.0 International License 许可。
© . All rights reserved.