使用SSH客户端(如SecureCRT)远程连接Linux操作系统,使用动态开发语言PHP和Web服务器Nginx搭建网页运行环境,并实现从MySQL中读取学生学号和姓名信息到页面中显示。
要求分别在本地和云端操作成功,云端的网页能被外网访问。
本地操作系统:Windows 10
本地虚拟机运行平台:VMware Workstation Pro 14
本地虚拟机镜像:CentOS-7-x86_64-Minimal-1908.iso
云服务器提供商:阿里云计算有限公司
Linux发行版本及版本号:CentOS 7.6 64位
SecureCRT
本人安装的是PHP 5.4.16和Nginx 1.18.0版本,其他版本的安装和配置可能有所变化。
详见博客《Linux实验:MySQL的安装和配置》。
yum –y install php
# 查看PHP版本,以检查是否安装成功
php -v
# 下载Nginx的rpm软件包
rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
yum –y install nginx
# 查看Nginx版本,以检查是否安装成功
nginx -v
网址http://nginx.org/packages有许多Nginx源可供选择和下载。
# 修改配置文件/etc/nginx/conf.d/default.conf
vi /etc/nginx/conf.d/default.conf
# 按下i键进入编辑模式,并将server模块中listen指向的端口80改成88
# 按下esc键退出编辑模式
# 保存并退出文件
:wq
此处修改Nginx默认端口的原因是本人Linux服务器的80端口被占用了。
# 重启防火墙,以保证防火墙一定是开启的
systemctl restart firewalld
# 在防火墙添加端口88且设置永久开启
firewall-cmd --zone=public --add-port=88/tcp --permanent
# 重新加载防火墙,使上一步操作生效
firewall-cmd --reload
# 查看88端口是否开放
firewall-cmd --zone=public --query-port=88/tcp
如果是Linux云服务器,则还要在阿里云服务器控制台增加端口为88的安全组规则,才能保证Nginx服务能被访问。具体操作请看博客《Linux脚本编程:sudo命令下安装ssh服务并自定义端口和允许root登陆》中代码实现部分的注意事项。
# 重启防火墙,以保证防火墙一定是开启的
systemctl restart firewalld
# 在防火墙添加服务http且设置永久开启
firewall-cmd --zone=public --add-service=http --permanent
# 重新加载防火墙,使上一步操作生效
firewall-cmd --reload
# 查看http服务是否开放
firewall-cmd --query-service http
此步是为了让Linux云服务器IP能被外网访问。
# 重启Nginx服务,不用start用restart是为了避免读者之前启动过Nginx服务且没有关闭
systemctl restart nginx
# 检查Nginx服务的运行状态,有running字样说明启动成功
systemctl status nginx
# 设置Nginx服务开机自启动,此步为防止以后重启了Linux后使用Nginx前忘记启动服务,读者视自身情况选择是否执行本命令
systemctl enable nginx
# 在浏览器输入IP:88访问Nginx网页
yum –y install php-fpm.x86_64
# 重启PHP-FPM服务,不用start用restart是为了避免读者之前启动过PHP-FPM服务且没有关闭
systemctl restart php-fpm
# 检查PHP-FPM服务的运行状态,有running字样说明启动成功
systemctl status php-fpm
# 设置PHP-FPM服务开机自启动,此步为防止以后重启了Linux后使用PHP-FPM前忘记启动服务,读者视自身情况选择是否执行本命令
systemctl enable php-fpm
PHP-FPM(FastCGI Process Manager:FastCGI进程管理器)是一个PHPFastCGI管理器。在Linux上搭建Nginx和PHP环境,需要安装PHP-FPM模块,让PHP能以FastCGI的方式与Nginx进行交互。
参考博客:《CGI、FastCGI和php-fpm概念和区别》。
# 修改配置文件/etc/nginx/conf.d/default.conf
vi /etc/nginx/conf.d/default.conf
# 按下i键进入编辑模式,进行以下操作:
# (1)取消文件中location ~ \.php$模块的注释
# (2)将该模块中root指向的PHP文件路径和fastcgi_param后面的/scripts修改为/usr/share/nginx/html
# 按下esc键退出编辑模式
# 保存并退出文件
:wq
# 查看修改后的Nginx配置文件是否有误
nginx –t
# 重启Nginx服务
systemctl restart nginx
# 新建PHP文件MyPHP.php
vi /usr/share/nginx/html/MyPHP.php
# 按下i键进入编辑模式,输入以下内容以显示PHP配置信息:
<?php
phpinfo();
?>
# 按下esc键退出编辑模式
# 保存并退出文件
:wq
# 在浏览器输入IP:88/MyPHP.php访问PHP网页
yum -y install php-mysql
# 重启PHP-FPM服务
systemctl restart php-fpm
# 修改PHP文件MyPHP.php
vi /usr/share/nginx/html/MyPHP.php
# 按下i键进入编辑模式,输入以下内容实现题目要求:
header("Content-type:text/html;charset=utf-8"); // 设置网页编码以识别中文
$servername = "localhost";
$username = "用户名";
$password = "密码";
$dbname = "数据库名";
// 创建连接
$conn = new mysqli($servername, $username, $password, $dbname);
// 检测连接
if ($conn->connect_error) {
die("连接失败: " . $conn->connect_error);
}
$conn->query("set character set 'utf8'"); // 设置编码以识别中文
$sql = "SELECT * FROM 数据表名";
$result = $conn->query($sql);
if ($result->num_rows > 0) { // 输出每行数据
while($row = $result->fetch_assoc()) {
echo "学号: ". $row["id"]. " - 姓名: ". $row["name"]. "
";
}
} else {
echo "0 个结果";
}
// 关闭连接
$conn->close();
?>
PHP连接MySQL语法参考《PHP MySQL 简介 | 菜鸟教程》。
# 按下esc键退出编辑模式
# 保存并退出文件
:wq
# 在浏览器输入IP:88/MyPHP.php访问PHP网页
如果文章内容出错或者您有更好的解决方法,欢迎到评论区指正和讨论!