2019-11-01 18:20:55
围观(7198)
上次写了一篇文章 CentOS7安装LNMP环境 ,写完之后回过头来看其实有忽略了一些细节。
本文就再次记录使用 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 https://repo.mysql.com/mysql80-community-release-el7-1.noarch.rpm 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 的配置来自:浅析 Laravel 官方文档推荐的 Nginx 配置
配置完成后需要重启 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
常用命令
启动 PHP:
systemctl start php73-php-fpm
停止/关闭 PHP:
systemctl stop php73-php-fpm
重启 PHP:
systemctl restart php73-php-fpm
启动 MySQL:
systemctl start mysqld
停止/关闭 MySQL:
systemctl stop mysqld
重启 MySQL:
systemctl restart mysqld
开启 Nginx:
systemctl start nginx.service
停止/关闭 Nginx:
systemctl stop nginx.service
重启 Nginx:
systemctl restart nginx.service
VIM 编辑文件:
vim test.conf vim /etc/nginx/conf.d/test.conf
test.conf 是文件名。第二句命令为使用绝对路径,可在任何路径/目录下编辑指定路径的文件。
Nginx 常见错误
如果出现错误:
Job for nginx.service failed because the control process exited with error code. See "systemctl status nginx.service" and "journalctl -xe" for details.
可以执行命令查看详细错误信息:
systemctl status nginx.service
如果报错:
ExecStart=/usr/sbin/nginx (code=exited, status=1/FAILURE)
应该是端口被占用了,执行命令关闭占用端口的程序:
sudo fuser -k 80/tcp
还可以执行命令查看被占用的端口:
netstat -ntlp
本文地址 : bubaijun.com/page.php?id=145
版权声明 : 未经允许禁止转载!
上一篇文章: 学习使用docker搭建lnmp环境
下一篇文章: PHP发送电子邮件