如果需要安装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
安装完成。
参考文献:
- 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