如何在 Debian 10 服务器上安装 LEMP
“LEMP”堆栈是开源软件的混合物,通常安装在 Linux 服务器上以部署动态应用程序。该术语是代表 Linux 操作系统、Nginx Web 服务器、MariaDB 数据库和 PHP 编程的缩写。
另请阅读:如何在 Debian 10 服务器上安装 LAMP
尽管这个“LEMP”堆栈通常包含MySQL作为数据库管理系统,但某些Linux发行版(例如Debian) - 使用MariaDB 作为 MySQL 的直接替代品。
要求
- 如何安装 Debian 10 (Buster) 最小服务器
在本文中,我们将向您介绍如何在 Debian 10 服务器上安装和设置 LEMP 环境,并使用 MariaDB 作为数据库管理平台。
在 Debian 10 上安装 Nginx Web 服务器
Nginx 是一个开源、跨平台、轻量级但功能强大且易于配置的 HTTP 和反向代理服务器、邮件代理服务器和通用 TCP/UDP 代理服务器,具有模块化架构。
它的一些基本功能包括提供静态文件和索引文件;通过 FastCGI、uwsgi、SCGI 和 Memcached 服务器缓存、负载平衡和容错、SSL 提供加速支持和 TLS SNI 支持,支持具有加权和基于依赖关系的优先级的 HTTP/2。
要安装 Nginx 软件包,请使用 Debian 的 apt 软件包管理器,如图所示。
apt update
apt install nginx
一旦Nginx安装完成,安装程序将激活systemd暂时启动Nginx服务,并使其在系统启动时自动启动。您可以使用以下 systemctl 命令检查 Nginx 的状态。
systemctl status nginx
您还可以使用以下重要命令来启动、重新启动、停止和重新加载 systemd 下 Nginx 服务的配置。
systemctl start nginx
systemctl restart nginx
systemctl stop nginx
systemctl reload nginx
systemctl status nginx
接下来,如果您运行了 UFW 防火墙(默认情况下通常处于禁用状态),则需要打开端口 80 (HTTP) 和 443 (HTTPS) 以允许传入流量在 Nginx 上。
ufw allow 80
ufw allow 443
ufw status
此时,您需要测试Nginx是否正确安装,是否正在运行并可以提供网页服务。为此,请打开 Web 浏览器并将其指向以下 URL 以访问 Nginx Debian Default 网页。
http://SERVER_IP/
OR
http://localhost/
在 Debian 10 上安装 MariaDB
接下来,您需要安装一个数据库系统,以便能够存储和管理您的网站或网络应用程序的数据。 Debian 10 默认支持 MariaDB,作为 MySQL 的直接替代品。
要安装 MariaDB,请运行以下命令。
apt install mariadb-server
接下来,检查 MariaDB 服务状态,因为它是由 systemd 自动启动的,并且可以在系统启动时启动,为了确保它已启动并运行,请使用以下命令。
systemctl status mariadb
要管理(启动、重新启动、停止和重新加载)systemd 下的 MariaDB 服务,可以使用以下命令。
systemctl start mariadb
systemctl restart mariadb
systemctl stop mariadb
systemctl reload mariadb
接下来,MariaDB 部署默认情况下是不安全的。您需要运行软件包中附带的 shell 脚本,以提高数据库的安全性。
mysql_secure_installation
运行脚本后,它将引导您完成以下一系列问题,以修改 MariaDB 安装的默认设置,如下面的屏幕截图所示。
在 Debian 10 上安装 PHP-FPM(快速进程管理器)
与 Apache 和其他 Web 服务器不同,Nginx 不提供对 PHP 的本机支持,因为它使用 PHP-FPM处理 PHP 页面的请求。 PHP-FPM 是 PHP 的替代 FastCGI 守护进程,它允许网站通过使用工作进程处理请求来处理高负载。
要安装 PHP-FPM 版本 7.3 和 PHP 模块以与 MariaDB/MySQL 数据库系统通信,请运行以下命令。
apt install php-fpm php-mysqli
安装PHP-FPM后,安装程序将激活systemd暂时启动PHP-FPM服务,并使其在系统启动时自动启动。要检查它是否已启动并正在运行,请发出以下命令。
systemctl status php-fpm
还可以启动、重启、停止、重新加载systemd下PHP-FPM服务的配置,如下。
systemctl start php-fpm
systemctl restart php-fpm
systemctl stop php-fpm
systemctl reload php-fpm
systemctl status php-fpm
接下来,您需要通过在配置文件 /etc/php/7.3/fpm/php.ini 中进行一些更改来保护 PHP-FPM,如下所示。
vi /etc/php/7.3/fpm/php.ini
查找 ;cgi.fix_pathinfo=1
,通过删除开头的 ;
字符来取消注释,并将其值设置为 0
。这可以防止 Nginx 允许非 PHP 文件作为 PHP 执行。
cgi.fix_pathinfo=0
默认情况下,PHP-FPM 配置为侦听 UNIX soxket,/run/php/php7.3-fpm.sock,如 /etc 中定义的/php/7.3/fpm/pool.d/www.conf 配置文件。如果要处理和提供 PHP 页面,您必须将所有服务器块(或虚拟主机)配置为使用此套接字。
您可以使用Nginx默认服务器块配置文件/etc/nginx/sites-available/default来测试它。
vi /etc/nginx/sites-available/default
查找以下部分并取消注释以将 PHP 脚本传递到 FastCGI 服务器,如屏幕截图所示。
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.3-fpm.sock;
}
接下来,使用以下命令测试 Nginx 配置结构是否OK。
nginx -t
如果 Nginx 配置正常,要应用最近所做的更改,请重新启动 php7.3-fpm 和 nginx 服务,如下所示。
systemctl restart php7.2-fpm
systemctl restart nginx
在 Nginx 上测试 PHP-FPM 处理
配置PHP-FPM和Nginx协同工作后,您需要测试两个服务是否可以处理并向客户端提供PHP页面。为此,请在您的 Web DocumentRoot 中创建一个简单的 PHP 脚本,如下所示。
echo “<?php phpinfo(); ?>” | tee /var/www/html/info.php
最后,打开浏览器并输入以下地址以查看由 phpinfo()
函数生成的系统上的 PHP 配置。
http://SERVER_IP/info.php
OR
http://localhost/info.php
结论
在本文中,我们展示了如何在 Debian 10 中安装和配置 LEMP 堆栈。如果您有任何问题或反馈,请通过下面的评论表联系我们并告知我们。