Linux实训——搭建动态网站

山东科技大学
信息工程系

内容说明:本篇文章是《嵌入式操作系统》实训报告的第三部分,使用WordPress实现了动态网站的搭建,使用php编写了学生信息管理系统的动态网页。
建议先阅读实训报告第二部分

《嵌入式操作系统》实训报告完整内容介绍:
第一部分:编译升级系统Linux内核
第二部分:搭建HTTP服务器
第三部分:搭建动态网站
完整实验报告PDF文件

三、构建一个简单的动态网站

3.1 实验原理

  LAMP是Web服务的经典模型,被命名为其原始四个开源组件的名称首字母缩写,分别为:Linux 操作系统Apache HTTP服务器MySQL 关系数据库管理系统PHP 编程语言。LAMP组件在很大程度上是可互换的,并且不限于原始选择,可以相互搭配。作为网站架构的解决方案,LAMP适用于在Linux上构建动态网站和Web应用程序。

3.2实验分析

  本次实验要求构建一个简单的动态网站。动态网站和静态网站最大的区别的在于,动态网站的页面是由服务器动态生成的,而静态网站的文件仅仅是存放于服务器上的独立的文件。动态网站以数据库技术为基础,在静态网站的基础上,还需要增加PHP解析和数据库支持。两种网站的具体区别见下表:

表-动态网页和静态网页的区别
1 静态网页 动态网页
特点 访问的是存放在服务器文件系统中实实在在的HTML文件 访问的是服务器根据当前时间、环境参数、数据库操作等动态的生成的页面,动态网页数据库技术为基础
开发技术 HTML、XML、CSS HTML+JavaScript(Node.js)
HTML+PHP
HTML+ASP.NET(或ASP)
HTML+JSP
扩展名 htm、html、shtml PHP、jsp
优势 网站更安全,HTML页面不会受Asp相关漏洞的影响;而且可以减少攻击,防SQL注入。数据库出错时,不影响网站正常访问。 不需要编译,所以速度快,节省服务器资源。网址格式友好,搜索引擎容易识别。 维护方便,能实现人们需要的各种需求。查询信息方便,能存储大量数据,需要时能立即查询。
不足 内容是固定的,交互性差,内容更新维护复杂。没有自动化的工具,维护大量的静态页面文件是不现实的。无法充分支持用户/客户的需求(外观选择,浏览器的支持,Cookie)。 动态网站用到数据库,所以对数据库的安全和保密性要求较高,要专业技术人员提供维护才能保证网站的安全。动态网站不利于搜索引擎收录。

  前面第二个实验中,已经在Ubuntu上搭建了HTTP服务器,安装了Apache软件,实现了静态网站的基本功能。在此基础上,若要实现动态网站,需要搭建服务器的LAMP模型。也就是需要安装MySQL和PHP,以实现动态网站的功能。

3.3 实验过程记录

3.3.1 安装PHP

3.3.1.1安装PHP软件及相关模块

  首先安装PHP7.0软件。
在这里插入图片描述

图 安装PHP软件

  现在虽然已经安装了PHP软件,但是Web 服务器还没有解析文件的能力,所以我们要给它装上一个扩展模块。也就是说给 Apache 加个扩展,以后 Apache 收到用户请求 PHP 文件的话,就会交给这个模块处理,在服务器处理完 PHP 文件再传送给用户。
在这里插入图片描述

图 安装PHP模块

  安装PHP和扩展模块时,出现上图所示的错误。经过查阅资料了解到,在标准Ubuntu Trusty软件库中,是不支持PHP7的,需要使用ppa添加该模块软件源。
在这里插入图片描述

图 解决方案

  按照资料的介绍,重新安装了PHP7.0。也许这个下载源不是国内的源,使我花费了很长时间才安装成功。此时再次尝试安装PHP模块,发现该模块已经成功安装。
在这里插入图片描述

图 模块安装成功

  现在PHP及其模块已经安装成功,接下来进行PHP功能测试。首先重启apache服务。
在这里插入图片描述

图 重启apache服务

  下面查看PHP版本。
在这里插入图片描述

图 查看PHP版本

3.3.1.2 测试PHP功能

  新建一个PHP文件,用来显示PHP信息,同时测试PHP解析功能能否正常使用。在网站根目录下,创建一个testphp.php文件,文件内容如下。
在这里插入图片描述

图 编辑PHP文件

在这里插入图片描述

图 PHP文件内容

  之后,使用虚拟机中的自带的Firefox浏览器,登录http://127.0.0.1/testphp.php进行PHP功能测试。
在这里插入图片描述

图 浏览器PHP测试信息

  显示该界面,说明PHP已经可以正确解析。

3.3.2 安装MySQL

  动态网页是以数据库为基础的,其数据由数据库储存和分配,所以动态网站的制作还需要安装MySQL数据库。
在这里插入图片描述

图 安装MySQL数据库

  MySQL 是基于C/S模型的,最好是同时安装server服务端和client客户端。安装过程中,并没有弹出窗口让我设置服务器密码(按理说应该会弹出窗口),现在尝试登录MySQL,出现了以下问题。
在这里插入图片描述

图 登录报错信息

  经过查阅资料,找到以下解决方法:
在这里插入图片描述

图 解决方案

  就是说,第一次安装登陆的时候,要加上sudo权限。登录进MySQL之后,有两种方式:一是更改root用户的密码,二是创建一个新的数据库用户。我采用第一种方式,试图更改root的密码。
在这里插入图片描述

图 更改root用户的密码

  重启MySQL服务之后,重新登陆MySQL,又出现错误。
在这里插入图片描述

图 登录报错信息

  再次查找资料,找到的解决方法如下:
在这里插入图片描述

图 解决方案

  就是说,在更新root密码的时候,还需要把root的plugin选项,设置为mysql_native_password才行。于是重新设置密码。由于整个解决过程篇幅较长,现只截取其中一部分图片。
在这里插入图片描述

图 解决过程

  解决密码问题之后,再次尝试登陆MySQL。
在这里插入图片描述

图 登录MySQL测试

  现在已经可以正常启动登录MySQL数据库了。

3.3.3 安装PHPMyAdmin

  在终端中开启MySQL,对数据库中的信息进行操作,只能显示命令行模式的数据库界面。为了能更加方便的使用数据库,需要下载PHPMyAdmin软件。该软件实现了对数据库的可视化操作,使得对数据库的操作可以更加便捷。使用下图所示的命令安装PHPMyAdmin
在这里插入图片描述

图 安装PHPMyAdmin软件

  安装时,不仅需要安装PHPmtadmin软件,还需要安装相关的配置。安装过程中,会弹出以下窗口,用来配置PHPMyAdmin。
在这里插入图片描述

图 服务器配置

  此步骤用于选择配置pypmyadmin使用于哪种服务器上,因此需要选择apache服务器。选择apache2并按回车以确定。
在这里插入图片描述

图 配置密码

  此步骤提示:请为PHPMyAdmin提供一个数据库服务器的密码,如果空着不填,则会随机生成一个密码。这里,我填写了与MySQL相同的密码:Zhanghoujin123。配置密码,保存退出即可完成配置。
  由于PHPMyAdmin的默认安装位置是/user/share目录,如果使用apache进行测试,则很不方便。为了方便测试和日常使用,需要创建PHPMyAdmin的软连接,把PHPMyAdmin目录,链接到HTTP服务器的根目录下,以便于测试和访问。然后重启apache模块。
在这里插入图片描述

图 软连接及重启服务器模块

  配置完成之后,打开Firefox测试PHPMyAdmin,出现了以下问题。
在这里插入图片描述

图 测试时出现的问题

  网上找到的解决方法为:
在这里插入图片描述

图 解决方案1

在这里插入图片描述

图 解决方案2

  经过查阅资料发现问题的原因是,我没有安装部分必要的模块,导致PHPMyAdmin配置出现了问题。通过查询资料,解决了该问题。现在重新打开PHPMyAdmin网页,可以看到以下界面。
在这里插入图片描述

图 PHPMyAdmin登录界面

  填写在安装MySQL时,配置的用户名和密码即可。登录进入PHPMyAdmin之后的界面如下:
在这里插入图片描述

图 PHPMyAdmin操作界面

  可以看到,PHPMyAdmin已经可以正常显示和使用。
  到目前为止,Ubuntu已经成功安装了LAMP架构,从而已经具备了创建动态网站的必备条件,接下来就可以进行动态网站的搭建了。
  对于动态网站的搭建,我没有什么经验,所以打算采用对技术小白非常友好的WordPress来搭建动态网页。

3.3.4用WordPress搭建动态网站

  WordPress是一个基于PHP和MySQL的免费开源的内容管理系统。其功能包括插件架构和模板系统。搭建个人博客是其最为广泛的应用,但它也支持其他类型的网络内容,包括传统的邮件列表和论坛,媒体画廊和在线商店。WordPress是目前非常受欢迎的网站管理系统。同时,由于其丰富的内容模板、简易的操作流程,和简洁的网站界面,颇受网站搭建的新手欢迎。

3.3.4.1 WordPress软件安装

  首先使用wget工具,下载WordPress官网的新版安装包,安装WordPress软件。
在这里插入图片描述

图 安装包下载过程

  安装解压软件并解压,使用zip工具进行解压。解压成功后,会在当前目录下,生成WordPress文件夹。
在这里插入图片描述

图 解压生成文件夹

3.3.4.2 创建数据库

  因为WordPress需要与MySQL数据库相关联,所以需要为WordPress配置相应的数据库。数据库中的数据用于储存WordPress网站的内容和配置信息。
在这里插入图片描述

图 为WordPress创建数据库

  其中包含了六条SQL语句,其分别的目的为:

  1. 为 WordPress 创建一个名为 wordpress 的数据库
  2. 为这个数据库设置一个用户为 wordpressuser
  3. 为这个用户配置一个密码为 Zhanghoujin123
  4. 为这个用户配置数据库的访问权限
  5. 生效这些配置
  6. 退出数据库

  现在去PHPMyAdmin页面,查看已有的数据库,可以看到已经创建了WordPress数据库。
在这里插入图片描述

图 创建数据库成功

3.3.4.3 配置WordPress

  现在,为WordPress创建的数据库已经准备好了。之后,需要继续配置WordPress,具体操作如下图中所示:
在这里插入图片描述

图 配置WordPress

  其中的主要操作的含义为:

  1. 由于PHP默认访问 /var/www/html/ 文件夹,所以需要把 WordPress 文件夹里的文件都复制到 /var/www/html/ 文件夹
  2. 修改一下 /var/www/html/ 目录权限
  3. 修改apache的默认索引网页文件。这一步是假设把WordPress中,所有的文件都拷贝到HTTP服务器的根目录的情况。如果是这种情况,那么HTTP根目录下会同时存在两个index文件,分别是apache的index.html和WordPress的index.php,我担心这样会有冲突,所以将index.html改名为了index~.html
    整个实验做完之后,再看这一步的操作,确实没有什么必要。直接将整个WordPress文件夹复制过来(图中所示)就可以。这样的话,在访问WordPress的时候,直接访问http://my_ip_addr/wordpress就可以了,这样也不会对apache的index产生影响。
  4. 重启 Apache 服务

3.3.4.4 初始化WordPress

  配置完成并重启之后,在浏览器中打开http://127.0.0.1/WordPress,将会自动跳转到WordPress初始化界面。
在这里插入图片描述

图 WordPress初始化界面

  该网页提示的大致意思是:欢迎安装WordPress,在开始之前我们需要一些数据库的信息,你需要知道以下信息:

  1. 数据库名
  2. 数据库用户名
  3. 数据库密码
  4. 数据库地址
  5. 配置表(如果你想在一个数据库中运行多个WordPress)
      我们会使用这些信息创建一个名为wp-config.php的文件。如果这个自动生成的文件没有奏效,不必担心。我们所做的所有这些,是将数据库信息写入配置文件中。你同样可以使用简易的文本编辑器打开wp-config.php文件,填上你的信息。
    有可能你的这些信息是被网站服务商托管的,如果你没有这些信息,你需要在继续设置之前,去联系他们获取信息。
    当然,我有这些信息。点击继续,进入到下一界面。

在这里插入图片描述

图 配置WordPress_1

  需要填写刚才提到的信息,上图是我已经填好了的。点击提交,进入下一界面。
在这里插入图片描述

图 配置WordPress_2

  现在提示:WordPress已经可以连接到数据库了,如果准备好了,可以去运行安装进程。现在点击运行安装,进入安装进程,出现以下界面。
在这里插入图片描述

图 配置WordPress_3

  这个界面提示需要填写一些必要的安装信息,包括站点标题、用户名、密码、邮箱、是否支持搜索引擎索引等。我填写的信息如上图所示。填写完成之后,点击安装WordPress。
在这里插入图片描述

图 配置WordPress_4

  安装完成后,出现上图的提示。点击登录,又弹出以下界面。
在这里插入图片描述

图 配置WordPress_5

  点击保存登录信息,然后登陆。终于出现了WordPress的后台管理界面!
在这里插入图片描述

图 WordPress后台管理界面

  现在去前台用户界面看看,访问http://127.0.0.1/WordPress,即可看到以下界面。
在这里插入图片描述

图 WordPress前台用户界面

  可以看到,现在这里只有一个默认生成的HelloWorld博客,为了测试后台服务器功能,下面我要在后台添加博客。

3.3.4.5 管理WordPress后台

  我在后台编写了一篇用于测试的博客,由于虚拟机中的Ubuntu未安装中文输入法,博客主要使用英文编写。
在这里插入图片描述

图 后台编写测试博客

  后台的编写界面如上图所示。编写完成后保存并发布,再去前台访问,看一下效果。
在这里插入图片描述

图 前台访问测试

  可以看到,刚刚编辑的网页已经可以在前台正常显示了。
  现在可以看一下数据库,刚刚创建的WordPress数据库里面已经创建了很多数据表。这些数据表是刚才配置WordPress时创建的,用于记录网站的各种动态数据。
在这里插入图片描述

图 数据库可视化查看

  至此,搭建动态网站的实验顺利完成。
  到现在为止,已经在虚拟机上搭建了LAMP架构,安装了WordPress软件并且经过了相关测试。然而现在所有的访问只能在虚拟机里,进行本地环回测试,外网不能访问到本地资源。为了能够实现公网访问,需要使用公网IP。我租用了阿里云的云服务器,在云服务器上重复实验三的步骤,搭建了LAMP架构,安装了WordPress软件。公网访问地址为:http://39.107.245.116/WordPress/,可供随时测试使用。

3.3.5 编写动态网站

3.3.5.1 编写PHP文件

  为了能够更加深入地体会动态网站的制作、对数据库的使用等问题,我尝试使用在阿里云中搭建好的LAMP架构,制作一个简易的学生信息管理动态网站。下面的PHP文件及网站制作过程参考了相关资料。
说明:此部分内容参考了PHP实现简单的学生信息管理系统(web版)博客,点击可访问。
  首先进入到HTTP服务器的根目录,即/var/www/http目录,创建一个名为student的文件夹,用来存放相关文件。
在这里插入图片描述

图 创建文件夹

  之后,在student目录下创建五个PHP文件,其功能见下表。

表-测试PHP文件及其功能表
文件 功能
index.php 负责首页展现
menu.php 负责前台的菜单实现
add.php 负责添加页面的实现
edit.php 负责编辑页面的实现
action.php 负责对增删查改等操作的实现

  其中,编写index.php的界面如下图所示,此界面是使用FinalShell对阿里云进行远程ssh访问,编写文件时的截图。
  在云服务器的使用过程中,通常会使用ssh工具,对服务器进行远程访问,也就是对服务器的某一端口(22号)进行访问通信。目前比较流行的ssh工具有XshellFinalShellPuttySecureCRT等。FinalShell是一体化的的服务器,网络管理软件,不仅是ssh客户端,还是功能强大的开发运维工具。本次实验过程中采用了FinalShell进行远程访问。
在这里插入图片描述

图 finalshell界面

3.3.5.2 创建数据库

  编写PHP文件完成之后,需要创建相应的数据库和数据表,并插入相关数据。接下来,通过finalshell,访问阿里云的MySQL数据库,为动态测试创建一个test数据库,在其中创建stu数据表,插入一条用于测试的信息。其中stu数据表需要包含idnamesexageclassid这五个字段,分别用于存放id标识姓名性别年龄班级
在这里插入图片描述

图 创建数据库并插入数据

  上图中,首先查看了现有的数据库,为了有效测试,新建了一个名为test的数据库。在该数据库中,创建stu数据表,同时插入了一条有效信息。提交更新后,退出数据库。

3.3.5.3 测试动态网页

  下面连接数据库,在浏览器中,访问http://39.107.245.116/student/,出现下图界面。
在这里插入图片描述

图 连接数据失败

  界面提示数据库连接失败,查找PHP文件中有关数据库连接的部分,发现问题原因是数据库密码未填写。
在这里插入图片描述

图 问题定位

  填写好密码之后,再次打开浏览器查看网页。
在这里插入图片描述

图 访问数据库

  可以看到,网站已经正确连接了数据库,但是姓名数据无法正常显示。在测试删除、修改等操作时,也出现了部分错误。于是重新创建新的test2数据表。重新浏览网页,出现以下界面。
在这里插入图片描述

图 显示界面

  现在学生数据全部不能正常显示了。重新仔细浏览PHP文件,找到了相关错误位置。
在这里插入图片描述

图 错误定位

  现在网页是默认查找stu数据表,并且查找表头为name的数据。所以之前会出现姓名不显示的现象。改正之后,重新打开浏览器访问。
在这里插入图片描述

图 访问测试界面

  点击修改,可以修改此条信息。
在这里插入图片描述

图 修改信息界面

  将ZhangHoujin修改为HoujinZhang,数据修改成功。
  现在测试增加学生信息,增加界面如下图所示。
在这里插入图片描述

图 增加学生信息界面

  更新显示现在的数据,界面如下图所示:
在这里插入图片描述

图 增改完成后的界面

  此时,在PHPMyAdmin中查看数据库信息。
在这里插入图片描述

图 数据库可视化查看

  可以看到,数据库也运行正常,其中的数据也是正确的。
  至此,简单的动态网页——学生数据库管理网站也已经制作完毕。其公网测试地址为:http://39.107.245.116/student/index.php

四、部分参考资料

  1. 如何通过Linux+Apache+MySQL+PHP搭建简单的动态网站HTTPs://blog.csdn.net/Mind_programmonkey/article/details/74717433
  2. 让我们一起来构建一个 Web 服务器(三)
    HTTPs://mozillazg.com/2015/08/let-us-build-a-web-server-part-3-zh-cn.html
  3. Ubuntu 下快速部署安装 Apache + PHP + MySQL + PHPMyAdmin 笔记
    HTTPs://zhuanlan.zhihu.com/p/25461483
  4. 搞一个网站:在Ubuntu搭建LAMP建站环境 HTTPs://zhuanlan.zhihu.com/p/24945130
  5. 网站搭建从零开始(五) WordPress的安装 HTTP://www.paincker.com/website-primer-5
  6. LAMP (software bundle) HTTPs://en.wikipedia.org/wiki/LAMP_(software_bundle)
  7. 静态网页与动态网页的区别 HTTPs://www.jianshu.com/p/649d2a0ebde5
  8. PHP实现简单的学生信息管理系统(web版) HTTPs://www.cnblogs.com/yuxiuyan/p/5754717.html
  9. ERROR 1698 (28000): Access denied for user ‘root’@‘localhost’ HTTPs://stackoverflow.com/questions/39281594/error-1698-28000-access-denied-for-user-rootlocalhost
  10. PHPMyAdmin - Error | The mbstring extension is missing. Please check your PHP configuration in Ubuntu 14.04 LTS
    HTTPs://stackoverflow.com/questions/35931418/PHPMyAdmin-error-the-mbstring-extension-is-missing-please-check-your-PHP-co
  11. Extension mysqli is missing, PHPMyAdmin doesn’t work HTTPs://stackoverflow.com/questions/10769148/extension-mysqli-is-missing-PHPMyAdmin-doesnt-work
  12. The mysqli|mysql extension is missing. Please check your PHP configuration
    HTTPs://askubuntu.com/questions/891490/the-mysqlimysql-extension-is-missing-please-check-your-PHP-configuration
  13. There can be only one auto column HTTPs://stackoverflow.com/questions/8645889/there-can-be-only-one-auto-column
发布了44 篇原创文章 · 获赞 25 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/ZHJ123CSDN/article/details/93090488