用树莓派1做web服务器

树莓派1,卡片大小,arm 32位cpu,512M内存。我找了一下购买记录,2013年12月15日买的。带网线接头。属于树莓派1clB。以前下载的操作系统还在。是2014年的操作系统,文件名是:2014-09-09-wheezy-raspbian_shumeipai.net.zip,该zip文件需要解压缩以后才能得到img文件,img文件很大。zip文件900多M,解压以后的img文件是3.2G。使用Raspberry Pi Imager软件将该img写到SD卡上才能用。后来将次新版操作系统文件写到SD卡,直接选择下载的xz文件,用Raspberry Pi Imager软件将该文件写到SD卡,SD卡也能启动。这样操作节省了操作步骤,也省去了为了减少硬盘空间占用删除image大文件这一步。使用其他软件写SD卡应该也可以,例如Win32DiskImager。不过这个旧的操作系统没有软件源了。安装其他软件比较麻烦。于是从官网下载了最新版的操作系统,以及次新版的操作系统。

新操作系统文件是:2024-03-15-raspios-bookworm-armhf.img.xz。

次新操作系统文件是:2024-03-12-raspios-bullseye-armhf.img.xz。该操作系统是2022年九月发布的。

这两个操作系统都可以使用,不过图像界面比较卡。以前下载的操作系统图形界面速度要好一些。最新版的操作系统,php是8.2版本 。次新版的操作系统,php是7.4的版本。能当web服务器使用。在局域网里能看到apache2的页面,在服务器根目录编辑一个phpinfo.php。该文件内容如下所示:

        <?php phpinfo(); ?>

在局域网里其他电脑游览器里输入:树莓派ip/phpinfo.php能看到php信息。其中树莓派ip要用实际的树莓派ip代替。

但是,在次新版的操作系统里,将单商家电商网站源码放到服务器根目录下的子目录里,电子商城没有正常打开。有出错提示信息:没有定义mb_internal_encoding()函数。输入命令:

        ps aux | grep mysql

能看到一个mysql,该行里还有mariadbd的信息。使用man mysql查看mysql手册,看到mysql是mariadb的符号连接。

1、处理没有定义mb_internal_encoding()函数问题

查找该问题原因。第一,在这里,mysql就是mariadbd,mysql正常启动了。第二,查看教材《PHP+MySQL网站开发项目式教程》,其中有一节是:PDO的基本使用,讲了PDO扩展。书上有如下两句话:

        PDO支持多种数据库,对于不同的数据库有不同的扩展文件。若要启动对MySQL数据库驱动程序的支持,需要在php.ini配置文件中找到“;extention=php_pdo_mysql.dll",去掉分号注释已开启扩展。

于是输入如下命令安装pdo_msyql扩展:

        sudo apt-get install php7.4-pdo-mysql

apt-get 运行后给出提示:注意,选中php7.4-mysql,而非php7.4-pdo-mysql ,接着apt-get安装了php7.4-mysql 。

接着查找php.ini。在/etc/php/7.4/apache2子目录和/etc/php/7.4/cli/子目录里都有php.ini,找到这两个文件里的“;extention=pdo_mysql",去掉分号注释以开启扩展。然后输入如下命令重启apache2:

        sudo systemctl restart apache2然后,在局域网里用其他电脑打开网址:树莓派ip/phpinfo.php,能看到php信息,还能看到pdo_mysql信息。其中树莓派ip要用实际的树莓派ip代替。这说明该扩展已经正常添加。

接着打开网址:树莓派ip/zyshop,这时出现了新的错误提示信息。再根据错误提示信息,解决问题。有两个问题:连不上数据库,找不到zywl_shop数据库。处理方法如下。

2、连上数据库

在网上搜索:raspberry os怎么启动mysqld。得到一条有用的信息。如果你是第一次在Raspberry Pi上设置MySQL,可能还需要运行mysql_secure_installation脚本来设置root用户密码、移除匿名用户、禁止root用户远程登录等。

输入命令:sudo mysql_secure_installation

设置root用户密码、移除匿名用户。

3、添加zywl_shop数据库初始内容,它是电子商城网站源码要用到的数据库

先下载zywl_shop.sql。在命令行里用wget下载文件。输入如下命令:

        wget http;//局域网服务器ip/zywl_shop.sql

然后在命令行输入如下命令:

        sudo mysql -uroot -p < zywl_shop.sql

将zywl_shop数据库结构与内容导入mysql。

解决了这两个问题以后,再在游览器里输入树莓派ip/zyshop,就能打开电子商城网站。不过又遇到了一个问题,用户登录时看不到验证码。

4、显示验证码

查找没有验证码图片的原因。修改UserControl.Class.php程序里的公共函数loginAction(),让它直接调用Captcha::show()函数,并用var_dump($temp)显示函数运行结果。在公共函数loginAction()里添加了如下两行:

        $temp = Captcha::show('Abcd');

        var_dump($temp);

就这样,在游览器里看到了错误信息:imagecreat()函数没有定义。查看教材《PHP+MySQL网站开发项目式教程》,得到如下信息:验证码图片需要php的gd扩展。于是安装php的gd扩展,然后在php.ini里开启该扩展。

使用如下命令安装gd扩展:

        sudo apt-get install php7.4-gd

安装好以后,修改/etc/php/7.4/apache2/php.ini和/etc/php/7.4/cli/php.ini,查找;extension=gd2,将该行前面的;去掉,开启php的gd扩展。

然后输入命令重启apache2。前面已使用过该命令,这里不再重复。在局域网里用其他电脑打开网址:树莓派ip/phpinfo.php,能看到php的gd扩展信息。打开电子商城网站,用户登录时能看到验证码。解决了该问题。

下面是几张图片。

1、次新操作系统的截屏图片。

2、旧操作系统的图片,用手机拍的。

3、在局域网里游览的电子商城网站

  • 7
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值