我一定写了一个假的技术博客
当前位置: 首页>> 技术宅 >> 正文

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 -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错误。

全文配置如下:

  1. user  www;   
  2. worker_processes  1;   
  3. events {   
  4.     worker_connections  1024;   
  5. }  
  6.  
  7.  
  8. http {   
  9.     include       mime.types;   
  10.     default_type  application/octet-stream;   
  11.     sendfile        on;   
  12.     keepalive_timeout  65;  
  13.  
  14.     server {   
  15.         listen       80;   
  16.         server_name  www.yelook.com;   
  17.         root         /home/www/htdocs;  
  18.  
  19.         location / {   
  20.             #root   html;   
  21.             index  index.html index.htm index.php;   
  22.             try_files $uri $uri/ /index.php?$args;   
  23.         }  
  24.  
  25.         error_page   500 502 503 504  /50x.html;   
  26.         location = /50x.html {   
  27.             root   html;   
  28.         }  
  29.  
  30.         # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000   
  31.         #   
  32.         location ~ \.php$ {   
  33.             fastcgi_pass   127.0.0.1:9000;   
  34.             fastcgi_index  index.php;   
  35.             fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;   
  36.             include        fastcgi_params;   
  37.         }   
  38.     }   
  39. }   

 

重启Nginx,进入nginx程序目录

./nginx –s reload

 

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

  1. <?php     
  2.     phpinfo(); 

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

image

版权保护: 本文由 唐野 原创,转载请保留链接: http://www.yelook.com/2320.html

1 条吐槽

Loading...
  1. testkkk

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

    2020-11-28 [回复]

发布评论