在服务器CentOS7下搭建php环境,实现数据库访问及公网访问

由于本人没学过php,此次文章仅用于记录我此次实验如何一步步搭建php,访问数据库并实现公网访问,如果和我一样是新手的可以按照下面教程,应该不会出错。(如果有错,可以指出来讨论一下,谢谢!)

目录

1、安装httpd 

2、安装php

 3、安装nginx

4、安装php-fpm

5、让nginx可以执行php

6、创建数据库

详情请看链接:Linux配置MySql数据库

7、安装php-mysql

8、PHP连接mysql数据库

9、错误日志文件

10、添加开机自启动

11、需要注意的一些点

11.1 防火墙问题

11.2 第八步连接问题PHP Fatal error:  Call to undefined function mysqli_connect()


1、安装httpd 

下载安装

yum install -y httpd

 启动服务(注意:这里一定要开启服务,否则后面可能就会出错)

//开启服务
systemctl start httpd.service
//查看服务状态
service httpd status

2、安装php

    在安装之前,我们可以查看是否已经安装php了

在命令行输入

php -v

如果提示命令不存在,则表示没有安装,否则,我们先卸载掉php,然后在重新安装(以免出错)

yum remove -y php 

然后再下载php

yum install -y php

然后就进行测试,编辑php首页

cd /var/www/html
vi index.php

按下键盘字母【i】进行编辑,在文件里输入下面内容

<?php
  phpinfo();
?>

然后保存文件,通过curl 命令达到浏览器访问的效果(如果成功返回的会是页面的html代码),或者直接在浏览器上输入自己的公网ip地址(注:这里省略的端口号为80,且httpd服务一定要记得打开,否则就会提示拒绝访问)

curl localhost

如果是执行命令的话,只要出现一大长串的html代码,且里面包括php的,一般就是成功了,如果是浏览器访问,出现下面页面表示成功

 3、安装nginx

添加资源库(新建文件)

vi /etc/yum.repos.d/nginx.repo

在文件内输入下面内容

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1

下载安装

yum install -y nginx

由于nginx的端口号默认为80,为了避免冲突,所以这里需要修改一下nginx的端口

先查看nginx的配置文件

nginx -t

 查看/etc/nginx/nginx.conf文件,发现里面没有端口信息,但是却包含了另一个配置文件目录/etc/nginx/conf.d/,故执行

cd /etc/nginx/conf.d/
ls

编辑文件

vi default.conf

 原来下面的listen是80,我改成了88(根据自己需要改变端口,只要不会和其他的冲突就行)

 开启服务

service nginx start

测试是否成功

curl localhost:88

 或者浏览器输入公网ip:88,显示下面页面

注:如果不可以,看看是不是防火墙的问题,详情请看第10步。

4、安装php-fpm

何为php-fpm ?

php-fpm即php-Fastcgi Process Manager。
php-fpm是 FastCGI 的实现,并提供了进程管理的功能。
进程包含 master 进程和 worker 进程两种进程。
master 进程只有一个,负责监听端口,接收来自 Web Server的请求,
而 worker 进程则一般有多个(具体数量根据实际需要配置), 每个进程内部都嵌入了一个 PHP 解释器,是 PHP代码真正执行的地方。

也就是说想要执行PHP文件,必须下载这个工具

查看自己是否安装了php-fpm

php-fpm -v

出现上面这样子代表已安装,可以先卸载在安装(以免出错,我就是在这一步,由于前一次安装后似乎改了什么,导致后面数据库访问出错,然后重新卸载安装一次就好了)

卸载

yum remove -y php-fpm

下载安装

yum install -y php-fpm.x86_64

开启服务

service php-fpm start

5、让nginx可以执行php

修改配置

vi /etc/nginx/conf.d/default.conf

 将下面location前面的注释去掉,并修改root的路径(修改前)

修改后

 

 注:需要保证root 和fastcgi_parm 的路径一样。root 指能被外网访问的php 文件的存放路径。

使用nginx -t 命令可以查看nginx 的配置文件是否有错误:

nginx -t

无误后重启服务

service nginx restart

测试公网访问php

cd /usr/share/nginx/html/

新建文件

vi test.php

添加文件内容

<?php
   phpinfo();
?>

执行命令

curl localhost:88/test.php

 或者浏览器输入公网ip:88/test.php

 出现上面的结果就代表成功了

6、创建数据库

这里用的是mysql数据库

详情请看链接:Linux配置MySql数据库

7、安装php-mysql

这个的作用就有点类似于java里面的mysql-connector-java.jar 包,让php与mysql进行连接

下载安装

yum -y install php-mysql

启动服务

systemctl restart php-fpm

8、PHP连接mysql数据库

在nginx 的php 目录下新建一个php 文件:

vi /usr/share/nginx/html/mysqlTest.php

在文件内添加内容

<?php
header("Content-type: text/html;charset=utf-8");

$servername = "127.0.0.1";   //这里我输入localhost或者公网ip都会出错,原因暂时不详
$username = "root";    //用户名
$password = "123456";    //密码
$dbname = "test";    //数据库名
$conn = mysqli_connect($servername, $username, $password, $dbname);
if(!$conn){
die("Connection failed: " . mysqli_connect_error());
}

$conn->query("set character set 'utf8'");
$sql = "select * from test";   //表名
$result = $conn->query($sql);
if($result == false){
die("query error!");
}

if($result->num_rows > 0){
  while($row = mysqli_fetch_array($result)){
    echo "通过php读取数据库:" . $row["name"] ;   //列名,那个【.】表示连接两个字符串
  }
}
else{
  echo "no message!";
}

$conn->close();

?>

保存退出

进行连接测试

curl localhost:88/mysqlTest.php

输出正确就成功了,注:如果没输出,可以看看是不是没有开启php-fpm服务,详情请看第七步

或者在浏览器输入公网ip:88/mysqlTest.php,运行结果如下

成功!!!

9、错误日志文件

nginx 的错误日志文件:/var/log/nginx/error.log
mysql 的错误日志文件: /var/log/mariadb/mariadb.log
php-fpm 的错误日志文件:/var/log/php-fpm/www-error.log
apache 的错误日志文件: /var/log/httpd/error_log
若在环境配置过程中出现什么差错,可以查看以上日志文件进行错误检查。

10、添加开机自启动

我们在用的过程中,难免会遇到由于某些原因或不可抗因素将服务器关机/被迫关机,这个时候再次开机,就得重新打开上面的httpd、nginx以及php-fpm,比较麻烦,所以设置一下开机自启动,就会方便多了。

相关命令(以httpd为例)
1.查看所有系统服务(即开机服务)

systemctl list-units --all --type=service


2.查询服务状态

systemctl status httpd.service


3.查询服务是否为开机启动

systemctl is-enabled httpd.service


enabled是 disabled否

4.设置服务为开机启动状态

systemctl enable httpd.service


然后就会自动创建一个系统链接(系统提示如下)

Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.

5.设置服务为开机不启动状态

systemctl disable httpd.service

然后就会自动移除系统链接(系统提示如下)

Removed symlink /etc/systemd/system/multi-user.target.wants/httpd.service.

所以就可以将上面三个服务设置开机自启动,命令如下:

systemctl enable httpd.service
systemctl enable nginx.service
systemctl enable php-fpm.service

 然后重启一下服务器就行了。

11、需要注意的一些点

11.1 防火墙问题

在上面的一整些过程,要么就把防火墙关闭,要么就把需要用到的端口添加到防火墙

关闭防火墙:

systemctl stop firewalld

查看防火墙中是否已经开放xx 端口(以8080端口为例):

firewall-cmd --query-port=8080/tcp

如果8080端口没有开放则,输入以下命令

firewall-cmd --permanent --add-port=8080/tcp
//重启防火墙,使修改生效
firewall-cmd --reload

11.2 第八步连接问题PHP Fatal error:  Call to undefined function mysqli_connect()

我在运行第八步,访问php文件的时候,啥都没输出,查看日志文件/var/log/php-fpm/www-error.log,发现了下面的问题

PHP Fatal error:  Call to undefined function mysqli_connect() in /usr/share/nginx/html/mysqltest.php on line 8

最后发现,重新安装一下php-fpm就可以了,详情请看第4步。

参考链接:参考链接1

                  参考链接2

                 

猜你喜欢

转载自blog.csdn.net/hmq1350167649/article/details/106674527