如果需要安装Nginx+MariaDB+PHP,但出于安全性考虑,又不想用市面上那些面板,或者来路不明的一键安装脚本,可以考虑完全手动安装官方原版程序,安装也比较简单,可以考虑用非root用户进行以下所有的安装过程,安装系统环境为CentOS 7.9。

安装Nginx

添加CentOS 7 EPEL库:
sudo yum install epel-release

用yum安装Nginx:
sudo yum install nginx

安装完成后,启动Nginx服务:
sudo systemctl start nginx

设置Nginx开机启动:
sudo systemctl enable nginx

可在浏览器输入 http://ip/ 查看Nginx是否成功启动,注意需要在防火墙开启端口。

安装 MariaDB

用yum安装MariaDB:
sudo yum install mariadb-server mariadb

安装完成后,启动MariaDB服务:
sudo systemctl start mariadb

运行MariaDB安全设置脚本,将设置root密码,以及删除一些不安全的默认值,根据提示进行设置即可:
sudo mysql_secure_installation

设置MariaDB开机启动:
sudo systemctl enable mariadb

安装php

安装Remi存储库:
sudo yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm

查看Remi存储库中可用的7.0以上的php版本:
yum --disablerepo="*" --enablerepo="remi-safe" list php[7-9][0-9].x86_64

如果要安装php 8.0,可先安装yum-utils,然后运行yum-config-manager:
sudo yum install yum-utils
sudo yum-config-manager --enable remi-php80

然后再运行yum安装php:
sudo yum install php php-mysqlnd php-fpm

确认是否成功安装您选择的php版本:
php --version

设置PHP配置文件

建议安装Nano编辑器:
sudo yum install nano

用Nano编辑器打开php-fpm配置文件:
sudo nano /etc/php-fpm.d/www.conf

对配置文件中的下列一些参数进行修改:

…
; RPM: apache user chosen to provide access to the same directories as httpd
user = nginx
; RPM: Keep a group allowed to write in log dir.
group = nginx
…
listen = /var/run/php-fpm/php-fpm.sock;
…
listen.owner = nginx
listen.group = nginx
listen.mode = 0660
…

重启php-fpm让配置生效:
sudo systemctl start php-fpm

设置Nginx配置文件

Nginx的默认配置文件放在:/etc/nginx/nginx.conf,但不直接改这个文件,重新在/etc/nginx/conf.d创建一个新的配置文件来定义服务器:
sudo nano /etc/nginx/conf.d/default.conf

对配置文件中的下列一些参数进行修改:

server {
    listen       80;
    server_name  server_domain_or_IP;

    root   /usr/share/nginx/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 /usr/share/nginx/html;
    }

    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

测试配置成功与否

赋予拥有sudo权限的用户Nginx根目录所有权:
sudo chown -R <user_name>.<user_group_name> /usr/share/nginx/html/

在Nginx根目录下创建info.php页面:
nano /usr/share/nginx/html/info.php

添加PHP环境信息为页面显示内容:

<?php
phpinfo();
?>

保存后,在浏览器访问http://ip/info.php,如果显示php环境信息,说明已经配置成功。

测试完成后,可删除测试页面:
sudo rm -f /usr/share/nginx/html/info.php

安装完成。


参考文献:

  1. DigitalOcean: How To Install Linux, Nginx, MySQL, PHP (LEMP) stack On CentOS 7
    https://www.digitalocean.com/community/tutorials/how-to-install-linux-nginx-mysql-php-lemp-stack-on-centos-7