Linux实验:PHP+Nginx+MySQL部署Web环境

题目要求

使用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版本,其他版本的安装和配置可能有所变化。

MySQL的安装和配置

详见博客《Linux实验:MySQL的安装和配置》。

安装PHP

yum –y install php

# 查看PHP版本,以检查是否安装成功
php -v

添加Nginx源后安装Nginx

# 下载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源可供选择和下载。

修改Nginx默认端口

# 修改配置文件/etc/nginx/conf.d/default.conf
vi /etc/nginx/conf.d/default.conf 

# 按下i键进入编辑模式,并将server模块中listen指向的端口80改成88
# 按下esc键退出编辑模式

# 保存并退出文件
:wq

此处修改Nginx默认端口的原因是本人Linux服务器的80端口被占用了。

开放Nginx端口

# 重启防火墙,以保证防火墙一定是开启的
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登陆》中代码实现部分的注意事项。

开放HTTP服务

# 重启防火墙,以保证防火墙一定是开启的
systemctl restart firewalld

# 在防火墙添加服务http且设置永久开启
firewall-cmd --zone=public --add-service=http --permanent

# 重新加载防火墙,使上一步操作生效
firewall-cmd --reload

# 查看http服务是否开放
firewall-cmd --query-service http

此步是为了让Linux云服务器IP能被外网访问。

启动Nginx服务并访问Nginx网页

# 重启Nginx服务,不用start用restart是为了避免读者之前启动过Nginx服务且没有关闭
systemctl restart nginx

# 检查Nginx服务的运行状态,有running字样说明启动成功
systemctl status nginx

# 设置Nginx服务开机自启动,此步为防止以后重启了Linux后使用Nginx前忘记启动服务,读者视自身情况选择是否执行本命令
systemctl enable nginx

# 在浏览器输入IP:88访问Nginx网页

安装PHP-FPM并启动该服务

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概念和区别》。

修改Nginx配置文件使其能运行PHP文件

# 修改配置文件/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文件

# 新建PHP文件MyPHP.php
vi /usr/share/nginx/html/MyPHP.php 

# 按下i键进入编辑模式,输入以下内容以显示PHP配置信息:
<?php
phpinfo();  
?>
# 按下esc键退出编辑模式

# 保存并退出文件
:wq

# 在浏览器输入IP:88/MyPHP.php访问PHP网页

安装php-mysql使得PHP文件能访问MySQL

yum -y install php-mysql

# 重启PHP-FPM服务
systemctl restart php-fpm

修改PHP文件并访问

# 修改PHP文件MyPHP.php
vi /usr/share/nginx/html/MyPHP.php 

# 按下i键进入编辑模式,输入以下内容实现题目要求:
<?php 
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"]. "<br/>";
        }
} else {
        echo "0 个结果";
}
// 关闭连接
$conn->close();
?>

PHP连接MySQL语法参考《PHP MySQL 简介 | 菜鸟教程》。

# 按下esc键退出编辑模式

# 保存并退出文件
:wq

# 在浏览器输入IP:88/MyPHP.php访问PHP网页

如果文章内容出错或者您有更好的解决方法,欢迎到评论区指正和讨论!

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值