安装环境

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

    安装Nginx

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

    yum install epel-release

    安装Nginx

    yum install nginx

    启动 Nginx 服务

    systemctl start nginx

    开机启动

    sudo systemctl enable nginx

    安装Mysql8.0

    添加mysql库

    yum localinstall https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm

    安装mysql

    yum --enablerepo=mysql80-community install mysql-community-server

    启动mysql

    systemctl start mysqld.service

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

    grep 'A temporary password is generated for root@localhost' /var/log/mysqld.log |tail -1

    初始化数据库

    sudo mysql_secure_installation

    这里会提示输入root的密码,即上一步获得的默认密码。然后从新输入root密码,一路输Y即可。
    不知道为什么,修改后程序不能连接登录。用下面命令重新修改root密码。

    mysql -u root -p
    use mysql;
    ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'youpassword';
    systemctl restart mysqld #重启MySQL

    安装 PHP

    安装 Remi 存储库

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

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

    yum --disablerepo="*" --enablerepo="remi-safe" list php[7-9][0-9].x86_64

    你会看到这样的输出

    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为例)

    sudo yum-config-manager --enable remi-php74

    安装php

    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 侦听特定主机和端口。我们想要更改此设置,使其侦听本地套接字文件,因为这会提高服务器的整体性能。

    listen = /var/run/php-fpm/php-fpm.sock;

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

    listen.owner = nginx
    listen.group = nginx
    listen.mode = 0660

    最后重启php-fpm

    systemctl start php-fpm

    配置 Nginx 以处理 PHP

    目前的配置是无法访问php文件,我们还需要简单的配置下。
    Nginx 有一个专用目录,我们可以在其中使用服务器块将每个托管网站定义为单独的配置文件。这类似于 Apache 的虚拟主机。
    在默认安装中,此目录为空。我们将创建一个新文件作为此服务器上的默认 PHP 网站,它将覆盖/etc/nginx/nginx.conf文件中定义的默认服务器块。
    /etc/nginx/conf.d目录中打开一个新文件

    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 以应用更改:

    sudo systemctl restart nginx

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

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

    ps -ef | grep php
    ps -ef | grep nginx

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

    chown -R nginx:nginx /var/www/blog

    然后再次重启php和nginx即可

    配置PATHINFO

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

    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

    cgi.fix_pathinfo=1

    最后重启nginx和php
    目前遇到的问题就这么多了,后面遇到问题在说吧!

最后修改:2023 年 08 月 04 日
如果觉得我的文章对你有用,请随意赞赏