zhoji 发表于 2020-11-30 00:09:59

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

本文就记录使用CentOS7安装Nginx还有PHP7.3及MySQL8.0 的过程。MySQL8.0安装好之后会有一些坑,导致PHP无法正常连接到数据库,本文也将这些解决方法梳理记录一下。安装 Nginxyum 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.0wget 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.3yum 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 协议默认的 端口。    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;    }   # 关闭 和 的访问日志。    # 并且即使它们不存在,也不写入错误日志。    location = /favicon.ico { access_log off; log_not_found off; }    location = /robots.txt{ access_log off; log_not_found off; }   # 将 错误交给 处理,表示由 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
页: [1]
查看完整版本: 在CentOS7中部署安装Nginx+PHP7.3+MySql8.0过程