前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Centos7/8 安装Nginx PHP7.X Mysql8.0

Centos7/8 安装Nginx PHP7.X Mysql8.0

作者头像
逍遥子大表哥
发布2021-12-27 09:30:22
8440
发布2021-12-27 09:30:22
举报
文章被收录于专栏:kali blog

关于这方面的教程可以说是一搜一大把,但都有点缺陷,在实际操作中各种坑,为了少踩坑。本文将为新手呈上最为全面的搭建教程。

安装环境

  • Nginx1.2
  • PHP7.x
  • Mysql8.0

安装Nginx

添加 CentOS 7 EPEL 存储库,请运行以下命令:

代码语言:javascript
复制
yum install epel-release

安装Nginx

代码语言:javascript
复制
yum install nginx

启动 Nginx 服务

代码语言:javascript
复制
systemctl start nginx

开机启动

代码语言:javascript
复制
sudo systemctl enable nginx

安装Mysql8.0

添加mysql库

代码语言:javascript
复制
yum localinstall https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm

安装mysql

代码语言:javascript
复制
yum --enablerepo=mysql80-community install mysql-community-server

启动mysql

代码语言:javascript
复制
systemctl start mysqld.service

修改root密码

因为在mysql8中,在安装数据库时会设置默认密码。我们可以利用下面命令查看默认密码

代码语言:javascript
复制
grep 'A temporary password is generated for root@localhost' /var/log/mysqld.log |tail -1

初始化数据库

代码语言:javascript
复制
sudo mysql_secure_installation

这里会提示输入root的密码,即上一步获得的默认密码。然后从新输入root密码,一路输Y即可。

不知道为什么,修改后程序不能连接登录。用下面命令重新修改root密码。

代码语言:javascript
复制
mysql -u root -p
use mysql;
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'youpassword';
systemctl restart mysqld #重启MySQL

安装 PHP

安装 Remi 存储库

代码语言:javascript
复制
yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm

检查 Remi 存储库中可用的 PHP 7+ 版本

代码语言:javascript
复制
yum --disablerepo="*" --enablerepo="remi-safe" list php[7-9][0-9].x86_64

你会看到这样的输出

代码语言:javascript
复制
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * remi-safe: mirrors.ukfast.co.uk
Available Packages
php70.x86_64                                              2.0-1.el7.remi                                       remi-safe
php71.x86_64                                              2.0-1.el7.remi                                       remi-safe
php72.x86_64                                              2.0-1.el7.remi                                       remi-safe
php73.x86_64                                              2.0-1.el7.remi                                       remi-safe
php74.x86_64                                              1.0-3.el7.remi                                       remi-safe
php80.x86_64                                              1.0-3.el7.remi  

启用相应的 PHP 版本(这里以7.4为例)

代码语言:javascript
复制
sudo yum-config-manager --enable remi-php74

安装php

代码语言:javascript
复制
yum -y install php php-mysqlnd php-gd php-xml php-mbstring php-ldap php-pear php-xmlrpc php-zip php-cli php-fpm php-gd php-mysqlnd php-mbstring php-opcache php-pdo php-json

配置文件

配置php-fpm文件

vim /etc/php-fpm.d/www.conf

usergroup变量默认为apache。我们需要将这些更改为nginx

找到listen php-fpm将通过 TCP 侦听特定主机和端口。我们想要更改此设置,使其侦听本地套接字文件,因为这会提高服务器的整体性能。

代码语言:javascript
复制
listen = /var/run/php-fpm/php-fpm.sock;

最后,我们需要更改我们刚刚在listen指令中定义的套接字文件的所有者和组设置。找到listen.owner,listen.grouplisten.mode指令。这些行默认被注释掉。通过删除;行开头的前置符号来取消注释。然后,将所有者和组更改为nginx

代码语言:javascript
复制
listen.owner = nginx
listen.group = nginx
listen.mode = 0660

最后重启php-fpm

代码语言:javascript
复制
systemctl start php-fpm

配置 Nginx 以处理 PHP

目前的配置是无法访问php文件,我们还需要简单的配置下。

Nginx 有一个专用目录,我们可以在其中使用服务器块将每个托管网站定义为单独的配置文件。这类似于 Apache 的虚拟主机。

在默认安装中,此目录为空。我们将创建一个新文件作为此服务器上的默认 PHP 网站,它将覆盖/etc/nginx/nginx.conf文件中定义的默认服务器块。

/etc/nginx/conf.d目录中打开一个新文件

代码语言:javascript
复制
vim /etc/nginx/conf.d/default.conf
#内容如下:
server {
    listen       80; #端口 可自行修改 如8080
    server_name  192.168.x.x; #没有域名的话直接填写公网IP或内网IP

    root   /var/www/html; #网站路劲
    index index.php index.html index.htm;

    location / {
        try_files $uri $uri/ =404;
    }
    error_page 404 /404.html;
    error_page 500 502 503 504 /50x.html;

    location = /50x.html {
        root /var/www/html; #网站路劲
    }
#php配置部分
    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

重新启动 Nginx 以应用更改:

代码语言:javascript
复制
sudo systemctl restart nginx

配置网站目录用户组和权限

因为目前php和nginx都是以nginx的身份运行,而我们的目录有时候权限归root所有。所以访问网站会出现404

首先检查php和ngxin的用户组

代码语言:javascript
复制
ps -ef | grep php
ps -ef | grep nginx

最后修改相应目录的用户组权限

代码语言:javascript
复制
chown -R nginx:nginx /var/www/blog

然后再次重启php和nginx即可

配置PATHINFO

像Typecho一样,我们需要开启PATHINFONginx默认是不支持PATHINFO的,所以需要更改支持PATHINFO的主机的配置文件。

代码语言:javascript
复制
location ~ ^(.+\.php)(.*)$ {
        fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
        fastcgi_index  index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_split_path_info ^(.+\.php)(.*)$;
        fastcgi_param PATH_INFO $fastcgi_path_info;
        include        fastcgi_params;
    }

并配置etc/php.ini

代码语言:javascript
复制
cgi.fix_pathinfo=1

最后重启nginx和php

目前遇到的问题就这么多了,后面遇到问题在说吧!

版权属于:逍遥子大表哥

本文链接:https://cloud.tencent.com/developer/article/1925173

按照知识共享署名-非商业性使用 4.0 国际协议进行许可,转载引用文章应遵循相同协议。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 安装环境
  • 安装Nginx
  • 安装Mysql8.0
  • 安装 PHP
  • 配置文件
    • 配置php-fpm文件
    • 配置 Nginx 以处理 PHP
    • 配置网站目录用户组和权限
    • 配置PATHINFO
    相关产品与服务
    访问管理
    访问管理(Cloud Access Management,CAM)可以帮助您安全、便捷地管理对腾讯云服务和资源的访问。您可以使用CAM创建子用户、用户组和角色,并通过策略控制其访问范围。CAM支持用户和角色SSO能力,您可以根据具体管理场景针对性设置企业内用户和腾讯云的互通能力。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档