在CentOS7中部署安装Nginx+PHP7.3+MySql8.0过程


本文就记录使用CentOS7安装Nginx还有PHP7.3及MySQL8.0 的过程。MySQL8.0安装好之后会有一些坑,导致PHP无法正常连接到数据库,本文也将这些解决方法梳理记录一下。

安装 Nginx

yum install nginx -y

安装之后可以到目录:/etc/nginx 使用 VIM 编辑 nginx.conf 配置文件。

例如,可以去除对 IPV6 地址的监听:

server {
    listen 80 default_server;
    #listen [::]:80 default_server;   #这句代码最前面加个#号即可去掉 IPV6 的监听
    server_name  _;
    root         /usr/share/nginx/html;
}

此时已经完成最基本的 Nginx 配置,可开启 Nginx 服务:

nginx

此时,可访问服务器外网 IP 地址来确认是否已经安装成功。安装成功会正常显示网页,否则会出现无法打开。

设置 Nginx 为开机自启:

systemctl enable nginx.service

安装 MySQL8.0

wget 
rpm -ivh mysql80-community-release-el7-1.noarch.rpm

执行安装命令:

yum install mysql-server -y

安装完成后开启 MySQL:

systemctl start mysqld

设置开机自启:

systemctl enable mysqld.service

由于 MySQL 的安全策略,安装完成后有一个随机的默认密码。可以使用命令查看这个密码:

cat /var/log/mysqld.log | grep "generated for root@localhost"

此时会返回默认的随机密码,如:

A temporary password is generated for root@localhost: ******

返回的 ****** 就是你的随机密码了。

此时有一个坑,使用默认的这个账号,即 root 加默认随机密码配置到 PHP 中,是无法正常连接数据库的。例如报错:

php Authentication plugin 'caching_sha2_password' cannot be loaded: /usr/lib64/mysql/plugin/caching_sha2_password.so: cannot open shared object file: No such file or directory

这是因为 MySQL8.0 的新特性。安全策略问题,默认的密码验证插件从以前的 mysql_native_password 改成了 caching_sha2_password。

所以解决方法就是,设置 MySQL8.0 的默认密码验证插件。

先进入到目录:/etc 使用 VIM 编辑 my.cnf 文件。在文件中加入一句代码:

default_authentication_plugin=mysql_native_password

完成编辑后需要重启一下 MySQL:

systemctl restart mysqld

然后使用 root 账号创建新用户并授权,执行命令:

mysql -u root -p

执行命令后需要输入密码,这个密码就是默认的随机密码。本文上方有方法查看。

进入到 MySQL 后,需要修改 root 账号的默认随机密码。执行命令修改:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'Passbubaijun.com99&&';

注意:密码必须有数字+大写字母+小写字母+字符,不然会报错。

修改密码后可执行命令创建一个新用户:

create user 'bubaijun_com'@'localhost' identified by 'Passbubaijun.com99&&';

其中,bubaijun_com 是用户名,Passbubaijun.com99&& 是密码。

完成创建新用户后,还需要给该用户授权:

grant all on *.* to 'bubaijun_com'@'localhost' with grant option;

完成后可使用命令退出 MySQL:

exit

此时,PHP 中配置该用户及密码即可正常连接数据库。

安装 PHP

安装 EPEL 源:

yum install epel-release

安装 REMI 源:

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

安装 Yum 源管理工具:

yum install yum-utils

安装 PHP7.3

yum install -y php73-php-fpm php73-php-cli php73-php-bcmath php73-php-gd php73-php-json php73-php-mbstring php73-php-mcrypt php73-php-mysqlnd php73-php-opcache php73-php-pdo php73-php-pecl-crypto php73-php-pecl-mcrypt php73-php-pecl-geoip php73-php-recode php73-php-snmp php73-php-soap php73-php-xmll

设置开机自启:

systemctl enable php73-php-fpm

启动PHP:

systemctl start php73-php-fpm

配置及运行一个网站

进入目录:/etc/nginx/conf.d 使用 VIM 编辑 test.conf 文件(使用 VIM 命令,不存在则会自动创建文件)

server {
    # 监听 HTTP 协议默认的 [80] 端口。
    listen 80;
    # 绑定主机名(域名)。
    # server_name bubaijun.com;
    # 站点根目录。
    root /usr/share/php;
 
    # 添加几条有关安全的响应头;与 Google+ 的配置类似,详情参见文末。
    add_header X-Frame-Options "SAMEORIGIN";
    add_header X-XSS-Protection "1; mode=block";
    add_header X-Content-Type-Options "nosniff";
 
    # 站点默认页面;可指定多个,将顺序查找。
    index index.html index.htm index.php;
 
    # 指定字符集为 UTF-8
    charset utf-8;
 
    # Laravel 默认重写规则;删除将导致 Laravel 路由失效且 Nginx 响应 404。
    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }
 
    # 关闭 [/favicon.ico] 和 [/robots.txt] 的访问日志。
    # 并且即使它们不存在,也不写入错误日志。
    location = /favicon.ico { access_log off; log_not_found off; }
    location = /robots.txt  { access_log off; log_not_found off; }
 
    # 将 [404] 错误交给 [/index.php] 处理,表示由 Laravel 渲染美观的错误页面。
    error_page 404 /index.php;
 
    # URI 符合正则表达式 [.php$] 的请求将进入此段配置
    location ~ .php$ {
        # 配置 FastCGI 服务地址,可以为 IP:端口,也可以为 Unix socket。
        fastcgi_pass 127.0.0.1:9000;
        # 配置 FastCGI 的主页为 index.php。
        fastcgi_index index.php;
        # 配置 FastCGI 参数 SCRIPT_FILENAME 为 $realpath_root$fastcgi_script_name。
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        # 引用更多默认的 FastCGI 参数。
        include fastcgi_params;
    }
    # 以上配置将所有 URI 以 .php 结尾的请求,全部交给 PHP-FPM 处理。
 
    # 除符合正则表达式 [/.(?!well-known).*] 之外的 URI,全部拒绝访问
    # 也就是说,拒绝公开以 [.] 开头的目录,[.well-known] 除外
    location ~ /.(?!well-known).* {
        deny all;
    }
}

配置完成后需要重启 Nginx:

systemctl restart nginx.service

进入目录 /usr/share/php 使用 VIM 命令编辑 test.php 并写入代码:

<?php    phpinfo();

再回到目录 /etc/nginx 使用 VIM 打开 nginx.conf 文件。将 server 代码段全部删掉。

此时解析域名后访问域名或服务器外网 IP + test.php 即可看到 PHP 的信息。

至此,整个环境的配置已经完成。如果无法访问,而且是使用阿里、腾讯等 IDC 请到安全组看看是否配置端口。

安装 Composer

除此之外,如果需要用到 Composer 则需要另外安装了。执行命令:

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"php composer-setup.php

执行两句命令后即可使用 Composer.

如果安装过程中出现报错:

-bash: php: command not found

说明 PHP 的环境变量没设置,可以通过 test.php 也就是 phpinfo() 函数 查看 PHP 安装路径。比如我的路径是 /opt/remi/php73/root/usr 那就可以执行以下命令设置环境变量:

export PATH=$PATH:/opt/remi/php73/root/usr/bin

设置后还需要执行命令使配置生效:

source /etc/profile

本文来自不败君博客【 点击查看原文链接



版权声明

本文作者 不败君 / 文章来源: 不败君博客

本文链接https://www.shaosiming.net/jskz/phpmysql/28.html

转载分享:如果你要转载或者分享本篇文章,请注明作者/出处以及原文链接即可!

侵权行为:如果文章内容侵犯了您的权益,还请麻烦来信告知删除内容。


发表评论

检测到您还未登录,需要登录后才能发表评论!

注册 or 登录

文章评论 1 条评论,你也快来参与吧!

tiamo:可以的 楼主写的很细 厉害了!

2020-09-30

回复TA

博主业务范围

- Job requirements accepted by bloggers -

img

- 网站建设 -

提供一站式建站服务
服务器/域名/程序/备案全包

联系博主
img

- 布局调整 -

优化CSS构架布局
主要针对前端页面美化

联系博主
img

- 模板制作 -

图转HTML/仿站/原创
支持套入市场主流程序

联系博主
img

- 定制服务 -

提供私人专项定制服务
疑难杂症问题解决

联系博主