在RHEL 8 / CentOS 8上安装LEMP Stack(Nginx,MariaDB,PHP7.2)

本教程将向您展示如何在RHEL 8和CentOS 8上安装LEMP堆栈。

什么是LEMP堆栈?

软件堆栈是捆绑在一起的一组软件工具。 LEMP代表Linux,Nginx(发音为X的引擎),MariaDB / MySQL和PHP,所有这些都是开源的。 它是为动态网站和Web应用程序提供动力的最常见的软件堆栈。 Linux是操作系统。 Nginx是Web服务器; MariaDB / MySQL是数据库服务器,PHP是负责生成动态网页的服务器端脚本语言。

先决条件

您可以按照以下教程下载并安装RHEL 8。

  • 如何免费下载和安装RHEL 8

如果您正在寻找VPS(虚拟专用服务器),则可以通过我的推荐链接在Vultr注册一个帐户,以获取50美元的免费信用额度,可在30天内使用。

本教程使用root帐户管理管理任务。 要切换到root用户,请运行以下命令并输入root密码。

su -

步骤1:在RHEL 8 / CentOS 8上安装Nginx Web服务器

Nginx是一种高性能的Web服务器,如今非常流行。 它也可以用作反向代理和缓存服务器。 输入此命令以安装Nginx Web服务器。

yum install nginx -y

安装完成后,我们可以使用以下命令启动Nginx:

systemctl start nginx

通过运行以下命令,使Nginx在系统启动时自动启动。

systemctl enable nginx

现在检查其状态。

systemctl status nginx

输出:

● nginx.service - The nginx HTTP and reverse proxy server
   Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled)
   Active: active (running) since Wed 2018-12-05 02:04:00 EST; 7s ago
 Main PID: 5032 (nginx)
    Tasks: 2 (limit: 11512)
   Memory: 8.4M
   CGroup: /system.slice/nginx.service
           ├─5032 nginx: master process /usr/sbin/nginx
           └─5034 nginx: worker process

已启用”表示已启用启动时自动启动,并且我们可以看到Nginx正在运行。 请注意,上面的命令在运行后不会立即退出。 您需要按“q使其退出。

检查Nginx版本。

nginx -v

输出:

nginx version: nginx/1.14.1

如果要在本地RHEL 8 / CentOS 8计算机上安装LEMP,请键入 127.0.0.1 要么 localhost 在浏览器地址栏中。 您应该看到“欢迎使用Nginx”网页,这意味着Nginx Web服务器正在正常运行。

默认情况下,RHEL 8 / CentOS 8禁止公共访问端口80。要允许其他计算机访问网页,我们需要在Firewalld(RHEL / CentOS上的动态防火墙管理器)中打开端口80。 运行以下命令以打开端口80。

firewall-cmd --permanent --zone=public --add-service=http

如果要稍后在Nginx上启用HTTPS,则还需要打开端口443。

firewall-cmd --permanent --zone=public --add-service=https

--permanent 选项将使该防火墙规则在系统重新引导后持续存在。 接下来,重新加载防火墙守护程序,以使更改生效。

systemctl reload firewalld

现在,Nginx网页可以公开访问。

最后,我们需要让用户 nginx 作为网站目录的所有者。 默认情况下,它由root用户拥有。

chown nginx:nginx /usr/share/nginx/html -R

步骤2:在RHEL 8 / CentOS 8上安装MariaDB数据库服务器

MariaDB是MySQL的直接替代品。 它是由MySQL团队的前成员开发的,他们担心Oracle可能会将MySQL变成开源产品。 输入以下命令以在RHEL 8 / CentOS 8上安装MariaDB。

yum install mariadb-server mariadb -y

安装后,我们需要启动它。

systemctl start mariadb

在系统启动时启用自动启动。

systemctl enable mariadb

检查状态:

systemctl status mariadb

输出:

● mariadb.service - MariaDB 10.3 database server
   Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; vendor preset: disable>
   Active: active (running) since Wed 2018-12-05 02:40:44 EST; 8s ago
     Docs: man:mysqld(8)
           https://mariadb.com/kb/en/library/systemd/
 Main PID: 17582 (mysqld)
   Status: "Taking your SQL requests now..."
    Tasks: 30 (limit: 11512)
   Memory: 75.2M
   CGroup: /system.slice/mariadb.service
           └─17582 /usr/libexec/mysqld --basedir=/usr

已启用”表示已启用引导时自动启动,我们可以看到MariaDB服务器正在运行。 现在我们需要运行安全脚本。

mysql_secure_installation

当要求您输入MariaDB根密码时,请按Enter键,因为尚未设置根密码。 然后输入 y 设置MariaDB服务器的根密码。

在redhat 8 centos 8上安装mariadb

接下来,您可以按Enter回答所有剩余的问题,这将删除匿名用户,禁用远程root登录并删除测试数据库。 此步骤是MariaDB数据库安全性的基本要求。 (注意,信 Y 大写,这是默认答案。)

mysql_secure_installation rhel8 centos8

现在,您可以运行以下命令并输入MariaDB根密码,以登录MariaDB Shell。

mysql -u root -p

mariadb shell登录

要退出,请运行

exit;

步骤3:在RHEL 8 / CentOS 8上安装PHP-FPM

使用以下命令安装PHP和相关模块:

yum install php php-mysqlnd php-fpm php-opcache php-gd php-xml php-mbstring -y

安装后,我们需要启动它。

systemctl start php-fpm

在系统启动时启用自动启动。

systemctl enable php-fpm

检查状态:

systemctl status php-fpm

输出:

● php-fpm.service - The PHP FastCGI Process Manager
   Loaded: loaded (/usr/lib/systemd/system/php-fpm.service; enabled; vendor preset: disable>
   Active: active (running) since Wed 2018-12-05 03:06:01 EST; 22s ago
 Main PID: 18631 (php-fpm)
   Status: "Processes active: 0, idle: 5, Requests: 0, slow: 0, Traffic: 0req/sec"
    Tasks: 6 (limit: 11512)
   Memory: 29.6M
   CGroup: /system.slice/php-fpm.service
           ├─18631 php-fpm: master process (/etc/php-fpm.conf)
           ├─18632 php-fpm: pool www

已启用”表示已启用启动时自动启动,并且我们可以看到PHP-FPM正在运行。 现在编辑PHP-FPM配置文件:

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

默认情况下,PHP-FPM作为 apache 用户。 由于我们使用的是Nginx Web服务器,因此我们需要对其进行更改。 找到以下两行。

user = apache
group = apache

更改为

user = nginx
group = nginx

在此文件中,您可以找到以下行。

listen = /run/php-fpm/www.sock

这表明PHP-FPM正在Unix套接字而不是TCP / IP套接字上侦听,这很好。 保存并关闭文件。 重新加载PHP-FPM以使更改生效。

systemctl reload php-fpm

步骤4:测试PHP

默认情况下,RHEL 8 / CentOS 8上的Nginx软件包包括PHP-FPM的配置(/etc/nginx/conf.d/php-fpm.conf/etc/nginx/default.d/php.conf)。 要使用Nginx Web服务器测试PHP-FPM,我们需要创建一个 info.php 文件根目录中的文件。

nano /usr/share/nginx/html/info.php

将以下PHP代码粘贴到文件中。

<?php phpinfo(); ?>

保存并关闭文件。 如果您在本地RHEL 8 / CentOS 8服务器上安装了LEMP堆栈,请输入 127.0.0.1/info.php 要么 localhost/info.php 在浏览器地址栏中。 您应该看到服务器的PHP信息。 这意味着PHP脚本可以在Nginx Web服务器上正常运行。

如果RHEL 8 / CentOS在远程服务器上运行,请输入 server-ip-address/info.php 在浏览器地址栏中。 更换 sever-ip-address 使用您的实际IP地址。

PHP-FPM RHEL 8 CentOS 8

如果浏览器无法显示PHP信息,但提示您下载 info.php 文件,只需重新启动Nginx和PHP-FPM。

sudo systemctl restart nginx php-fpm

然后,您应该能够在Web浏览器中查看PHP信息。

Nginx自动重启

如果由于某种原因您的Nginx进程被杀死,则需要运行以下命令来重新启动它。

sudo systemctl restart nginx

无需手动输入此命令,我们可以通过编辑Nginx使Nginx自动重启 nginx.service 系统服务单元。 要覆盖默认的systemd服务配置,我们创建一个单独的目录。

sudo mkdir -p /etc/systemd/system/nginx.service.d/

然后在此目录下创建一个文件。

sudo nano /etc/systemd/system/nginx.service.d/restart.conf

在文件中添加以下行,这将使Nginx在检测到故障后5秒钟自动重新启动。

[Service]
Restart=always
RestartSec=5s

保存并关闭文件。 然后重新加载systemd。

sudo systemctl daemon-reload

要检查是否可行,请使用以下命令杀死Nginx:

sudo pkill nginx

然后检查Nginx的状态。 您会发现Nginx自动重启。

systemctl status nginx

包起来

恭喜! 您已在Red Hat 8或CentOS 8上成功安装了Nginx,MariaDB和PHP7.2。为了服务器的安全,应删除 info.php 现在文件,以防止黑客看到它。

rm /usr/share/nginx/html/info.php

希望本教程对您有所帮助。 与往常一样,如果您发现这篇文章很有用,请订阅我们的免费新闻通讯以获取更多提示和技巧。 保重🙂

Sidebar