首页 / 技术 / 正文

Linux(CentOS)搭建PHP+Nginx+MySQL环境教程

2020年01月31日 1 条评论 ... 技术 /

本次记录的教程是以 CentOS 7.7 版本为例。目的是搭建一个可以运行 WordPress 的 PHP 环境。

在 Linux 环境中搭建 PHP 环境,主流的使用的是三剑客 Php+Nginx+MySQL,Nginx 可以用 Apache 替代,各有优劣,个人比较喜欢 Nginx。协作内容很简单,Nginx 提供 web 服务,并将 php 相关的请求转到 PHP 环境中处理,PHP代码中使用的数据库,则直接进入到 MySQL 中进行。

安装 MySQL

如果直接使用 CentOS 默认的 yum 源来安装 MySQL 的话,即yum install mysql,你就会成功安装上 MariaDB ,至于 MariaDB 和 MySQL 之间的关系,感兴趣的可以自行去搜索一下,你甚至可以去体验一下,跟 MySQL 差距不大。但是这里需要安装 MySQL,需要如下操作:

添加 MySQL 的 yum 源

一句话来安装

rpm -Uvh https://repo.mysql.com//mysql80-community-release-el7-2.noarch.rpm

执行成功则安装 yum 源成功

选择要安装的版本

查看源中默认指向的版本

yum repolist all | grep mysql

返回结果

image

看得出来倒数第二行启用的是8.0版本(注意我们要的是 community社区版),在不确定自己的程序能向上兼容8.0的情况下,最好安装我想要的 5.7版本,所以禁用80,启用57:


yum-config-manager --disable mysql80-community
yum-config-manager --enable mysql57-community

执行语句如果报错 “yum-config-manager: 未找到命令”,则需要安装 yum-utils,执行:

yum-config-manager --enable mysql57-community>yum -y install yum-utils

进行安装

接下来开始安装

yum install mysql-community-server

然后等待下载安装就好了。

启动和查看密码

因为使用的 yum 安装,因此需要配置的地方不多,安装完成之后,可以使用 service 命令来启动关闭重启mysql。

启动 MySQL

service mysqld start

修改默认密码

获取安装mysql时的临时密码

grep 'temporary password' /var/log/mysqld.log 

复制这段密码,输入命令

mysql –uroot –p

使用临时密码登录

修改密码,密码要符合一定的强度才可以通过。

set password for root@localhost = password('新密码');

修改可以远程登录的权限

update db set host = '%' where user = '用户名'; 

百分号代表任何ip,之后刷新列表

flush privileges; 

PHP安装流程

这里选择安装 php 7.2 版本,毕竟据说  php7 还是蛮快的(未亲自验证)。CentOS 的 yum 源依然没有 php7.2 的内容,跟 MySQL 如出一辙

首先安装EPEL软件包:

yum install epel-release

然后安装源

rpm -Uvh http://rpms.remirepo.net/enterprise/remi-release-7.rpm

查看源的情况

yum repolist all|grep php72

返回结果如下:

image

看起来全都被禁用了,启用第一个

yum-config-manager --enable remi-php72

然后就是安装PHP和PHP相关的插件。

不要问装那些插件,问就是全都装(其实不知道为啥要装,非专业选手)

yum install php72 php72-php-fpm php72-php-gd php72-php-json php72-php-mbstring php72-php-mysqlnd php72-php-xml php72-php-xmlrpc php72-php-opcache

启动PHP7.2

同样是使用 service 命令来控制,比如启动

service php72-php-fpm start

安装Nginx

nginx 安装使用编译安装的方式,首先从官网下载安装包,这里选择目前的稳定版1.16。

wget https://nginx.org/download/nginx-1.16.1.tar.gz

如果提示 -bash: wget: 未找到命令 ,就安装一个 yum install wget

下载后解压缩

tar –zxvf nginx-1.16.1.tar.gz

进入到目录,然后安装,执行以下命令

./configure
make&&make install

如果报各种错误,应该是没有安装对应依赖,分别是

yum -y install gcc

yum install -y pcre pcre-devel

yum install -y zlib zlib-devel

yum install -y openssl openssl-devel

安装完成

启动nginx

进入到nginx的目录,/usr/local/nginx,启动nginx

./nginx

这时候访问主机的 IP 地址,就会显示nginx的欢迎页面。打不开检查一下防火墙。

配置Nginx与PHP关联

这个比较关键,也是难度比较高的部分

1.创建一个用户

这里创建的用户名是 www

2.修改php的文件

vi /etc/opt/remi/php72/php-fpm.d/www.conf

将文件修改如下内容:


user www
group www

修改完成重新启动php-fpm

service php72-php-fpm restart

3.修改nginx的配置

vi /usr/local/nginx/conf/nginx.conf

去掉 user 的注解,改为 www

user www

设置网站根目录

默认nginx会访问安装目录里面的 html 文件夹,如果需要修改,则需要修改 server 下的 root 项,改成绝对路径。

默认配置中有关于PHP的配置,找到如下代码并将注解去掉,

location ~ \.php$ {

            fastcgi_pass   127.0.0.1:9000;

            fastcgi_index  index.php;

            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;

            include        fastcgi_params;

        }

注意有些区别,fastcgi_param 部分有改动,注意也改一下,否则会出现400错误。

全文配置如下:

user  www;   
worker_processes  1;   
events {   
    worker_connections  1024;   
}  




http {   
    include       mime.types;   
    default_type  application/octet-stream;   
    sendfile        on;   
    keepalive_timeout  65;  


    server {   
        listen       80;   
        server_name  www.yelook.com;   
        root         /home/www/htdocs;  


        location / {   
            #root   html;   
            index  index.html index.htm index.php;   
            try_files $uri $uri/ /index.php?$args;   
        }  


        error_page   500 502 503 504  /50x.html;   
        location = /50x.html {   
            root   html;   
        }  


        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000   
        #   
        location ~ \.php$ {   
            fastcgi_pass   127.0.0.1:9000;   
            fastcgi_index  index.php;   
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;   
            include        fastcgi_params;   
        }   
    }   
}   

重启Nginx,进入nginx程序目录

./nginx –s reload

然后就在root指定的目录中创建测试文件 index.php

<?php phpinfo();

不出意外的话会看到正常的php信息页面。(如果出现 access denied 可以关注一下 SELinux status 相关的信息)

image

1 条评论

Loading...
  1. testkkk

    修改为可以远程登录的语句之前 少了一步:
    use mysql;

    2020-11-28 [回复]

发布评论